Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[Diseño]: Escenas cinematicas y enigmas en los MMORPG

Iniciado por rrc2soft, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

rrc2soft

                                Hola a todos!
Desde hace tiempo me ronda una idea por la cabeza, una posible "mejora" para los MMORPG. No se si se ha llegado a probar o implementar (mi experiencia con los MMORPG es mas bien poca), pero no la he visto comentada en ningun sitio/foro.
La idea es la siguiente: Incluir escenas cinematicas dentro de un MMORPG o/y incluir enigmas del estilo de los RPG de 1 jugador.

ENIGMAS
=======

Se que el Ultima Online incluye enigmas en el sentido de que "El Sr X ha perdido su medallon: Esta en NoSeDonde, y si lo recuperas te dara una recompensa", pero me refiero a otro tipo de enigmas. A ver si me explico...
Imaginemos unas ruinas: dentro de esas ruinas hay una torre que solo se puede abrir con cuatro llaves. Pero esas cuatro llaves estan repartidas en todo el mundo. Solo cuando las cuatro se reunan y se usen con la puerta (de forma automatica o manual, y para simplificar, no hace falta que sean todas a la vez), la abriran, dando paso a "otra dimension" (toma topico XD).
Otro ejemplo: Existe un pasillo literamente plagado de enemigos dentro de una piramide. Si alguien entra en el, muere inmediatamente. La unica solucion consiste en entrar completamente desnudo (y sin NADA en el inventario), y asi se puede descubrir que ni mueres ni los enemigos te atacan.
Lo problemas que veo para hacer este tipo de detalles son: Objeto "unico", que puede perderse (al estar en el inventario de un jugador, y ese jugador puede ser eliminado/estar offline); inclusion de una "variable global" que representa un estado dentro del mundo; uso de una maquina virtual para ejecutar programas complejos (¿En cliente => posibilidad de hack / O / En servidor => ¡Sobrecarga!); chequeo de variables del personaje.
Respecto al objeto "unico", podemos hacer que no sea unico mediante soluciones de diseño (la llave en cuestion es energia que vuelve a aparecer pasado X tiempo => el problema de la maquina virtual del servidor / Si un objeto determinado tiene mas de 24h de "vida", desaparece), aunque derivamos el problema.
Respecto a la "variable global", creo que no seria dificil: Son detalles que no varian mucho a lo largo del tiempo, por lo que al cambiar se guardarian en disco duro y en memoria ("cache"), y de esa forma se podria proteger esas variables de una caida del servidor y hacer de su lectura algo posible.
Respecto a la "maquina virtual", la cosa es mas dura (aunque tampoco he pensado mucho en ello). Se podria utilizar un script sencillo y rapido que trabajara en paralelo con una hebra, y/o paralizar al personaje mientras se ejecuta el script, y que haya una cola de "scripts" en el servidor de tal forma que solo ejecute uno (o varios) a la vez.
Y Respecto al acceso de variables (inventario) del personaje... eso depende del MMORPG, aunque tambien habria posibilidad de "hack" si lo leyera del cliente.

CINEMATICA
==========

Respecto a la cinematica, no me refiero a la cinematica a un solo jugador, sino a una especie de "broadcast": Algo importante esta ocurriendo dentro del mundo, y los jugadores deberian saberlo.
Un ejemplo (ooootro topico): Los jugadores estan a lo suyo, y de repente empiezan a caer rayos. Ahora la camara de TODOS los jugadores se centra en un templo: se puede observar como sale de el un inmenso demonio que suelta una parrafada "Ahora el mundo es mio, jajajaja" y los jugadores retoman el control.
Los problemas que surgen aqui son: Deberia haber una forma de "paralizar" a todos los jugadores, y que cuando todos estuviesen "paralizados" el broadcast pudiera comenzar (sincronizacion). Tambien esta el tema de hacer el broadcast de la escena cinematica, y de que el engine soporte que eso se pueda hacer.
Respecto a la paralizacion/sincronia, el asunto seria enviar un mensaje a todos los personajes que esten actualmente jugando (y evitar que entren otros nuevos) para paralizarlos, y tener (quizas) un contador que revise si todos los jugadores estan paralizados. Y cuando esto ocurra, enviar la señal de "comienzo de escena cinematica".
Respecto a la escena cinematica, aparte de que el engine puediera soportar algo asi, podria enviarse la informacion a los jugadores o que los jugadores tuvieran en su disco duro el script para hacer la escena cinematica (previamente bajado gracias al motor de parches del juego). Una vez todos han enviado la señal de "vale, he acabado" (y quizas un contador de tiempo para parar la escena en caso de que no recibiera los suficientes mensajes => cuelgues, fallos de conexion, ...)

