Que bueno esto! Espero se unan muchos, a mi me queda un poco lejos sino iria sin dudas!
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
#392
General (Antiguo) / Mysql Delay al conectar
Noviembre 24, 2017, 12:43:07 PM
Tendrias que crear un "auxiliar" para la base de datos, y simplemente abrir y cerrarla -
Para abrir y cerrar la conexión no existe esfuerzo, para establecer la conexión si porque debe verificar muchas mas cosas que simplemente abrir o cerrar la conexión.
Otra solución es utilizar un Thread diferente y utilizar la función Update para un trabajo en quote, es mas complicado pero podria ser ampliamente más optimo y seguro, principalmente para las consultas con ROLLBACK si es que tu aplicación lo requiere, por ultimo para un mayor velocidad podrías utilizar procedimientos almacenados -
Suerte!
public static class DataBase
{
public static SqlConnection Connection {get; private set; }
public static void Initialize()
{
Connection = new SqlConnection(connectionstring);
}
public static void Open(){ Connection.Open(); }
public static void Close(){ Connection.Close(); }
}
Para abrir y cerrar la conexión no existe esfuerzo, para establecer la conexión si porque debe verificar muchas mas cosas que simplemente abrir o cerrar la conexión.
Otra solución es utilizar un Thread diferente y utilizar la función Update para un trabajo en quote, es mas complicado pero podria ser ampliamente más optimo y seguro, principalmente para las consultas con ROLLBACK si es que tu aplicación lo requiere, por ultimo para un mayor velocidad podrías utilizar procedimientos almacenados -
Suerte!
#393
General (Antiguo) / problemas con online
Noviembre 24, 2017, 01:49:08 AMCita de: zopas tv date=1511447436entonces ese es el codigo correcto?
Desconozco la lógica del juego, pero realiza lo mismo que tu codigo, lo unico que de una manera mas optima.
PD: Lo escribí desde el foro, desconozco si existe un error -
#394
General (Antiguo) / Borrado de componentes antes de instanciarlos
Noviembre 23, 2017, 12:36:46 PM
No entiendo por que tendrias que usar un Prefabs con y sin NetworkIdentity, si tu problema se debe a que el juego requiere una copia local te recomiendo que hagas un nuevo prefab y elimines los componentes que no requieren.
#395
General (Antiguo) / problemas con online
Noviembre 22, 2017, 04:27:05 PM
Fijate que estás aplicando al eje Z el axis vertical, por lo que está mal.
Por el código te recomiendo que aprendas a programar y a leer en la Documentación de Unity como funcionan las cosas, mira tutoriales en YT existe muchísima información.
Para resolver el problema
Por el código te recomiendo que aprendas a programar y a leer en la Documentación de Unity como funcionan las cosas, mira tutoriales en YT existe muchísima información.
Para resolver el problema
private Vector3 axis = Vector3.zero;
private void Update()
{
axis.x = Input.GetAxis("Horizontal");
axis.z = Input.GetAxis("Vertical");
axis = transform.TransformDirection(axis);
axis.Normalize();
transform.Translate(axis * 10 * Time.deltaTime);
axis.x = axis.z = 0;
}
#396
General (Antiguo) / problemas con online
Noviembre 22, 2017, 02:26:45 PMCita de: zopas tv date=1511351287una cosilla porfavor respondanmela:
es que tendo 2 spawns el el juego y uno mira al lado opuesto que el otro (tipo rocket leage) pero el coche siempre va a moverse hacia delante y yo quiero que se mueva con respecto a donde mira.
no se si me entienden pero si no es asi ayudarme porfavor
Por el problema creería que estás utilizando Rigidbody y no WheelCollider, para solucionar este problema deberias de aplicar la fuerza en el eje Z relativo a la rotación, para facilitar este calculo, en el Transform tenes una propiedad llamada forward que hace el trabajo de sacar la dirección en base a la rotación.
Para entender las direcciones no es muy complicado, tienes que estudiar si aun no lo sabes sobre vectores. Link - Estudio
para solucionar puntualmente el problema deberias compartir el código.
#397
General (Antiguo) / 2 opciones del animation
Noviembre 21, 2017, 06:16:05 PM
Primero te recomiendo un cacheo de Animation o una referencia por el editor.
¡Aunque creería que es por nombre de Clip!
De ser asi podrias crear un arreglo para tratar los clips.
public class Mono : MonoBehaviour
{
[SerializeField]
private Animation _anim;
public void PlayAnimationWithElement(int index)
{
_anim.Play(string.format("Element {0}", index));
}
}
¡Aunque creería que es por nombre de Clip!
De ser asi podrias crear un arreglo para tratar los clips.
#398
General (Antiguo) / problemas con online
Noviembre 21, 2017, 04:38:10 PM
Eso nunca va a funcionar NetworkBehaviour no hace magia, tenes que aprender primero a diseñar tu juego de forma local luego intenta el networking -
Te paso a explicar -
Si por ejemplo tu juego es de fútbol entonces el balón y los jugadores son administrados por el servidor, en particular estos juegos tienen un nivel de sincronización muy complejo para que ambos clientes se sientan comodos
Si tu juego va a ser de máximo dos jugadores entonces tenes 2 capas Servidor y Cliente, en el servidor se aloja toda la lógica del juego y los atributos, por ejemplo para patear la pelota -
Cuando el servidor recibe este comando hace que X jugador patee el balón tienen el el control absoluto del juego.
Por eso este script está mal, en principio se ejecuta de manera normal, tendría que ver como esta configurado el NetworkIdentity, pero de ninguna manera funcionaria .
UNET no es un sistema para armar juegos multijugador como si fuera mágico, simplemente nos facilita el intercambio de paquetes y nos brinda servicios como Relay, Server, migration... etc, pero lógicamente todo esto es un mundo muy avanzado, tu limite no tendría que ser el lenguaje de programación.
Haz los tutoriales de UNET y aprende C# con mas calma y pronto podras hacer lo que te propongas.
Te paso a explicar -
Si por ejemplo tu juego es de fútbol entonces el balón y los jugadores son administrados por el servidor, en particular estos juegos tienen un nivel de sincronización muy complejo para que ambos clientes se sientan comodos
Si tu juego va a ser de máximo dos jugadores entonces tenes 2 capas Servidor y Cliente, en el servidor se aloja toda la lógica del juego y los atributos, por ejemplo para patear la pelota -
Network.sendCommand("shot_ball");
Cuando el servidor recibe este comando hace que X jugador patee el balón tienen el el control absoluto del juego.
Por eso este script está mal, en principio se ejecuta de manera normal, tendría que ver como esta configurado el NetworkIdentity, pero de ninguna manera funcionaria .
UNET no es un sistema para armar juegos multijugador como si fuera mágico, simplemente nos facilita el intercambio de paquetes y nos brinda servicios como Relay, Server, migration... etc, pero lógicamente todo esto es un mundo muy avanzado, tu limite no tendría que ser el lenguaje de programación.
Haz los tutoriales de UNET y aprende C# con mas calma y pronto podras hacer lo que te propongas.
#399
General (Antiguo) / Unión de arrays
Noviembre 21, 2017, 01:42:00 PM
Esto de la optimización va más allá de una simple comparación de tipos -
@gZone Esto es un fallo de normalización -
Ahi si podrias utilizar array --
@gZone Esto es un fallo de normalización -
public class ajustaCamara : MonoBehaviour
{
public Vector2 sCala;
public Vector2 res = new Vector2(1920f, 1080f);
public Text telemetria;
public Image raw1;
public Image raw2;
public Image raw3;
public Image raw4;
public Image lraw1;
public Image lraw2;
public Image lraw3;
public Image lraw4;
private bool sraw;
private float timer;
private Camera cam;
private float px;
private float py;
private bool stelemetria;
...
Ahi si podrias utilizar array --
#400
General (Antiguo) / TileMap Editor (2017.2)
Noviembre 20, 2017, 02:14:00 AM
pathback vendría a ser un sistema de path por nodos -- Por logica este no toma decisiones, si hay algo en el camino pasa lo que tendria que pasar, lo choca y en su defecto si existe fisica va a ver un bug ..
El sistema de Pathfinder quedo maso --
No me convencen los tiempos --
Lo busco y te lo paso por MP
El sistema de Pathfinder quedo maso --
No me convencen los tiempos --
Lo busco y te lo paso por MP
#401
General (Antiguo) / TileMap Editor (2017.2)
Noviembre 19, 2017, 11:01:43 PMCita de: lightbug date=1511126154Yo también lo empecé a usar y a pesar de que para mis tipos de escenarios va de 10, todavía tiene "cositas" y algunos bugs de renderizado. Ni hablar si llegás a eliminar un block de la paleta! tuve que tirar a la basura el tilemap entero.
Hace un tiempito me hice un tileeditor justamente por lo que mencionás de los prefabs (sacando lo obvio, unity no traía uno), lo comencé con el 3D en mente pero luego lo pasé al 2D. En el mío por ejemplo podés separar los mismos tiles por "capas" (propias del Tilemap o las de Unity), darle distintas profundidades y colores, sin necesidad de hacer lo que hace el tilemap de Unity, sin crear otros tilemap, ni brushes, ni grids, ni guardar "blocks" como assets, el tema de los colores podés aplicarlo a todos los tiles en forma global o a cada capa, así poder disfrazar un poco la iluminación. Todo esto usando como base un scriptable object (a un "perfil de tilemap" si se quiere), osea que cambias el SCO y te cambia la estética de todo el tilemap. Eso sí, le tengo que meter la herramienta del pincel rectangular, se acelera mucho con eso, la del bote de pintura también es muy buena.
Yo hace un tiempo tuve que desarrollar algo parecido para un juego -
Tengo la herramienta y pensaba en pulirla para poder compartirla, tiene muchas cosas interesantes como pathfinder/pathback y esta bastante bueno, hice algo parecido a lo que comentas pero para un cambio de epoca - Por ejemplo podes estar jugando un nivel de dia y luego se hace de noche, o pasas de otoño a invierno sin cargar el mapa - eso requeria el proyecto anteriormente
He probado el TileMap de Unity pero aun le falta mucho para ser un herramienta aceptable -
#402
General (Antiguo) / Unión de arrays
Noviembre 18, 2017, 01:01:39 AM
¿gZone como estas haciendo estas prueba?
Porque una cosa es inicializar un arreglo de 2000 objetos y luego asignar, estás recorriendo un arreglo no creando.
Las listas son mucho más óptimas, debido a que es menos costoso insertar un dato debido a que no tienes que recorrer todo o parte del arreglo para asignar un dato, por ejemplo si tienes 20 ítems y necesitas borrar 1 ¿Como lo haces?, ¿Como verificar cuantos items tenes? cada una de las acciones tiene un costo de n(X) por lo cual veo un poco más efectiva las listas.
Intenta hacer lo siguiente -
Debería de cambiar un poco la historia.
si no importa el orden de los ítems lo mejor es utilizar Stacks son mucho más rápidos.
Y si queres ir a algo muchisimo mas rapido utilizar unsafe en C# para la omisión de tipos.
Sigo pensando que las listas es una opción muy buena siempre y cuando el arreglo se modifique, de lo contrario un simple Array es perfecto.
Porque una cosa es inicializar un arreglo de 2000 objetos y luego asignar, estás recorriendo un arreglo no creando.
Las listas son mucho más óptimas, debido a que es menos costoso insertar un dato debido a que no tienes que recorrer todo o parte del arreglo para asignar un dato, por ejemplo si tienes 20 ítems y necesitas borrar 1 ¿Como lo haces?, ¿Como verificar cuantos items tenes? cada una de las acciones tiene un costo de n(X) por lo cual veo un poco más efectiva las listas.
Intenta hacer lo siguiente -
List<GameObject> obj = new List<GameObject>(50000);
Debería de cambiar un poco la historia.
si no importa el orden de los ítems lo mejor es utilizar Stacks son mucho más rápidos.
Y si queres ir a algo muchisimo mas rapido utilizar unsafe en C# para la omisión de tipos.
unsafe
{
fixed (GameObject* item = array)
{
*item = new GameObject();
}
}
Sigo pensando que las listas es una opción muy buena siempre y cuando el arreglo se modifique, de lo contrario un simple Array es perfecto.
#403
General (Antiguo) / problemas con online
Noviembre 16, 2017, 03:36:48 PM
En el ejemplo ya esta como sincronizar los Inputs.
Si vas a jugar en Modo Online el vehiculo es controlado por PlayerNetwork - Si vas a jugar en modo local creas un controlador nuevo
Si vas a jugar en Modo Online el vehiculo es controlado por PlayerNetwork - Si vas a jugar en modo local creas un controlador nuevo
#404
General (Antiguo) / problemas con online
Noviembre 15, 2017, 09:06:02 PM
Primero programa todo el juego de manera "OFFLINE" -
Trata de que cada controlador se dependiente del superior, por ejemplo si en tu GamePlay con la Tecla W aceleras entonces haz en tu controlador de vehiculo una funcion Acelerar, y otra para doblar, o incluso unir y hacer una sola función, pero supongamos que hiciste todo separado.
Ahora para que esto trabaje de manera "Online" deberias sincronizar los inputs de todos los jugadores más la posición del auto. Para una predicción mucha más precisa podrias sincronizar dirección y velocidad.
De esta manera podrias hacerlo, logicamente falta muchisimo para que funcione pero esa es la idea principal.
Trata de que cada controlador se dependiente del superior, por ejemplo si en tu GamePlay con la Tecla W aceleras entonces haz en tu controlador de vehiculo una funcion Acelerar, y otra para doblar, o incluso unir y hacer una sola función, pero supongamos que hiciste todo separado.
public class VehicleController : MonoBehaviour
{
public void Acelerate(float value){}
public void Brake(){}
public void HandBrake(){}
public void Turn(float angle){}
}
Ahora para que esto trabaje de manera "Online" deberias sincronizar los inputs de todos los jugadores más la posición del auto. Para una predicción mucha más precisa podrias sincronizar dirección y velocidad.
public class PlayerNetwork : NetworkBehaviour
{
public VehicleController Controller;
private void Update()
{
if(islocal)
UpdateInput();
}
private void UpdateInput()
{
float dir = Inpt....
float aceleration ...
Controller.Acelerate(aceleration);
Controller.Turn(dir);
Cmd_SendIn***ndPosition(dir, aceleration, Controller.transform.position, Controller.trasnform.rotation);
}
[Command]
private void Cmd_SendIn***ndPosition(float dir, float aceleration ...)
{
Rpc_ReceiverIn***ndPosition(dir, aceleration);
}
[ClientRPC]
private void Rpc_ReceiverIn***ndPosition(float dir, float aceleration ...)
{
Controller.Acelerate(aceleration);
Controller.Turn(dir);
}
}
De esta manera podrias hacerlo, logicamente falta muchisimo para que funcione pero esa es la idea principal.
#405
General (Antiguo) / problemas con online
Noviembre 15, 2017, 08:18:18 PM
Te recomiendo que primero leas la documentación de UNET.
En principio tu error está en pensar el cliente como si fuera un híbrido entre un server y cliente cuando no lo es, NetworkManager requiere del prefab de "Player", por recomendación te sugiero que en este caso sea un "Controlador del jugador"..
La abstracción para el Multiplayer seria -
El juego debe funcionar en modo local en un 100% todas las mecánicas, físicas, etc. aunque el GamePlay se vea afectado por un factor externo en este caso producido por el servidor, en el cliente tienes que tener una forma de "Simularlo".
El juego tiene que funcionar perfecto sin estar en multijugador, luego para el multijugador solo tienes que sincronizar Inputs, posiciones y tiempo, con estos 3 valores tienes que inventar tu propio sistema de interpolación para que los escenario de diferentes clientes se vean similares.
En principio tu error está en pensar el cliente como si fuera un híbrido entre un server y cliente cuando no lo es, NetworkManager requiere del prefab de "Player", por recomendación te sugiero que en este caso sea un "Controlador del jugador"..
La abstracción para el Multiplayer seria -
El juego debe funcionar en modo local en un 100% todas las mecánicas, físicas, etc. aunque el GamePlay se vea afectado por un factor externo en este caso producido por el servidor, en el cliente tienes que tener una forma de "Simularlo".
El juego tiene que funcionar perfecto sin estar en multijugador, luego para el multijugador solo tienes que sincronizar Inputs, posiciones y tiempo, con estos 3 valores tienes que inventar tu propio sistema de interpolación para que los escenario de diferentes clientes se vean similares.