jueves, 20 de julio de 2023

Ultimos scripts en C# y comentarios e ideas sobre administrar la memoria en los juegos y que funcionen con fluidez;


https://youtu.be/7k8F-RYCMK4 

Optimizar el juego es la palabra clave, los recursos de memoria del pc para que el juego funcione fluido.....

4... factores clave a estudiar y practicar....que casi resuelven el asunto.....

1--Programar con C# de forma que la memoria se carge y se descarge de forma inteligente con enemigos y otros factores secundarios......

2--Utilizar el sistema de LOD de forma inteligente.

3--Occlusion de camara.

4--Texturas cuadradas para los elementos del juego. 

Estos temas seran comentados en el futuro en este blog por ser fundamentales........

 

 VIDEOS EN YOUTUBE DE GENTE QUE SABEN MAS DE ESTOS TEMAS VALE LA PENA MIRAR


como se hace lod LOD en unity
https://youtu.be/jQC2rFJO67E
https://youtu.be/CT-KpzF9dh8

COMO SE HACE OCLUSION COLLIN
https://youtu.be/C0qqC650mQY
https://youtu.be/bUbypCBgAf4
https://youtu.be/bUbypCBgAf4
https://youtu.be/18KMqxJlhmw
https://youtu.be/0lp8KxvkNww

OPTIMIZAR TEXTURAS
https://youtu.be/PvU6IjyiOMc

https://youtu.be/AZLdsIG5ypk

HORNEADO EN UNITY
https://youtu.be/L_e4FTUdQsI
https://youtu.be/L_e4FTUdQsI



 

 

 


 https://youtu.be/qQaKrP16ZMI

 

 script en C# para creacion de enemigos cuando se pasa por un en empty GameObject con un Box Collider con el Trigger activado...


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ACTIVA6ENEMIGOS : MonoBehaviour
{
   


    public GameObject texto;

    public GameObject texto1;
    public GameObject texto2;
    public GameObject texto3;
    public GameObject texto4;
    public GameObject texto5;
    private void OnTriggerEnter(Collider other)
    {
        //  if (other.tag == "uno")
        // {

        if (other.tag == "bobo")
        {


            texto.SetActive(true);
            texto1.SetActive(true);
            texto2.SetActive(true);
            texto3.SetActive(true);

            texto4.SetActive(true);
            texto5.SetActive(true);


        }
    }
}


---------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------

En el script aparecen 6 enemigos cuando el player pasa por el GameObject, no consigo encontrar por internet scripts sencillos para aprender a programar, en este de aqui, cualquier persona con poca idea lograra, fijandose un poco, no solo poner 6 enemigos sino los que le vengan en gana una docena si quiere o 100 si sabe administrar la memoria.....un comentario que quiero poner es que para que los enemigos no se junten todos y se pongan uno encima del otro cuando persiguen al player hay que cambiar el......Radius...Obstacle Ovidance...del Nav Mesh Agent........a 5.75 ya hace una vase amplia para que no se pegen unos a otros y esten los 6 en el mismo sitio y solo se vea uno en el juego....

Cuando son derribados por el player el gameobject que los sustituye a de ser destruido con un......

----------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


namespace UnityStandardAssets.Utility
{
    public class TimedObjectDestructorr : MonoBehaviour
    {
        [SerializeField] private float m_TimeOut = 1.0f;
        [SerializeField] private bool m_DetachChildren = false;


        private void Awake()
        {
            Invoke("DestroyNow", m_TimeOut);
        }


        private void DestroyNow()
        {
            if (m_DetachChildren)
            {
                transform.DetachChildren();
            }
            DestroyObject(gameObject);
        }
    }
}

------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------

se pone un tiempo y el personaje con una animacion de abatido al final se borra de pantalla...y se libera memoria.......



Otros escripts que e conseguido hacer y entender........

---------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class correralapretare : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {




        if (Input.GetKey(KeyCode.E))////funciona contantemente al apretar W mayusculas a de ser
                                    //if (Input.GetKeyDown(KeyCode.W))// funciona pasito a pasito
                                    //if(Input.GetKey(KeyCode.UpArrow))
            transform.Translate(0,0,4.0f * Time.deltaTime);





    }
}

--------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------


El player cuando aprieto la tecla "E" se desplaza hacia delante, y al juntarse este script con el de las animaciones y otros movimientos consigo tambien cambiar la animacion de andar por la de correr........



El script anterior sobre creaccion de enmigos tiene docenas de aplicaciones y combinaciones posibles que aun estoy estudiando y practicando y si se utilizan con ingenio ,,,pueden equilibrar el tema de memoria y fluidez del juego,,,,, tambien estoy estudiando y practicando sobre el tema LOD de la camara y el renderizado de los gameobjects y sus poligonos, a mas poligonos mas memoria y menos fluidez a menos poligonos menos memoria fuerza el pc y mas fluidez en los juegos,,,,,,,

En internet hay videos sobre el tema y trabajandolo con blender , combinandolo con unity,,,,,se consigue que la camara aga mas o menos el trabajo de cargar memoria y descargarla en funcion de cuando nos hacercamos en el juego algun objetivo construccion paisaje personaje o lo que se tercie.....