Bueno, son un cumulo de ideas. Realmente no vamos a hacer nada de esto, pero queria que opinaseis un poco. Y si os sirve de algo u os da una idea para hacer un MMORPG de la ostia, mejor que mejor :ojo:                                

rrc2soft

                                Hola otra vez!
Esto de resubir un mensaje no lo he hecho nunca, pero la verdad es que me gustaria que opinaseis sobre el post, ya que me costo un tiempo pensarlo (aunque no lo vaya a utilizar  :ojo: ). Y encima han expuesto en Gamasutra un articulo http://www.gamasutra.com/resource_guide/20020916/klug_pfv.htm">AQUI al que se le podria aplicar todo lo que escribi (que por cierto iba orientado a conseguir lo de ese articulo, eso me sube la moral  8) )                                

ethernet

                                Pienso q un MMORPG es el tipo de juego mas dificil de programar  que hay por el momento, no es por desanimar xD, pero has pensado como implementar todo eso?

Saludos                                

sés

                               
Citar
Bueno, son un cumulo de ideas. Realmente no vamos a hacer nada de esto, pero queria que opinaseis un poco. Y si os sirve de algo u os da una idea para hacer un MMORPG de la ostia, mejor que mejor  

 Las ideas están muy bien, con un poco de suerte alguien hará algo de eso algún día.                                
Soy indeciso... ¿o no?

rrc2soft

                                Ethernet:
No, no he pensado como implementar todo eso, sobre todo porque realmente mi experiencia como jugador y como programador/diseñador de MMORPGs es de nula para abajo :llorando: , aunque puedo suponer como implementar algunas cosas (siempre desde el punto de vista del diseño):
Los MMORPGs se basan en arquitecturas cliente/servidor y el cliente es un mero interprete (creo) de la informacion que le envia el servidor (muestra PJ dando golpe, muestra dialogo, etc). El cliente envia cierta informacion respecto de su personaje, y recibe la respuesta cuando el servidor actualiza el frame del juego y ve como su personaje actua como el queria.
Ejemplo: supongo que cuando un personaje envia al servidor que quiere moverse, el servidor chequea el movimiento y actualiza la informacion en el servidor de "PJ moviendose a X", por lo que el jugador humano recibe la respuesta de que su personaje se mueve al ir recibiendo el estado del mundo (en el que el personaje se mueve).
En el caso del problema de los enigmas y la maquina virtual (centrandome en el ejemplo de la piramide y los muertos):
...cuando un personaje entra en una zona del mapa que activa un "enigma" (maq. virtual) el servidor deberia recibir un mensaje sobre este hecho (supongo que cuando se cambia de mapa por teletransporte las cosas funcionan igual). Entonces el servidor debera informar al jugador humano que no admitira ningun paquete de movimiento (para evitar que le sobrecargue con paquetes que tenga que desechar, supongo que cuando mueres pasa algo parecido), y lo encolara en una cola de ejecucion de maquina virtual (que ya requeriria un analisis mas detallado sobre si puedo ejecutar varios scripts en paralelo o solo uno hasta el final, esto siempre en una hebra aparte). Esta cola no deberia tener muchos elementos porque no creo que ni el 10% de los jugadores esten ejecutando un script a la vez, asi que deberia ser rapido.
Cuando este ejecutando el script (y obviando los chequeos de inventario y demases, porque para eso si que tendria que saber como esta implementado el manejo de estos elementos dentro del MMORPG), se impone al jugador ciertos gestos/movimientos (igual que en un RPG unijugador), pero sin embargo el jugador humano recibe lo que esta haciendo su personaje gracias a lo que he comentado antes (recibe el estado del mundo y por ende el movimiento u otras cosas que hagga su personaje). Una vez acabe con el, avisara al cliente que puede enviarme otra vez paquetes, y a otra cosa mariposa.
¿Y si el personaje muere durante el script?. no pasaria nada, ya que la muerte seria una de las ultimas instrucciones de esa maquina (esa muerte avisaria al cliente del jugador humano para ejecutar las rutinas asociadas a la muerte, que OJO para que todo funcionara no deberia avisar al servidor que reinicialice su personaje [o si... todo seria analizarlo]), y cuando el jugador pudiera enviar mensajes otra vez seria como si el jugador hubiese muerto luchando contra un bicho.
OJO, que tambien se podria decidir que fuera el cliente el encargado de ejecutar ese script, aunque en este aspecto podriamos esperar un mayor ataque por parte de hackers, y habria que tener muchisimo cuidado (y un analisis de la ostia).
¿Y los objetos unicos?
Los principales problemas que existen con los objetos unicos son los siguientes (que aparecen si los comparamos con los RPGs unijugador):

  • El jugador que recoge el objeto unico puede decidir no usarlo, o no sabe como hacerlo (y no pide ayuda), o no comenta a los demas que lo posee, o hace de el (o de su uso) un objeto de intercambio y venta: Como resultado, el enigma que depende de ese objeto unico se retrasa.
  • El jugador que recoge el objeto unico no siempre esta on-line como en los RPGs unijugador: Como resultado, el enigma que depende de ese objeto unico se retrasa.
  • El jugador "tira" el objeto unico en un lugar olvidado/inaccesible/encualquierotrositio: Como resultado, el enigma que depende de ese objeto unico puede no resolverse nunca.
  • El jugador desaparece del juego (su personaje es borrado), o no vuelve por un periodo amplio de tiempo: como resultado, el enigma que depende de ese objeto unico puede no resolverse nunca.

      Como podemos ver la cosa esta MUY chunga. Asi pues las soluciones que pueden surgir ante este tipo de problemas son las siguientes:

      • El objeto unico no lo es tal: Cada X tiempo, o cada vez que alguien lo recoge, el objeto unico vuelve a crearse. Esto necesiaria de un script asociado o de un sistema especial dentro del engine del servidor (Quizas maquinas virtuales que se ejecutan cada X tiempo en paralelo en plan batch, y que se encargue de chequear todo esto).
      • El objeto unico es unico, pero si no es utilizado en un plazo de tiempo determinado (de juego o de tiempo real), desaparece del inventario y vuelve a su sitio original. Este tipo de chequeos debe ser realizado por el server, ya que puede ser no utilizado porque al jugador no le de la real gana o porque este off-line (eso conlleva que puede tener dos tiempos de desaparicion: de juego [es el cliente el que hace estos chequeos] y de tiempo real [es el server el que hace estos chequeos]. ¿Como hacer estos chequeos?. El servidor, cada cierto tiempo, deberia analizar sus objetos unicos para ver si han sido utilizados dentro del plazo establecido. Si no es asi, elimina al objeto unico del jugador (quitar de inventario si esta on-line o un "toquecito" a la BBDD si esta off-line) y ponerlo en su sitio. Y respecto al cliente, seria mas o menos lo mismo, pero habria que hacer otra vez un chequeo intensivo para evitar hacking...


          Bueno, ya he escrito suficiente por hoy :ojo:. La verdad es que para pensar como implementar todo esto necesitaria de un engine MMORPG, porque requeriria de un diseño orientado a poder hacer todas estas cosas. Se que hay uno open source AQUI, y me encantaria echarle una mano para intentar probar todo esto, pero pasa lo tipico: tiempo, otros proyectos... Me encantaria ganar la primitiva y trabajar en estas cosas toda la vida por puro gusto 8)

          PD: Disculpad si lo que he escrito esta un poco liado :ojo:                                

