Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Alex en Mayo 21, 2018, 03:06:35 AM

Título: Como hacer que un jugador sea el cliente y al mismo tiempo servidor
Publicado por: Alex en Mayo 21, 2018, 03:06:35 AM
Buenas! Estaba buscando como hacer que un jugador cree una sala multijugador y se aloje esa misma sala en su pc y que otros puedan entrar, básicamente como el de unity networking pero lo que proporciona sus scripts no se adapta a mi juego y quería preguntarles a ustedes si alguien sabe donde puedo encontrar esa información sin tener que usar páginas externas como MySQL o algún otro que sirva para lo mismo, (ya use el de unity pero sus servidores son de alguna forma "limitados") quiero hacer mediante scripts que todos los datos que se generen en el servidor creado por el jugador pase a mi pc (algo como una conexión entre servidores, ejemplo: el jugador gana una partida y esa información pasa a mi pc y se añade como un marcador en su nombre) si no entienden algo de lo que digo, preguntenme y se lo aclaro.
Título: Como hacer que un jugador sea el cliente y al mismo tiempo servidor
Publicado por: juanma_teso en Mayo 22, 2018, 03:46:10 PM
Hola! No sé si sabes cómo funciona internet, de manera simple son como direcciones a ordenadores, el problema es que la dirección que tenemos en casa por lo general suele cambiar, por eso es necesario tener o un servidor contratado para que el jugador se conecte, registre su sala y otros jugadores lo encuentren (este es el servicio que da Unity y otros), o bien montar tú tu propio servidor (hablar con tu ISP y pedir una IP fija) y tenerlo siempre encendido.
 
De cualquier manera necesitas un servidor donde poder registrar la dirección del jugador que crea sala, porque de otra manera el jugador que busca sala no encontrará la dirección del jugador que crea sala. Una vez hecha esta conexión puedes hacer lo que quieres (descargar los datos del jugador-servidor), pero lo primero es crear la conexión.
Título: Como hacer que un jugador sea el cliente y al mismo tiempo servidor
Publicado por: francoe1 en Mayo 22, 2018, 04:31:59 PM
Cita de: juanma_teso date=1526996770Hola! No sé si sabes cómo funciona internet, de manera simple son como direcciones a ordenadores, el problema es que la dirección que tenemos en casa por lo general suele cambiar, por eso es necesario tener o un servidor contratado para que el jugador se conecte, registre su sala y otros jugadores lo encuentren (este es el servicio que da Unity y otros), o bien montar tú tu propio servidor (hablar con tu ISP y pedir una IP fija) y tenerlo siempre encendido.
   
   
      De cualquier manera necesitas un servidor donde poder registrar la dirección del jugador que crea sala, porque de otra manera el jugador que busca sala no encontrará la dirección del jugador que crea sala. Una vez hecha esta conexión puedes hacer lo que quieres (descargar los datos del jugador-servidor), pero lo primero es crear la conexión.
   


La respuesta está en 50% acertada, en principio llamemos IP ESTÁTICA a lo que muchos llaman IP FIJA, para que 2 equipos o más se puedan conectar necesitan obligadamente tener una conexión física, esto se lo puede aplicar en casa, cuando tenemos conectado dos equipos al mismo ROUTER. En el apartado de networking te vas a encontrar con muchos más problemas que solo programar, es más, puedes lograr una librería decente basada en TCP en pocas horas, pero al momento de que "ESTO" funcione en producción lo veo un poco complejo, en primer lugar antes de aprender SOCKET's deberias saber que es NAT, FIREWALL, PROXY, las llamadas CAPAS, protocolos como segmentación, datagramas, etc.
 
Por lo que veo muy dificil que una persona sin conocimientos en lo que respecta "NETWORKING" a  nivel FÍSICO pueda lograr algo decente, te recomiendo aprender cosas básicas, experimentar con servidores DHCP, DNS, PROXYs, y luego cuando te sientas cómodo con todo eso ponte a programar SOCKETS y te vas a evitar muchos dolores de cabeza.
 
Servicios como UNET no los recomiendo, en principio por que lo que dice "SER SIMPLE" puede ser muchas veces complejo, UNET se basa en componentes por lo que tarde o temprano la estructura de nuestro proyecto se ve afectada por la arquitectura que debemos tomar para la implementación, por otro lado, el servicio que proveen no tiene una cobertura mundial, por lo que dependiendo tu posición geográfica podes experimentar entre 200 y 500 ms de retraso lo que realmente afecta muchísimo el desempeño de un juego multijugador y aumenta mucho mas el tiempo de producción debido a la implementación de predicción para los componentes como físicas, npc, entornos, etc.
 
Si tienes ganas de aprender descargate un programa CISCO Tracer Packet donde puedes simular múltiples entornos de red, recorda que no todo tiene un Web Interface, vas a tener que aprender a utilizar SSH, vas a comprender lo que es portknock y vas a luchar contra los servidores DNS, los Loop backward y Loop forward, hasta que luego de mucho tiempo logres entender por que pasa cada cosa, y entonces ahí vas a poder programar networking para video juegos.
 
 
 
Por otro lado lo que vos estas necesitando es un "Web Service" que te sirva para recibir y obtener información de los usuarios.
 
 
 
Saludos.
Título: Como hacer que un jugador sea el cliente y al mismo tiempo servidor
Publicado por: Alex en Mayo 24, 2018, 03:58:29 PM
@francoe1 muchas gracias por la información, me pondré al tanto!