Ufff un mmorpg es de los juegos más complejos para crear, las compañías normalmente programan un juego en 2 años, pero un mmorpg pueden tardar de 4-5 si no parten de un motor.
Me encantaría ayudaros ya que es un tema que me apasiona pero no tengo tiempo, y para retrasaros o dejarlo por falta de tiempo mejor no me meto. Os dejo más o menos la idea que tenía yo para un juego de estas características, que en su momento me puse a pensar cómo lo haría aunque nunca tuve intención de empezar a hacerlo.
El juego tiene como todos sabéis, dos partes. El cliente, que es muy sencillo de crear, ya que lo único que ha de hacer es coger la información del servidor, la entrada del usuario, y según los datos mostrar unos gráficos en pantalla. Además comunicarse con el servidor claro, pero no lleva integrado ningún cálculo ni nada por el estilo para evitar hackeos. Es fácil de hacer, pero muy muy muy laborioso en cuanto a que es lo que más tiempo lleva (gráficos, sonido, el motos 3D o 2D del juego etc...).
Luego tenemos el servidor, que es más pequeño pero mucho más complejo. Tiene que gestionar todo lo que hace el usuario. Desde verificar el login, hasta calcular el daño que hace a un enemigo etc... Recibe del cliente lo que va haciendo el usuario, y tras calcular lo necesario le dice al cliente qué ha pasado (este pj ah hecho 300 de daño a tal enemigo y recibe por ello 700 de experiencia, una espada y 60 de oro). Por todo esto es la parte compleja.
Es importante esta diferenciación para evitar muchos tipos de hackeos. Si dejo que el cliente haga los cálculos del daño, etc.., alguien puede programar una aplicación que envíe al servidor una información falta. Por ello el servidor soporta una carga muy importante y se suelen separar en un servidor que se encargue del login de los usuarios, otro se encarga de los npc y monstruos, otro de los personajes de los jugadores... y todos se comunican entre sí para lo que necesiten.
Por último tenemos que almacenar toda la información de los usuarios y demás, para lo que usaremos una base de datos. Ahora mismo MySQL ha mejorado mucho y ya soporta gran cantidad de accesos simultáneos por lo que es una elección aceptable. Ahí crearemos tablas para todo, desde datos de usuarios, equipo, objetos, monstruos, npcs...
¿Por qué no hacerlo en archivos de texto por ejemplo? se puede hacer, y de hecho hay cosas que se suelen crear en archivos de texto, pero son cosas que se puedan dejar en el cliente del juego. Por ejemplo, los textos de diálogos de npc es algo que podemos poner en un archivo que vaya en el cliente, si me lo hackean pues mira, mejor para el que lo haga. ¿qué beneficio puede objeter de hackear un archivo local con diálogos? ¿cambiar el idioma?. Pero otras cosas no se deben poner ahí como el daño que hace un arma, porque cambiar ese dato sí que afecta al juego.
En la parte del servidor no es recomendable utilizar muchos archivos de texto (o binarios, vamos, que siempre digo de texto pero me refiero a archivos en general) para cosas como datos del juego, por varias razones. El acceso es más lento que si fuese a una base de datos, y las búsquedas ya ni te cuento, sería totalmente inviable. Además es más sencillo modificar, añadir, borrar cosas de una base de datos y sobretodo hacer copias de seguridad.
----------------------------
Pues más o menos esas eran las notas (aquí las he redactado) que tenía para crear un mmorpg, junto con más cosas pero ya muy concretas. Espero que podáis extraer algo de ello, aunque son cosas que supongo que ya sabríais. Si os puedo echar un cable con alguna duda que os surja con bases de datos, lo haré encantado, ya que controlo bastante de ellas.
Hice una prueba de comunicación de la DS con el ordenador, montando un servidor cutre (de 60 líneas de código) en Java y un mini-programa de DS que se decían Hola y Adiós entre ellos xDDDDD así que posible hacerlo lo es. Sólo hace falta paciencia.
Mucha suerte y espero que en dos años podamos ver un juego maravilloso.
PD: ¿qué pasó con el cliente de Ragnarok online? a lo mejor os puede valer echarle un ojo... aunque no sé en qué estado se quedó.