Desarrollo de MMORPGs: ¿Tarea faraónica? (II) |
Complejidad de un MMORPG
Como visteis en el primer artículo, me interesan mucho los MMORPG, y muchas veces pienso en intentar trastear para crear algo. Pero el desarrollo de MMORPG no es nada fácil: entran en juego multitud de áreas de la informática, y es necesario tener mucha habilidad en todas ellas para crear algo utilizable. Como la mayoría sabemos, un MMORPG suele estar alojado en un servidor al que se conectan multitud de clientes que toman parte en un mismo juego, del cual pueden desconectarse para luego conectarse otro día sin perder la turbo-espada que consiguieron. Así que tenemos:
- Concurrencia: el servidor debe procesar tareas en paralelo por cada jugador, lo que precisa de programación multihilo, y la sincronización entre estos hilos lo cual complica la programación.
- Conectividad: En un MMORPG, la respuesta al usuario debe ser rápida o aparecerá el lag, por lo que es posible que deban utilizarse técnicas complejas para simular la respuesta instantánea del servidor y no saturar la conexión si queremos ser capaces de soportar muchos usuarios. Por ejemplo, es posible que el juego en nuestro pc, cuando queramos avanzar hacia adelante con nuestro personaje, nos haga creer que hemos avanzado sin esperar a que el servidor le diga “Sí, puedes ir para adelante”. Luego si resulta que el servidor le dice que no puede, veremos una especie de rebote de nuestro personaje hacia una posición anterior (efectos del lag).
- Persistencia: si queremos que los jugadores no pierdan lo que consiguen entre conexiones al juego, necesitamos algún lugar donde guardar su estado. Normalmente se utilizan bases de datos.
- Gráficos: los jugadores cada vez son más exigentes con los gráficos, tienes que ser un experto en DirectX, OpenGL, e infinidad de herramientas de modelado 3D.
- Físicas: Si quieres que tu mundo se parezca al mundo real… tendrás que implementar las leyes que rigen nuestro mundo. Estaría bien que repasaras lo que estudiaste sobre la gravedad, las colisiones entre sólidos rígidos. Ufff…. suena jodido.
- Audio: y encima contratar a músicos que creen la música para tus escenarios, o buscarte en internet ruidos que se parezcan a las pisadas sobre un suelo de madera. Ah, y sobre un suelo de hormigón, y sobre el barro…
- Escalabilidad: Vaya, tu juego va tan bien que ya vas por los 1000 usuarios, pero el servidor ya no es capaz de funcionar bien y se te quejan por el lag. Tienes que añadir un nuevo servidor. Muchos juegos lo que hacen es crear un nuevo servidor con el mismo juego, pero digamos “paralelo”, en realidad no es el mismo mundo. Seguro que se os ocurren ejemplos (OGame, el propio Tibia…). Pero esto, claramente, no es lo ideal. Si quieres poder aumentar la capacidad de un solo “mundo” o “juego”, tienes que conseguir que tu programa se distribuya entre distintos ordenadores el solito. ¿Parece que se complica verdad?
Creo que ya se entiende mejor el título del post: desarrollar un MMORPG es una tarea muy, muy complicada y que requiere de muchas horas de trabajo y esfuerzo, ademas de mucha experiencia y dominar muchos temas distintos. Ya no basta con un MMORPG en 2D como el Tibia, ahora como no saques un WoW o Lineage, te será difícil conseguir usuarios. Pero… ¿puede esto cambiar en el futuro?
Sin duda, sí, es el camino que se ha seguido desde el principio: motores gráficos, motores físicos… todos hemos escuchado hablar de ellos. Al final, no son más que piezas ya hechas, altamente reutilizables, para hacer cosas comunes a la mayoría de juegos: en muchos de ellos necesitas calcular una colisión entre objetos, la fuerza de la gravedad, los tiros parabólicos… por no hablar de los destellos al disparar un arma, los reflejos de luz, etc. Por poneros unos ejemplos, como motor gráfico tendríamos el Unreal Engine y como físico el PhysX. Ya tenemos la física y los gráficos “cubiertos”. ¡Pero todavía nos falta cosas! Atentos a la próxima edición.


about 5 months ago
Yo soy de la opinión de que sin juego está bien planteado y tiene un buen argumento los gráficos no importan tanto. De hecho, los juegos más jugados en el mundo siguen siendo los clásicos (tetris, comecocos, el solitario, el ajedrez, el poker, …).
Yo te recomiendo que empieces por un juego en 2D, que requerirá menos recursos