Hola Makeros:
Tengo una duda hace ya algún tiempo, la he comentado con amigos pero nadie parece tener una respuesta definitiva. Mi duda es la siguiente:
Tengo el diseño de un MMORPG con un mundo donde la magia es cosa natural. Poderes como aceleración y ralentación, son los que me presentan mayor desafío de programación.
No tengo idea de cómo programar el juego de forma tal de que, si un jugador, en un momento dado, decide acelerar sus movimientos, de qué manera logro que el resto de los jugadores vean sus pantallas de juego a velocidad normal y, el jugador "acelerado", vea en su pantalla al resto de los jugadores lentos.
Sencillamente, quisiera que los jugadores "acelerados" vean al resto de los jugadores lentos en sus pantallas y, los jugadores con velocidad normal, vean a los acelerados muy rápidos en pantalla.
Disculpen, yo creo que es imposible, pero a lo mejor a alguno se le ocurre algo...
De antemano muchas gracias a todos y feliz año nuevo.
Una opcion es en el evento step verificar una variable de estar acelerado.
Entonces, si la variable "acelerado" de tu personaje esta activada, tus fps subiran.
la mejor manera es acelerar ?nicamente la instancia del personaje con la id para no equivocar la instancia.
Para mi tendr?as que, cuando invocas dicho hechizo, se aumente por X tiempo la velocidad del room y que cuando termine ese hechizo se vuelva a la velocidad normal. Digo porque yo lo he probado en un mmorpg que estaba haciendo hace tiempo y ha funcionado relativamente bien.
no se como funcione, pero en teoria deberia funcionar.
donde considero que hay problemas es que cuando un personaje es mas rapido y otros mas lentos, es cuestion que si una magia hace mas rapido a unos o a uno que nomas sea ese y que los cambios se vean para todos los personajes.
por otro lado, yo usaria variables que me permitieran controlar el los fps , asi si es rapido pues a esa instancia de personaje le subes los frames para que sea mas rapido que los demas y en una alarma le das el tiempo para que la variable vuelva a su valor inicial
Hola Makeros:
Les agradezco enormemente la atenci?n que me han bridado en esta duda de corte te?rico(dise?o), pero las respuestas ofrecidas no son suficientes y en ellas observo que no se entendi? del todo la pregunta. Tal vez no me supre expresar bien...
Expodr? mejor los hechos:
Hay tres jugadores en dicho MMORPG jugador A, jugador B y jugador C.
El jugador A est? "acelerado". Lo que debe ver en su pantalla es a su personaje (character) a velocidad normal, al jugador C lento y al jugador B muy lento.
El jugador B est? ralentizado(o lento). Lo que debe ver en su pantalla es a su personaje a velocidad normal, al jugador C r?pido y al jugador A muy r?pido.
Por ?ltimo, el jugador C est? en estado normal. Lo que debe ver en su pantalla es a su personaje moverse a velocidad normal, al jugador A moverse r?pido, al jugador B moverse lentamente.
Mientras m?s lo explico m?s imposible lo veo de implementar. No hay manera de que yo me mueva en mi pantalla a velocidad normal y en otra pantalla me vea mucho m?s r?pido.
El problema es que aunque pueda variar los tiempos en el juego, las pantallas est?n el la realidad que tiene un solo tiempo, el nuestro...
Muchas gracias aun si no se encuentra una manera. De todas formas yo lo veo imposible por lo que implementar? otra cosa...
Gracias a todos de cualquier manera.
creo que la solucion es simple..
teniendo una velodidad normal de un objeto (ej.: speed = 10;)
si se quisiera aumentar la velocidad lo unico que tenemos que hacer es multiplicar su valor
ej.: speed = 10*2;
o podriamos disminuir la velocidad de los otros jugadores
ej.: speed = 10*.5;
para un menor manejo recomiendo la segunda opcion.
En cuando a la disminucion de velocidad seria algo asi:
ej.: speed = 10*.25;
aclaro que a la velosidad (speed) que me refiero no es solo el movimiento del personaje si no tambien podria se los ataques las animaciones, entre otras cosas..
claro que decirlo es una cosas y hacerlo es otras, pero la idea ya la tenes.
Hola Makero romon_28:
En realidad yo conozco la forma de acelerar un "character" y sus acciones. El problema es que debo ver tu personaje acelerado en mi pantalla y el mio a velocidad normal, mientras que en tu pantalla debes ver tu personaje a velocidad normal y el m?o lento.
?Si yo me muevo a velocidad normal en mi pantalla,c?mo puedes verme t? a velocidad lenta en la tuya?
?Si te mueves a velocidad normal en tu pantalla, c?mo puedes verte a velocidad acelerada en la m?a?
Disculpa si contin?o con esto a?n pensado que es imposible, pero tengo la esperanza que ?lguien me saque de mi ignorancia.
Much?simas gracias a todos los que escriban en este post de corte te?rico.
Demostracion por lo que es imposible lo que pides:
El tiempo es algo que fluye igual para toda la gente, es decir: si personaje A esta acelerado, B lo ve rapido pero A ve a B lento. Digamos que es un escenario con un arbol enmedio. Los 2 estan a 5 metros de el. Si ahora A tirase alante, como B lo ve acelerado, llegaria al arbol en 10 seg, pero para A, tardaria 20 seg porke se ve con velocidad normal, por lo que ocurre una parodia temporal:
- Para B, A llego al arbol en 10 seg
- Para A, el mismo llego al arbol en 20 seg
Y lo siento si decepcione o algo, pero creo que es una buena respuesta. Yo de tu haria que si A es acelerado, se vea rapido y el resto lo vean rapido, mucho mas sencillo y posible.
Saludos
Gracias Makero NOKAUBURE:
Ya sab?a de antemano que eso era imposible, pero hubiera sido fant?stico que se pudiera implementar de esa manera. ?Te inmaginas! Tener la ventaja de ver a todos m?s lentos para poder reaccionar mejor, mientras ellos te ven mucho m?s r?pido...
Pero que se le va a hacer. No se puede y ya.
Muchas gracias a todos por las ideas brindadas y hasta la pr?xima.
PD:
?Debo subirles el Karma a aquellos que respondieron? Estoy un poco perdido en esto del Karma y las recompensas...
Cita de: ferhand en Enero 12, 2012, 11:32:12 PM
Gracias Makero NOKAUBURE:
Ya sab?a de antemano que eso era imposible, pero hubiera sido fant?stico que se pudiera implementar de esa manera. ?Te inmaginas! Tener la ventaja de ver a todos m?s lentos para poder reaccionar mejor, mientras ellos te ven mucho m?s r?pido...
Pero que se le va a hacer. No se puede y ya.
Muchas gracias a todos por las ideas brindadas y hasta la pr?xima.
PD:
?Debo subirles el Karma a aquellos que respondieron? Estoy un poco perdido en esto del Karma y las recompensas...
Yo estuve pensando en tu pregunta los ?ltimos d?as, aunque despu?s de un tiempo descubr? que era imposible ):.
He seguido pensado en algunos ratos haber si hay alguna forma de simularlo, de momento la mejor idea que se me ha ocurrido es que al activar tu poder se comiencen a almacenar todas las posiciones de todos los dem?s jugadores en el nivel en una "Queue" y reproducirlas lentamente, hasta que termine el poder, claro que al terminar el poder habr?a un desfase de tiempo y en realidad los enemigos no estar?an en el lugar que se ve?an en tu poder, para resolver eso lo ?nico que haces es que al terminar el poder todos los jugadores se muevan en c?mara muy r?pida hasta llegar a su posici?n real, el ?nico problema es que los dem?s jugadores te ver?n movi?ndote hacia donde ellos ya no est?n xD pero algo que puedes hacer es que en sus pantallas simplemente desaparezcas (ya sabes con ese efecto de reducci?n de alfa) y reaparezcas cuando termine tu poder.
De cualquier modo no es lo que tu quer?as y depende del tipo de juego que quieres.
Y conforme a lo del karma, la respuesta es NO tu decides a quien le quieres subir karma y por que raz?n, aunque en general se usa para agradecer a quienes te han ayudado, la gente no responde preguntas o ayuda a la dem?s gente por karma (o al menos yo no lo hago xD).
Gracias Makero brunoxzx:
Yo em he estado debatiendo por varios meses desde que comenc? un dise?o esperimental de un MMORPG.
Este tipo de desfasajes del tiempo hubieran sido lo m?s interesante del mismo, pero al darme cuenta de su imposibilidad, juguete? con la idea de hacerlo posible todo este tiempo y quise darme la oportunidad de estar equivocado al ponerlo en el foro.
En cuanto a lo del Karma. No lo tomaba como un pago, aunque s? me siento agradecido con todos los que respondieron, pues dedicaron unos minutos a pensar en mi propuesta.
A todos y a ti, makero brunoxzx, muchas gracias y hasta la pr?xima.
Entonces, declaro oficialmente cerrado este tema.
El problema con lo que planteas hacer no es la programaci?n en s? ni la plataforma ni el lenguaje sino en la f?sica misma :P
pasa que puedes hacer que unos personajes se muevan r?pido o lento pero no puedes cambiar la perspectiva temporal del observador sin que cambies la relatividad del tiempo en ?l; o sea, si quieres que vea todo lento el espectador deber? moverse (a trav?s del tiempo) m?s lento con respecto al resto del mundo (y viceversa), interesante, no?
Algo que (tal vez) se pueda hacer es que para dar un muy simple efecto de lentitud en el tiempo es que los dem?s jugadores vean a cuadros o cortos su pantalla... me refiero a que se congele la imagen que ellos ven en pantalla y que se actualice al siguiente segundo pero que se vuelva a congelar... algo as? como el retraso que se obtiene al jugar un superpesado juego en l?nea con medio mega de internet, o tratar de jugar arkham asylum en una PC lenta. :-[