Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda juego de disparos(modo novato)

Iniciado por ytinU, Enero 13, 2017, 07:25:13 PM

Tema anterior - Siguiente tema
Tengo un problema y es que estoy haciendo un juego de disparos y quiero hacerlo online(pero aún no sé :C), ya hice que dispare, hice que cada vez que se pulse el boton de Fire1 dispare un rayo desde la camara hasta donde apunto, pero mi duda es la siguiente: como será en el futuro un juego de disparos online solo tengo que crear un solo FPSController?, el online los instancia cuando se conectan?,dicho instanciamiento copia exactamente los scripts acoplados a mi FirstPerosnController?, y esta es mi duda más grande mi juego será solo disparando rayos  así que supongo que en el futuro pondré en el Update que detecte cuando un rayo le de a mí personaje, como hago para que detecte los rayos de otros?
 
No necesariamente tiene que ser así, si pueden darme algunas ideas de como hacerlo a su modo, seria un puntaso.
 
 

Has conseguido lo fácil jajajaja, pues así de memoria... El rayo que lanza... Debería tener algún tipo de "colisión" ya sea por proyectil o por raycast (rayo invisible) y esta misma colisión es la que mandará al objeto al que colisione la información del daño. Algo así como objetivo.dañar(int daño) dentro del raycast o del evento oncollision del proyectil... Cada disparo debe tener información del emisor (nombre, equipo, daño, etc) hacer un shooter online es una locura... 
 
Creo que lo he aclarado todo... Si tienes alguna duda más ya sabes ;)

Cita de: edgar_94_ date=1484334268Has conseguido lo fácil jajajaja, pues así de memoria... El rayo que lanza... Debería tener algún tipo de "colisión" ya sea por proyectil o por raycast (rayo invisible) y esta misma colisión es la que mandará al objeto al que colisione la información del daño. Algo así como objetivo.dañar(int daño) dentro del raycast o del evento oncollision del proyectil... Cada disparo debe tener información del emisor (nombre, equipo, daño, etc) hacer un shooter online es una locura... 
   
   
      Creo que lo he aclarado todo... Si tienes alguna duda más ya sabes ;)
   


Si,Te explico cree mis eventos daño y recibir daño y a estos les quiero agregar un tipo de respuesta, osea que cuando el rayo que lanzo choque con un enemigo  el enemigo le redusca el daño, a simple vista lo puedo hacer poniendo un perosnaje:
 
-sin rayo al colisionar con la bala en el oncollisionenter
 
-con el rayo en la con Physic.raycast y le digo si el layer es enemigo
 
Pero mi duda es la sgt:como será un online  quiero saber como debo poner un metodo que me sepa cuando un rayo me toca.
 
Gracias por responder.
 
 
 
 

Para el online, los casos que yo he visto... Cada jugador tiene una escena cliente con modelos de cada jugador simulando todos los transforms y todos los componentes... Cuando la bala busque el sistema de daño, si existe, reducirá vida... Es decir, sin no es persona, puedes añadirle un sistema de vida a objetos del juego, para bajarle la vida y rom***, explotar,etc... Y con los jugadores que haya en pantalla igual... Quiero decir, cada jugador debe tener un sistema de vida... No se si me he explicado... Es como mejor lo puedo explicar desde el móvil y de memoria ^^'
 
Si no me he sabido explicar, mañana te lo puedo explicar mejor desde el pc con código y tal ;)

Wow con que funciona así(no entendi :C)....yo pensaba que al copiar sus componentes debia ponerle al mismo jugador un sistema de vida como dices(eso creo), uno que me baje la vida--por eso pedia como podia detectar los rayos de otros jugadores--otro para dañar al objetivo--esa era mi sgt duda xD(como pasarle los parametros al receptor de mi rayo)--.
 
Te agradeceria si me explicarás en mi lenguaje(es el novato).
 
 

Te lo he explicado de la forma mas simple posible, luego tienes que crear una lógica de transmisión de datos con el servidor... Cada acción que tome un jugador se la tiene que comunicar al server y el server autorizarlo y tal... Es un jaleo... Deberías verte algún tutorial del nuevo sistema multijugador de Unity... Ya que no he tenido la posibilidad de verlo en profundidad, pero cambiaba mucho la teoría ;)

Casi todos los juegos online se programan de la misma forma: Los clientes y el servidor envían/reciben un mínimo de datos lo más pequeños y frecuentes posibles, y luego cada uno por separado se hace responsable de interpretar esos datos y realizar la acciones que correspondan. La parte del "juego" y la de "comunicación" está muy diferenciada y optimizada lo máximo posible, para reducir latencias...

Enero 14, 2017, 02:09:58 AM #7 Ultima modificación: Enero 14, 2017, 02:12:35 AM por ytinU
Cita de: edgar_94_ date=1484347119Te lo he explicado de la forma mas simple posible, luego tienes que crear una lógica de transmisión de datos con el servidor... Cada acción que tome un jugador se la tiene que comunicar al server y el server autorizarlo y tal... Es un jaleo... Deberías verte algún tutorial del nuevo sistema multijugador de Unity... Ya que no he tenido la posibilidad de verlo en profundidad, pero cambiaba mucho la teoría ;)
   


Lo más probable es que me equivoque pero lo que se transmite al servidor son los objetos los scripts son adjuntados a este, dudo que se le ponga
 
[Command]
 
Cmd--namescript--  xD
 
claro en localhost, no quiero unirlo a SQL Server(no sé si se podra desde unity :C)..Pero ahora mi duda principal es como detecto por ejem:un bot que me apunte y dispare lanze un rayo, y como lo detecto en un metodo?
 
 
 
