¿Cómo creo un servidor de juegos de rol simple? [cerrado]

8

Estoy trabajando en un juego de Sprite Kit. Me gustaría convertirlo en un verdadero juego multijugador, lo que significa que cada persona que se une al juego tiene su propia cámara. He visto tutoriales sobre juegos multijugador donde los jugadores comparten la misma pantalla de juego, pero eso no es lo que quiero.

Entiendo que debe haber un servidor al que se conecten los jugadores, lo que significa que el "mundo" al que se conectan los jugadores debe ejecutarse en el servidor. ¿Es esto correcto?

¿Cómo tengo un servidor que ejecuta el 'mundo' para este juego? ¿Tiene que ser un tipo específico de servidor, o puedo usar Node.js o lo que quiera?

duxfox--
fuente

Respuestas:

17

Estás en el camino correcto.

La esencia del modelo de red cliente-servidor es que un servidor es un punto central de conocimiento al que se conectan los clientes . Un servidor de juegos normalmente contiene

  • una representación mundial en memoria ,
  • una lista de jugadores conectados ,
  • un bucle de juego (con, por ejemplo, un controlador de control del jugador, un motor de física e IA).

También necesitará un canal de comunicación entre su servidor y sus clientes, para que los clientes puedan transmitir las acciones del jugador y el servidor pueda transmitir el estado del juego.

Configuraciones más avanzadas de cliente-servidor pueden involucrar

Comience simple. Es mejor agregar complejidad solo según sea necesario . Esta madriguera de conejo es profunda.


Mencionaste Node.js : en eso he escrito algunos servidores para juegos pequeños y ha sido bueno. Pero puedes escribir un servidor y clientes en lo que quieras. Eve Online está en gran parte en Erlang , Minecraft en Java, casi todo de Valve está en C ++, etc.

Anko
fuente
¡Gracias por la respuesta detallada! Una cosa que todavía me confunde es: dado que el juego está escrito con un kit de sprites para iPhones, ¿necesita saber esto el servidor? Solo estoy confundido porque sigo pensando, el juego está en el kit de sprites, por lo que el mundo que proporciona el servidor también debería ser un kit de sprites. ¿Qué piensas?
duxfox--
@AbdulAhmad No, puede crear el servidor con el idioma o las bibliotecas que desee. Tenga en cuenta que su servidor está y debe estar completamente separado. Está creando dos aplicaciones diferentes y debería pensarlo de esa manera. Uno para el cliente y otro para el servidor. La parte que los une es el protocolo de comunicación entre las dos aplicaciones. Si bien habrá otros detalles que deben coordinarse entre ellos (como el estado del juego), en esencia no tienen ninguna relación. Ni siquiera tendría mucho uso para Sprite Kit en el lado del servidor.
Fuzzy Logic
@FuzzyLogic, entonces, tratando de entender esto mejor. Si el servidor proporciona el 'mundo' (imágenes, física, etc.), los clientes (iPhones) no deberían tener nada de eso, porque el cliente es solo la "vista" para este entorno. ¿es esto correcto? Entonces, ¿usaría sprite-kit en el lado del cliente para dar una capa visual a los datos que provienen del servidor? En otras palabras, el juego debe construirse principalmente en el lado del servidor (toda lógica, etc.) y el cliente es solo mi punto de vista, y donde puedo enviar eventos / comandos al servidor. Esto significa que no necesito ningún motor de física / lógica de juego en sprite-kit
duxfox--
@AbdulAhmad ¡Sí! Un cliente que realiza el procesamiento mínimo posible se denomina cliente ligero . Es un gran punto de partida.
Anko
3
@AbdulAhmad Sí y no. Esa es una buena manera de pensarlo, pero principalmente por razones de eficiencia, el cliente generalmente duplicará muchas cosas en lugar de pedirle al servidor todos los detalles, de lo contrario, probablemente tendrá problemas de rendimiento. Como mencionó Anko, sería un buen lugar para comenzar. Este es un gran tema, hay muchas formas, muchas consideraciones y muchas partes, por lo que es difícil explicar por completo cómo debería funcionar todo. Sin embargo, lo complicado que se vuelve realmente depende de los detalles de tu juego. Para ser honesto, en base a sus preguntas, no le recomiendo que intente hacer esto todavía.
Fuzzy Logic