Gunder

                                Hola rrc2soft,

en los juegos actuales de MMORPG se usan estos tipos de objetos:

- Normal, cualquier tipo de objeto.
- No drop, el objeto no se puede vender ni soltar.
- Lore, solo se puede llevar un objeto de ese tipo.

Con la combinacion de estos tipos se pueden coseguir todas las opciones necesarias.

En el caso de los Quests que tu cuentas, todos los personajes podrian adquirir el juego completo de llaves pero no pasarselas a otros jugadores.
Al tener las x llaves y tocar la puerta, te teletrasporaria inmeidatamente al 'otro plano' o haces que la puerta se abra durante un tiempo, evitando así que otros usuarios que no cumplan el quest entre en el plano.

Tambien, has de tener encuenta que los enigmas suelen estar siempre activos y que se usan testigos para demostrar que has pedido un quest. Hablas con un noble y este te dice que mates al troll que rapto a su hija y metas su cabeza en esa bolsa que te da. Al entregarle la bolsa con la cabeza este te premiara con PX y monedillas. Para evitar que un jugador que no ha hablado con el pnj que manda el quest y resolverlo entregando la cabeza metida en la bolsa, tanto la cabeza como la bolsa seran objetos 'no drop' y así yo como jugador de nivel 15 y que puedo hacer el quest facilmente, no puedo dar la bolsa con la cabeza a un newbe.

Es logico nivelar los quest para que si este esta pensado para persaonajes de nivel bajo, el noble solo te de la bolsa y te cuente el quest si estas entre niveles 1 y 5, por ejemplo.

Ale.
Gunder.                                
riticar, critica hasta el mas tonto.

Jove Chiere

                                rrc2soft: pasate por www.Sphereserver.com y mirate los scripts...

Son mas o menos como lo hacen los de OSI ya que lo a programado gente que trabajo para ellos...

Si quieres jugar pasate por el canal #tierras_baldias (del hispano claro esta).

Lo de los chequeos creo que era con una propiedad TIME=XXX y se iba restando en tiempo real por cada objeto del server que caduca... al caducar se borra y empieza otra vez de nuevo la cuenta del SPAM del item, lo mismo con los monstruos para evitar que salgan un numero infinito de ellos, el SPAM no empieza la cuenta atras de un nuevo monstruo hasta que no as matado a su anteriormente creado, tambien existe un valor que es el numero de criaturas que crea ese SPAM y de que tipo (si es solo 1 se pone su numero directamente, si son de varios tipos se a de crear una lista de random's)

Gunder: No jueges tanto a EQ o DAoC...  :jaja:                                
Los grafosyakuza recomiendan Wings3D - Entra en GIMOVJ  y aprende a modelar.

Gunder

                                Jove, no he jugado en mi vida al EQ ni al DAOC solo he jugado al UOL.
:P                                
riticar, critica hasta el mas tonto.

rrc2soft

                                Gunder:
No sabia yo eso de los tipos de objetos, esta interesante  8) . Asi podria hacerse lo del juego de llaves y las otras cosas...
Aunque lo que estabamos pensando (al menos a donde iban orientados nuestros pensamientos) era a cambios a nivel global en el mundo. Es decir, que lo de las llaves y el portal se mantenga abierto siempre, y que sea una quest pero una quest que afecte a todos los jugadores del mundo: "Un insensato ha abierto las puertas del infierno, a partir de ahora vivir en este mundo sera mas complicado..." (aparecen nuevas clases de bichos, y solo desapareceran cuando alguien entre en ese portal y destruya algo de dentro).
Jove:
Ya me dare un voltio por SphereServer :ojo:. Aunque ahora lo que es tiempo para jugar, casi no tengo...  :llorando:                                

Gunder

                                Yo no pensaria en hacer cosas que afectan a niovel global al mundo, ya que cuando alguien lo ha hecho, el resto pierde la oportunidad de hacerlo. El juego piede interes.

Ale,
Gunder                                
riticar, critica hasta el mas tonto.

rrc2soft

                                Es por dar al juego una sensacion de evolucion, de mundo cambiante. Puede que la gente no disfrute de la quest en si (aunque habria que arreglarse para que fuera de esa forma...), pero todos ven los resultados, y asi no te da la sensacion de "ya he visto todo lo que tenia que ver"...
Pero vamos, lo suyo seria que todo el mundo disfrutase con estas cosas  :ojo:                                

Mars Attacks

                                Me vais a matar a pedradas, pero ¿qué es un  MMORPG? Supongo que será algo de Multi M... O.... Rol Play Game (o no).                                

Gunder

                                Masive Multiplayer Online Rolle Playing Game.

Ale,
Gunder.                                
riticar, critica hasta el mas tonto.

x-alien

                                joder.. pretendes hacer un mmorpg...
aparte de ser super dificil de programar... k tal tu nivel de graficos?... si intentas algo te vas a matar en vida.

yo haria un bomberman, un comecocos, un alleycat, un mundito k carga un escenario como los del UT2003 con un wen sistema de particulas.. pero un mmorpg... es demasiao

mucho trabajo para uno solo o varios...

por cierto si kieres ver un buen mmorpg esperate k salga el world of warcraft, el uo es un juego muy muy malo graficamente, a mi particularmente no me gustan muchos los mmorpg, pienso k pone a la gente algo chala como los k se han suicidado en america, k jugaban al everquest...

son juegos para gente sin vida social si se juega dias , dias y dias...
tengo un amigo viciado al daoc y pa mi k este año no lo veo en la uni ..pork nunca iba a clases y se iba a un ciber a jugar al daoc.

saludos                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

Mars Attacks

                               
CitarMasive Multiplayer Online Rolle Playing Game.

Ale,
Gunder.

Gracias :D
Puessssssss os recomiendo un libro llamado WYRM que seguramente os gustará bastante. Va de inteligencia artificial, virus... y MUD's. A mí me gustó mucho.

Sobre lo que dice x-alien acerca de este tipo de juegos, es como todo en la vida. Un juego no te vuelve chalado ni una peli te hace ser más agresivo. Si tú estás chalado antes de comenzar probablemente lo potenciará, pero a una mente sana no le va a causar el más mínimo daño. Todo son predisposiciones. Conozco a quakeros o muderos que no consiguen despegarse de la silla y a otros que hacen vida normal (incluso pasan menos tiempo con el ordenador que yo).
Que ese tipo de juegos llamen más a los chalados por algún tema de vida interior pobre o qué se yo (por lo mismo que a algunos les llaman los libros) pues... quizás, puede ser; sin embargo probablemente si no se volvieran chalados con eso, se volverían con cualquier otra cosa.
Pero no hay que generalizar, supongo que también habrá gente que le llame por el espíritu de aventura, de compañerismo, de vivir una historia (también es lo mismo por lo que a algunos les llaman los libros) o simplemente por pasar el rato.                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.