¿Qué lenguajes se utilizan para desarrollar MMORPG como EVE Online y WOW? [cerrado]

22

Según tengo entendido, los MMORPG son juegos que se ejecutan en su computadora como cualquier otro videojuego 3D normal, pero, con cada acción que ocurre en el juego, se realizan cambios en el universo a través de llamadas HTTP al servidor. Entonces, la computadora del jugador hace todo el trabajo pesado en términos de renderizar los gráficos y las animaciones, pero los marcos web hacen la comunicación en línea.

  • Entonces, me pregunto qué marcos web, servidores web y bases de datos se están utilizando para crear MMORPG como EVE Online y WOW.

  • Además, ¿qué lenguajes de programación y motores de juegos en 3D se utilizan para que el lado del cliente (gráficos / animación / sonidos en 3D) forme parte del juego?

Vaillancourt
fuente
Creo que casi todos los MMO comienzan con tecnologías estándar y luego se personalizan al máximo una vez que crecen hasta cierto tamaño y comienzan a especializarse realmente en sus herramientas. E / S apiladas en EVE Online es un ejemplo fantástico: eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum
¿Te refieres a las llamadas TCP al servidor? HTTP (HyperText Transfer Protocol) es utilizado por los servidores web y navegadores para páginas web y no tiene nada que ver con los MMO a menos que se refiera a un juego basado en navegador como urbandead.
stonemetal
Michael Stum, ¿Stackless I / O está hecho con Stackless Python?
@ Adam no tengo idea si estos dos están relacionados o no.
Michael Stum
@ Michael Stum Me acabo de enterar que es de este video us.pycon.org/2009/conference/schedule/event/91

Respuestas:

30

La mayoría de las empresas usan C ++. Eve es un caso atípico, el motor gráfico principal está en C ++, mientras que la lógica del juego es, como otros han señalado, en Python. CCP también hace muchas contribuciones a Stackless, que está en C en su mayor parte. WoW es C ++ para el juego en sí, aunque la interfaz de usuario está escrita en Lua. Cryptic (Champions Online, Star Trek Online) usa C simple, pero eso es algo raro en la industria. Java aparece de vez en cuando, ej. Runescape, pero no se me ocurre nada AAA. Disney ha utilizado Panda3D (un motor basado en Python escrito en C) para varios de sus MMO, pero al igual que con Eve, eso es poco común.

En general, parece C ++ para la lógica y el motor del juego, con Lua para las secuencias de comandos del cliente es lo más parecido a un estándar.

En cuanto al lado web, todo ha terminado. Nosotros (Cryptic) usamos una mezcla de PHP, C y Python (Django) para varios bits. CCP usa ASP para el sitio web en sí y Python para alimentar el backend (aunque lentamente se unen). WAR y LOTRO usan PHP para su sitio, aunque no está claro qué marcos particulares están usando (si los hay).

Sin embargo, mencionó que los MMO funcionan a través de llamadas API web, que no es el caso. Un protocolo basado en HTTP sería demasiado ineficiente, y HTTP no está diseñado para conexiones de larga duración. Casi todos los MMO (que no están basados ​​en la web como Kingdom of Loathing o Urban Dead) usan servidores personalizados y protocolos personalizados. Los clientes tienen mucho estado, hacer algo como abrir una IU de inventario no va a disparar una solicitud al servidor ya que toda esa información se almacena en caché en el cliente.

coderanger
fuente
coderanger, por lo tanto, cuando dice "los clientes tienen mucho estado", ¿quiere decir que la aplicación cliente almacena todos los datos allí y no siempre envía solicitudes al servidor? Además, ¿cómo se aprende sobre el desarrollo de servidores personalizados y protocolos personalizados?
2
Sí, para reducir el tráfico de red, el cliente almacena en caché mucha información localmente (a diferencia de un juego web en el que generalmente todo proviene directamente del servidor). Sin embargo, el servidor aún tiene autoridad para evitar trampas. En cuanto a aprender sobre cómo desarrollar este tipo de cosas. Buscaría un libro sobre "programación de red". Hay una gran cantidad de herramientas por ahí que pueden ayudar, sin embargo, trenzado, búferes de protocolo, etc, etc Una gran cantidad de depende de lo que el lenguaje y los marcos se siente más cómodo en.
coderanger
3
Panda3d está programado en C ++, no C.
jokoon
5

Algunos enlaces para EVE Online:

Básicamente, EVE Online se ejecuta en SQL Server 2005 y algún otro software de Microsoft. Sin embargo, la columna vertebral del cliente se escribe principalmente en Python (Python apilable para ser exactos, por lo que puedo recordar) y algunos C ++ muy probablemente.

En cuanto a World of Warcraft, sé que usan Lua para todas las cosas de la GUI del cliente, pero aparte de eso, no creo que usen Lua para nada más. C ++ es probablemente lo que se usa. WoW, creo que también usa algunos cuadros de Windows, pero parece probable que tengan otros tipos de cuadros específicos para ciertas tareas que pueden no estar basadas en Windows.

No hay mucha información, pero espero que ayude.

Muchos de estos juegos separan servidores en función de la funcionalidad, por lo que tendrían un servidor de base de datos que solo es responsable de almacenar objetos / lo que sea y los servidores que realmente ejecutan el mundo del juego (validar las acciones del jugador, etc.).

Dalin Seivewright
fuente
3

No estoy muy seguro acerca de EVE y WoW, pero he visto que los juegos MMO usan C ++, C #, Java e incluso PHP para el servidor (este último solo para juegos simples basados ​​en navegador, sin embargo).

El cliente se escribe con mayor frecuencia en C ++ (o Flash si es un juego basado en navegador); He trabajado con un cliente basado en .NET una vez (C # mezclado con C ++ / CLI).

Y casi siempre se usa algún tipo de lenguaje dinámico de secuencias de comandos para facilitar el desarrollo de contenido de "diseñador", por ejemplo, habilidades, misiones, etc., cosas que cambian con frecuencia y que pueden cambiar los diseñadores de juegos en lugar de los programadores.

No importa
fuente
3

Primero, los MMORPG o cualquier juego en línea no usan HTTP o "marcos web" en primer lugar.

Un servidor se programa como el juego en sí mismo, en C ++, y la comunicación se logra mediante el uso de sockets para transmitir paquetes a través de la red.

Los servidores a menudo ejecutan otro sistema operativo e incluyen solo el código del juego, por lo que muchos jugadores pueden jugar en un solo servidor sin problemas.

No sé cómo gestiona Blizzard sus servidores, no sé si usan clusters o no.

Por supuesto, cuando digo "sockets" y "C ++", estoy hablando del juego en tiempo real, no de otros servicios que el juego podría ofrecer, como el arsenal con WoW, por ejemplo. Es posible que solo utilicen una base de datos que se pueda leer desde múltiples servicios, como el foro, el arsenal, el juego, la administración de la cuenta, etc., pero creo que tienen bases de datos dependientes, que buscan nuevas entradas, etc., para que todo se pueda sincronizar arriba muy bien.

Creo que el chico a cargo de la parte de la red de WoW podría ser realmente rudo.

jokoon
fuente
3
"Creo que el chico a cargo de la parte de la red de WoW podría ser realmente rudo". En mi opinión, las pequeñas poblaciones de servidores y el movimiento del lado del cliente en realidad no son malos. Aunque en retrospectiva también es 20/20.
0

Hay docenas de motores de juego por ahí. Los dos que aparecen en mi mente son Unreal engine y Source.

En cuanto a los idiomas, eso depende de la tarea. La representación y otras partes críticas de rendimiento generalmente se realizan en uno de los idiomas nativos. C ++ por ejemplo. Pero es común usar un lenguaje dinámico para definir scripts porque es más probable que este código cambie y, a menudo, lo escriben menos programadores 'hardcore' :-) Lua, Python, Ruby: todos pueden usarse aquí.

Sergio Tulentsev
fuente
0

WoW también usa Lua para todas sus secuencias de comandos internas. No estoy seguro de si modificaron el lenguaje en sí, pero no lo dudaría para que pueda satisfacer sus necesidades. Puedes apostar a que tienen diferentes herramientas que facilitan a sus diseñadores modificar / ajustar los scripts. Esta es información privilegiada de amigos míos que son / solían ser desarrolladores de WoW.

Kyle C
fuente
Cuando uno modifica un idioma como Lua, quiere decir que está creando su propio marco personal basado en Lua. ¿Correcto? Si es así, ¿disminuye esto el rendimiento / velocidad de los programas desarrollados?
@ J3M7OR3: Tengo entendido que crearon su propio marco interno basado en Lua, pero no podría decir sobre el rendimiento / velocidad.
Kyle C