Cita de: pioj date=1484352073Casi todos los juegos online se programan de la misma forma: Los clientes y el servidor envían/reciben un mínimo de datos lo más pequeños y frecuentes posibles, y luego cada uno por separado se hace responsable de interpretar esos datos y realizar la acciones que correspondan. La parte del "juego" y la de "comunicación" está muy diferenciada y optimizada lo máximo posible, para reducir latencias...
   


Disculpa mi ignorancia pero supongamos en un juego donde se utilizen casi todos los objetos de un mapa, el servidor y los clientes tienen que procesar esos datos para interactuar con ellos, entonces de que manera se podria optimizar algo así?

yo empezaría por hacer un Pong online a ver cómo va el asunto...

Cita de: musaranya date=1484391612yo empezaría por hacer un Pong online a ver cómo va el asunto...
   


Yo hice un pong, supongo que para hacerlo online debo ponerle el prefab de la plataforma en el networking manager y ponerle identity y transform network y el [Command] y Cmd en el metodo de spawing de la pelotita--supongo--, además yo queria hacerlo con rayos y no balas por el tema de que YO pienso de que es un poco más óptimo ya que si son 20 players en vez de diparar simultaneamente unos 100 objetos solo disparas rayos eso creo yo, no sé si es verdad por poco que fuera, lo digo porque en un futuro no quiero cambiar muho el código por el tema de 'rendimiento'.

Cita de: ytinU date=1484356198Disculpa mi ignorancia pero supongamos en un juego donde se utilizen casi todos los objetos de un mapa, el servidor y los clientes tienen que procesar esos datos para interactuar con ellos, entonces de que manera se podria optimizar algo así?
   


Pues exactamente de la misma forma que te he explicado antes. Los clientes no mandan ni reciben todos a la vez, el servidor prioriza en colas de espera, según factores del juego. Todo se puede catalogar, organizar y optimizar siempre. Sólo depende del tiempo que se dedique al desarrollo.
 
Ademas, los videojuegos hacen uso de "la magia": En realidad, se falsean muchas más cosas de las que crees. ¿8.000 jugadores en una partida MMO? El cliente sólo mostrará los 50-100 más cercanos, descuida...
 
Lo siento, pero tus preguntas son muy ambiguas y no concretas nada, así que no me es posible darte ningún ejemplo exacto de lo que quieres saber...

Cita de: pioj date=1484396467Ademas, los videojuegos hacen uso de "la magia": En realidad, se falsean muchas más cosas de las que crees. ¿8.000 jugadores en una partida MMO? El cliente sólo mostrará los 50-100 más cercanos, descuida...
   


No tenia idea de que funcionara así, ya me parecia raro de que no tengan lag xD, entonces no debo preocuparme mucho de que mi juego sea algo robusto.
 
Cita de: pioj date=1484396467Lo siento, pero tus preguntas son muy ambiguas y no concretas nada, así que no me es posible darte ningún ejemplo exacto de lo que quieres saber...
   


El ejemplo de los 8000 jugadores aclaró muchas de mis dudas, pero surgió otra duda..No sé como se organiza un juego online, me refiero al tema de los servidores, no sé explicarme así que daré un ejemplo:
 
-Un juego online el más básico es que tu seas algo como tu propio servidor, lo cual indica que alguien que no este conectado a tu misma red no podrá acceder, si yo rento un servidor este podrá ser como una red global?, donde podrán acceder los que no esten en mi red dentro del rango del servidor rentado?.

Cita de: ytinU date=1484410751No tenia idea de que funcionara así, ya me parecia raro de que no tengan lag xD, entonces no debo preocuparme mucho de que mi juego sea algo robusto.
   
   
      El ejemplo de los 8000 jugadores aclaró muchas de mis dudas, pero surgió otra duda..No sé como se organiza un juego online, me refiero al tema de los servidores, no sé explicarme así que daré un ejemplo:
   
   
      -Un juego online el más básico es que tu seas algo como tu propio servidor, lo cual indica que alguien que no este conectado a tu misma red no podrá acceder, si yo rento un servidor este podrá ser como una red global?, donde podrán acceder los que no esten en mi red dentro del rango del servidor rentado?.
   


Te contesto la parte del servidor que es lo que domino un poco más. Si rentas un servidor, hazlo con una IP fija pública. De ese modo será accesible desde todo internet.

Cita de: Tizon date=1484416454Te contesto la parte del servidor que es lo que domino un poco más. Si rentas un servidor, hazlo con una IP fija pública. De ese modo será accesible desde todo internet.
   


Gracias, entonces de ese modo podré ver las salas que se creen y podre hacer un sistema para que se vean las salas?
 
Algo así quiero que sea,por eso deseo saber si las preguntas van bien encaminadas.

Enero 14, 2017, 08:23:27 PM #14 Ultima modificación: Enero 14, 2017, 08:24:08 PM por Tizon
Cita de: ytinU date=1484417508Gracias, entonces de ese modo podré ver las salas que se creen y podre hacer un sistema para que se vean las salas?
   
      Algo así quiero que sea,por eso deseo saber si las preguntas van bien encaminadas.
   


No lo que te estoy diciendo es lo que necesitas para que sea accesible desde el mundo mundial. Lo que configures o lo que haga el software que programes es otra cosa. Con una Ip fija pública cualquier usuario podrá acceder si por ejemplo registras esta ip en el software cliente, te permitirá que pueda conectar cualquier dispositivo con internet. Luego ya si quieres rizar el rizo, puedes comprar un dominio (tipo www,midominio,com) y así los clientes podrían acceder por DNS, y en caso de cambio de la IP no necesitarás actualizar todos los clientes, sólo el registro DNS.

Etiquetas: