CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 19 Sep 2020 01:36

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 22 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 09 Sep 2004 11:43 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
El ver tantas secciones de los foros todaví­a vací­as me anima a romper el hielo. Voy a inaugurar esta parte dedicada a la creación con una cuestión técnico-filosófica, como me gustan a mí­. Aunque está relacionada con la creación de parsers, es algo que se manifiesta externamente en lo que percibe el jugador y en lo que, por tanto, cualquiera puede aportar opiniones valiosas.

Este problema lo tengo en mente ya desde hace mucho; pero mucho tiempo, en concreto cuando diseñé el modelo teórico del AGE hace tres años, y todaví­a no he encontrado una solución que me satisfaga totalmente. Con alguna gente ya lo he discutido en #caad, #aetheria y algún otro canal; pero creo que es mucho mejor discutirlo aquí­ donde todas las ideas que aporte la gente quedarán ordenadas y accesibles. (¡viva el foro!)

El problema es tan simple como esto: supongamos que tenemos un rí­o que discurre de norte a sur, y cuyas orillas están separadas por un puente de madera. Hay dos personajes, por ejemplo un jugador y un PSI: uno de ellos está en la orilla este y otro está en la orilla oeste.

La cuestión filosófica es: ¿qué deberí­a pasar si, en el mismo momento (o en el mismo turno, en parsers basados en turnos), el jugador y el PSI deciden cruzar el puente, pasando a la orilla opuesta?

Con el modelo de mundo que tengo yo ahora mismo en el AGE, los personajes se cruzarí­an y acabarí­an cada uno donde estaba el otro, sin poder hacer nada para evitarlo. La salida serí­a algo así­ como:

Personaje A:

> ir al este
Cruzas el puente hacia el este.
Estás en la orilla este. Es preciosa.
El personaje B se va hacia el oeste.
>

Personaje B:

> ir al oeste
El personaje A llega del este.
Cruzas el puente hacia el oeste.
Estás en la orilla oeste. Es muy hermosa.
>

Es decir, los personajes ven el movimiento del otro antes o después de ver la descripción del movimiento (uno antes y otro después) pero incluso si lo ven antes ya han enviado la orden de moverse, y se cruzan de todos modos.

En Inform, por lo que alguien me dijo en algún momento, sucederí­a algo parecido.

Lógicamente, esto no parece muy deseable desde el punto de vista del realismo. Imaginaos la escena donde el personaje A es el gran Eudoxio y el personaje B es un malvado orco que quiere matarlo: resultarí­a inverosí­mil que se cruzaran tranquilamente en el puente, no haciendo nada a pesar de haberse visto.

A mí­ sólo se me ocurren las siguientes ideas para resolver el problema:
- Sistema de turnos muy simple: dos personajes no pueden mover a la vez, primero mueve uno y luego otro, como en el juego de la oca. Esto resuelve por completo el problema pero no me parece aceptable, pues da lugar a un modelo de mundo muy simplista, y es incompatible con opciones del AGE como multijugador o tiempo real.
- Crear un hipotético sistema de "interrupciones": que si tú estás llevando a cabo una acción determinada y mientras tanto ha sucedido algo, tengas la opción de interrumpir la acción. Serí­a algo así­ como:

Personaje B:

> ir al oeste
El personaje A llega del este. ¿Quieres seguir andando de todos modos?
> sí­
Cruzas el puente hacia el oeste.
Estás en la orilla oeste. Es muy hermosa.

Esto también puede ser un "parche" para el problema, lo malo es que sea peor el remedio que la enfermedad. Un mensaje como el de la entrada anterior podrí­a resultar pesado por ejemplo en una persecución, donde siempre quieres seguir andando, por supuesto. Además, no es del todo trivial implementarlo no habiendo pensado en ello desde el principio; pero si realmente mereciera la pena se podrí­a hacer.

¿Qué opináis de todo esto? ¿Esa solución os parece aceptable o no? ¿Conocéis algún parser que haya resuelto este problema de forma satisfactoria? ¿Tenéis alguna otra idea?

Espero no haberme enrollado demasiado y que alguien tenga la moral suficiente para llegar hasta aquí­ y contestar. :)

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 09 Sep 2004 15:35 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 21:40
Mensajes: 1444
Ubicación: Nímgar, Ciudad Lunar
Tu problema tiene una solución mucho más sencilla que todo eso. Haz que el puente sea una localidad.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 09 Sep 2004 16:08 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Sep 2004 12:53
Mensajes: 1150
El problema serí­a el mismo, ¿no?

Si un personaje está al principio del puente y otro en medio se podrí­an cruzar de la misma manera.

_________________
- Lenko -


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 09 Sep 2004 16:14 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Lenko escribió:
El problema serí­a el mismo, ¿no?

Si un personaje está al principio del puente y otro en medio se podrí­an cruzar de la misma manera.


Exacto, lo iba a poner pero Lenko se me ha adelantado... :wink:

El problema no es tan sencillo, porque aunque pongas tantas localidades el terreno sigue siendo discreto, es decir, sigue habiendo unas localidades y unos caminos entre ellas. Haciendo una localidad puente tendrí­as el problema entre el puente y una orilla, en vez de entre una orilla y otra. Puedes hacer las localidades que quieras, que hasta si asignas una a cada tabla del puente tendrás el problema:

Estás en la tabla número 37 del puente, empezando desde el oeste.
> ir al este
El otro personaje llega desde el este.
Das un paso hacia el este.
Estás en la tabla número 38 del puente, empezando desde el oeste.


Vamos, que no es un problema de cómo se diseña una aventura concreta; sino de modelo de mundo :?

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 09 Sep 2004 16:36 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Mar 2004 21:54
Mensajes: 378
Ubicación: La red
¿Y hacer también localidades con las puertas? Busquemos una solucion mejor, Mel, ya tienes tema para tu siguiente entrega de "orientandonos a objetos" :D


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 09 Sep 2004 19:45 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4651
A mi me parece que si tienes ese problema es porque te lo buscas. Puedo comprenderlo en un sistema multijugador, pero en un sistema para un único jugador el programador sólo puede tener ese problema si quiere, porque siempre podrá evitarlo cambiando levemente el guión, el modo de movimiento de PSIs, etc.

Por ejemplo en la rutina de movimiento del orco del ejemplo el orco siempre puede decidir por programación no avanzar en el puente si ve que el jugador viene, es decir:

si (la orden del jugador != "este" y (jugador en otro lado del puente)) ir al oeste, en otro caso escribe "El orco desenvaina al verte acercarte".

Esto es una salida programativa, pero como he dicho antes siempre te puedes salir 'por la tangente' modificando el guión para no tener ese problema.

El problema evidentemente no es evitable de ninguna de las maneras que propongo en un sistema multijugador donde ninguno de los dos 'cruzados' puede ser programado, dado que ambos son humanos, y en esos casos, la verdad, no le veo solución, aunque sinceramente, no nos preocupemos, dificilmente se encontraran dos jugadores que jueguen a la vez una aventura multijugador mas que para probar un poco, y en esos hipoteticos casos es dificil que encima se crucen X-D. En la carrera, estudiando concurrencia, el propio profesor explico que una de las posibles soluciones a un problema de posible acceso simultáneo a algo es simplemente ignorarlo, y que si las probabilidades son suficientemente bajas incluso funciona :lol:

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Sep 2004 00:27 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 21:40
Mensajes: 1444
Ubicación: Nímgar, Ciudad Lunar
Pues no veo el problema la verdad.

Si tienes un escenario en la forma:

Orilla derecha <--> Orilla izquierda

y pueden verse la una desde la otra, es posible (y desagradable)
que los dos actores se crucen una y otra vez.

Pero si tienes un escenario:

Orilla derecha <--> puente <--> Orilla izquierda

y pueden verse entre sí­ simplemente se encontrarán en el puente.

Ahora bien, si lo que te molesta es que al salir del puente el otro personaje se haya ido hacia el puente. Pues evidentemente la cosa no tiene ninguna solución.

A mí­ sinceramente no me parece un problema importante, simplemente porque no le veo ninguna utilidad.

¿Se puede 'resolver'? Pues sí­, claro pero el coste es bastante elevado. Tendrás que montar un modelo del mundo como este:

1. Se le pregunta a los jugadores qué desean hacer.
2. Se ejecutan las funciones de 'intención' de los PNJs (el equivalente a preguntarle a los jugadores)
3. Una vez declaradas todas las intenciones, se tiene que ejecutar un motor que permita capturar las intenciones cruzadas.

Un horror de programación tanto para hacer el modelo del mundo como para luego usarlo en una aventura concreta, y sigo sin ver
completamente la utilidad.

La gente se cruza por los pasillos todo el tiempo en la realidad,
y si quieres poder 'detener' a alguien serí­a mejor que se pueda ver a lo lejos (varios localizaciones) a los jugadores PNJ, que pongas algunas funciones para llamar al PNJ (para que se pare y poder
pillarlo) y cambiar a mano el estado del PNJ para que se pare si no deberí­a ignorarte.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Sep 2004 12:03 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Mel Hython escribió:
A mí­ sinceramente no me parece un problema importante, simplemente porque no le veo ninguna utilidad.


Hombre, yo no digo que sea un problema importantí­simo, por el momento puedo dormir a pesar de él. Pero tanto como ninguna utilidad... Yo aspiro a poder crear aventuras con PSI's creí­bles, y no resulta muy creí­ble que tú entres en un puente y un orco salga y no podáis hacer otra cosa que cruzaros como tontos.

Mel Hython escribió:
¿Se puede 'resolver'? Pues sí­, claro pero el coste es bastante elevado. Tendrás que montar un modelo del mundo como este:

1. Se le pregunta a los jugadores qué desean hacer.
2. Se ejecutan las funciones de 'intención' de los PNJs (el equivalente a preguntarle a los jugadores)
3. Una vez declaradas todas las intenciones, se tiene que ejecutar un motor que permita capturar las intenciones cruzadas.


Ya, eso serí­a una especie de prevención del interbloqueo. El problema es qué haces cuando detectas que dos personajes se van a cruzar. ¿Poner un mensaje como "no puedes entrar en el puente, porque el orco está saliendo en este momento"? ¿Tener bloqueado a uno de los personajes unas cuantas unidades de tiempo, sin decirle nada en especial? Bueno, no serí­a el colmo del realismo; pero desde luego es mejor que el que simplemente se crucen. Pensaré en ello.

Uto escribió:
A mi me parece que si tienes ese problema es porque te lo buscas. Puedo comprenderlo en un sistema multijugador, pero en un sistema para un único jugador el programador (...) siempre podrá evitarlo cambiando levemente el guión, el modo de movimiento de PSIs, etc.

Por ejemplo (...) el orco siempre puede decidir por programación no avanzar en el puente si ve que el jugador viene (...)

Esto es una salida programativa, pero como he dicho antes siempre te puedes salir 'por la tangente' modificando el guión para no tener ese problema.


Lo de modificar el guión puede valer perfectamente para personajes que están ahí­ para plantear un acertijo, recibir un objeto y demás, donde al fin y al cabo el movimiento no es algo importante sino que sólo se mueven para dar un poco más de realismo. Pero cuando pienso en este problema estoy pensando fundamentalmente en aventuras más roleras (que ya sabes que es un enfoque del AGE) con combates y con PNJ's que persigan al jugador o que se escapen de él. En ese caso, lo ideal es dotar a los PSI's de unos algoritmos generales para moverse y que el alcance de sus movimientos no esté necesariamente restringido por el guión.

En cuanto a la solución de programación que propones, eso ya es más interesante. Se parece a lo que dice Mel pero hecho más ad hoc, en lugar de implementarse en el parser. Seguramente muchas situaciones se pueden resolver así­; pero no me convence mucho por dos motivos: el primero es porque me parece que éste es un problema de modelo de mundo, y no creo que sea adecuado pasar al programador la responsabilidad de resolverlo con chapucillas ad hoc. En un parser que te da todas las herramientas para que crees personajes y esos personajes se muevan, creo que un problema como éste deberí­a venir resuelto de fábrica. Claro que ya digo, deberí­a, otra cosa es que sea posible, que exista una solución buena.

El segundo motivo es que; aunque esa solución pudiese funcionar bien en Inform, en AGE no resolverí­a todas las situaciones. El motivo es que el modelo de mundo de AGE no está basado en turnos; sino en unidades de tiempo. En un momento dado, un PSI puede decidir moverse hacia el este. Este movimiento le puede llevar, por ejemplo, treinta unidades de tiempo. Si diez unidades de tiempo después tú decides moverte hacia el oeste, el PSI ya está moviéndose y no lo puedes parar (a no ser que se añadiera un sistema de interrupciones como mencioné antes), con lo cual os cruzaréis. En todo caso habrí­a que parar siempre al que tomase la decisión de moverse de segundo, lo cual implicarí­a tener que parar a veces al jugador y no al PSI.

Uto escribió:
El problema evidentemente no es evitable de ninguna de las maneras que propongo en un sistema multijugador (...), aunque sinceramente, no nos preocupemos, dificilmente se encontraran dos jugadores que jueguen a la vez una aventura multijugador mas que para probar un poco, (...)


Ah, ah, eso ya lo veremos. :twisted:

Gracias por vuestras respuestas.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Sep 2004 12:30 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 21:40
Mensajes: 1444
Ubicación: Nímgar, Ciudad Lunar
Al escribió:
Mel Hython escribió:
¿Se puede 'resolver'? Pues sí­, claro pero el coste es bastante elevado. Tendrás que montar un modelo del mundo como este:

1. Se le pregunta a los jugadores qué desean hacer.
2. Se ejecutan las funciones de 'intención' de los PNJs (el equivalente a preguntarle a los jugadores)
3. Una vez declaradas todas las intenciones, se tiene que ejecutar un motor que permita capturar las intenciones cruzadas.


Ya, eso serí­a una especie de prevención del interbloqueo. El problema es qué haces cuando detectas que dos personajes se van a cruzar. ¿Poner un mensaje como "no puedes entrar en el puente, porque el orco está saliendo en este momento"? ¿Tener bloqueado a uno de los personajes unas cuantas unidades de tiempo, sin decirle nada en especial? Bueno, no serí­a el colmo del realismo; pero desde luego es mejor que el que simplemente se crucen. Pensaré en ello.



No, yo estaba pensando más bien en obligar al programador
de la aventura a picar el código necesario para tratar todas
estos eventos 'cruzados'. Por eso te decí­a que es demasiado costoso para el programador de aventuras.

Sé que mucha gente se me quejaba de este tipo de cosas, por ejemplo en APACHE... bueno, yo nunca lo he entendido,
me gustan las cosas así­.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Sep 2004 13:12 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4651
Al-Khwarizmi escribió:
En cuanto a la solución de programación que propones, eso ya es más interesante. Se parece a lo que dice Mel pero hecho más ad hoc, en lugar de implementarse en el parser. Seguramente muchas situaciones se pueden resolver así­; pero no me convence mucho por dos motivos: el primero es porque me parece que éste es un problema de modelo de mundo, y no creo que sea adecuado pasar al programador la responsabilidad de resolverlo con chapucillas ad hoc. En un parser que te da todas las herramientas para que crees personajes y esos personajes se muevan, creo que un problema como éste deberí­a venir resuelto de fábrica. Claro que ya digo, deberí­a, otra cosa es que sea posible, que exista una solución buena.

Gracias por vuestras respuestas.


Sí­, mi solucion se puede decir que hay que hacerla una vez por posible conflicto, lo cual dependiendo del numero de posible conflictos y de la variabilidad de los mismos (no es lo mismo un orco que se mueve por un puente o camino cerrado que uno que se mueve por un bosque y con el que también te puedes cruzar) puede hacer el problema inabordable por el programador (aparte de costosí­simo).

Una solucion general incluida en el modelo de mundo no puede ser facil de implementar, y menos en el modelo basado en tiempo de AGE, me temo. Para empezar la solucion deberí­a 'conocer' la situacion en el espacio de las ordenes de desplazamiento, es decir, algo asi como saber que S = -N igual 1 = -(-1), es decir, tener claro un sistema de coordenadas para poder 'entender' cuando dos movimientos 'se cruzan'. Quizá eso se pudiera solucionar con una aproximación que sin tener ese conocimiento vea cuando la localidad de destino de uno es la del otro y viceversa, pero eso puede tener excepciones como los laberintos, por lo que la solucion no es perfecta.

En tu caso (basado en tiempo) es aun más dificil y sin un sistema de interrupcion de tareas no es factible. La dificultad de implementar eso sólo tu puedes decirlo :)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 10 Sep 2004 15:25 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Sep 2004 12:53
Mensajes: 1150
í‰ste problema es una caso muy tí­pico de los MUDs, sobre todo de aquellos donde está permitido que los jugadores se ataquen unos a otros.

Creo que la solución, como dice Uto, no es posible sin un sistema que interrumpa el comando que vas a realizar.

Aquí­ el problema radica en saber quién ha actuado primero y dónde se va a resolver la acción. El problema de cruzarse es que ocurre en un punto intermedio entre dos habitaciones. Como no vamos a crear ese punto intermedio debemos elegir una de las dos como destino de la acción.

Creo se deberí­a tener en cuenta quién estárí­a más cerca de la habitación del otro en caso de que se pudiera determinar. Por ejemplo si el puento tiene 100 metros y el orco y yo nos encontráramos a 10 metros de su lado la acción se deberí­a resolver en su habitación y no en la mí­a. A él se le informa que no ha podido moverse porque se ha encontrado conmigo y yo me moverí­a a la habitación y se producirí­a el encuentro.

Todo ésto sólo ocurrirí­a en caso de que alguno de los seres quisiera y pudiera detener al otro (habrí­a que implementar atributos como 'agresivo', 'iniciar_conversación', 'ignorar_conversación', etc.)

Dirí­a que hay cuatro casos posibles:
* Juegos con tiempo controlados por turnos.
- Versión no rolera:
No veo otra solución que utilizar el azar para determinar la habitación de destino
- Versión rolera:
Se utiliza alguna caracterí­stica de los seres (como velocidad o movimiento en caso de que exista) para decidir la habitación de encuentro.
* Juegos en tiempo real (AGE).
- Versión no rolera:
Se puede determinar quién comenzó primero la acción así­ que ese ser tiene posibilidad de moverse y es al otro al que se detiene.
- Versión rolera:
Se calcula la "distancia recorrida" en función del tiempo de inicio de la acción, la distancia y las caracterí­sticas de movimiento o velocidad.

Imaginemos una versión bestia del asunto:
El orco (movimiento 80%) está en la parte alta de una cuesta y el elfo (movimiento 140%) en la parte baja. Según el mapeado moverse de arriba a abajo cuesta 10 unidades de tiempo y de abajo a arriba 30. El elfo se mueve primero (tiempo 0) y el orco 15 unidades de tiempo después.

El orco tarda: 15 + (10 / 80%) = 27,5 unidades de tiempo
El elfo tarda : 30 / 140% = 21,43 unidades de tiempo

Es decir, el elfo llegarí­a antes al punto inicial del orco que el orco al del elfo así­ que definimos que el encuentro se produce en lo alto de la cuesta. Detenemos al orco y movemos al elfo.

¿Cuánto tiempo ha transcurrido? No se puede hacer real así­ que tal vez el tiempo del más rápido en llegar estarí­a bien.

¿Y si se cruzan más de dos, en qué habitación se produce el encuentro? Siempre en la habitación de destino del más rápido.

¿Sirve?

_________________
- Lenko -


Arriba
 Perfil  
 
NotaPublicado: 10 Sep 2004 18:49 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Mar 2004 21:54
Mensajes: 378
Ubicación: La red
¿Realmente merece la pena complicarse la vida para programar algo que detecte cada movimiento del juego e incluso interrumpir la acción para preguntar al jugador si está aún seguro de moverse? No sé, como en otras veces me irí­a a cuidar la jugabilidad...

Ejemplo práctico: esto mismo que estáis exponiendo ocurre en Cirith Ungol de Jarel, no sé si lo arreglo en una de sus últimas "revirsiones" (palabro mezcla de revisión y versión). En este juego el jugador morí­a directamente si ocurrí­a algo similar, Frodo estaba en la casilla A, la B estaba vací­a pero a ella se dirigí­an Frodo y los ocupantes de C, la patrulla orca. Resultado: desagradable muerte súbita.

¿Qué podrí­a decir el manual de ética aventurera? Vive y deja vivir, creo que deberí­an evitarse estas muertes trágicas que hacen extender la mala fama de Jarel como creador de mundos imposibles :?

Aplicado al universo Alquarismico en el que proliferan combates, orcos y escaramuzas, pues cambiarí­a simplemente el mensaje que sale al iniciar el combate, tipo Bards Tale... "¡Te has topado con una patrulla orca!" (Música chirriante) --> Rutina de combate :mrgreen:


Arriba
 Perfil  
 
NotaPublicado: 10 Sep 2004 18:53 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 21:40
Mensajes: 1444
Ubicación: Nímgar, Ciudad Lunar
Justamente lo que me parece a mí­

dhan escribió:
Ejemplo práctico: esto mismo que estáis exponiendo ocurre en Cirith Ungol de Jarel, no sé si lo arreglo en una de sus últimas "revirsiones" (palabro mezcla de revisión y versión). En este juego el jugador morí­a directamente si ocurrí­a algo similar, Frodo estaba en la casilla A, la B estaba vací­a pero a ella se dirigí­an Frodo y los ocupantes de C, la patrulla orca. Resultado: desagradable muerte súbita.

Aplicado al universo Alquarismico en el que proliferan combates, orcos y escaramuzas, pues cambiarí­a simplemente el mensaje que sale al iniciar el combate, tipo Bards Tale... "¡Te has topado con una patrulla orca!" (Música chirriante) --> Rutina de combate :mrgreen:


Sacto... yo creo que con algo así­, dar algunas oportunidades de interacción es más que suficiente...


Arriba
 Perfil  
 
 Asunto: Quiero opinar
NotaPublicado: 11 Sep 2004 04:37 
Soy nuevo en esto, pero creo que si bien este es un problema pequeño, es uno que debe de ser resuelto.

Porque?, simplemente porque es una de las cosas que harí­an perder el realismo al juego. Cuando creamos un juego nuevo nos esforzamos por sumergir al jugador en un mundo fantástico, haciendolo abandonar su cuerpo transportandose por medio del teclado a un universo completamente distinto, y son problemas como este los que le recuerdan al jugador que sólo es una fantasí­a y lo hacen volver al mundo real diciendole que "Solo es otro estúpido programilla de computadora".

La solucion que se me ocurre es la siguiente:

Si jugador1 quiere cruzar al mismo tiempo que jugador2 por el puente, el interprete detecta un cruce y ejecuta lo siguiente:

evalua la relacion entre ambos sujetos
en caso de ser enemigos el mas debil o el ultimo en intentar cruzar es regresado a la habitacion inicial junto con el otro personaje resibiendo un mensaje como "al intentar cruzar te has topado de narizes con jugador2 quien de un empujon te ha hecho retroceder".

en caso de no existir enemistad entre ambos personajes se hace un sorteo que arroje solo dos respuestas.

de ser verdadero se sigue el mismo procedimiento antes citado
de ser falso antes de que ambos crucen el puente reciben el mensaje "Al cruzar pasas junto ha jugadorX quien te sonrió presumiendo su diente de oro".

a esto se le pueden añadir otras caracteristicas como la velocidad, la distancia, la fuerza, el tiempo y todo lo que ustedes ya han mensionado, y Si bien el costo es demasiado para un programador seria bueno que se le pudiera otorgar a este una forma de hacerlo.

otra razon que se me ocurre del porque solucionarlo es simplemente para demostras que tiene solucion. ¿Alguien ha puesto un huevo de pie?.


Arriba
  
 
 Asunto:
NotaPublicado: 11 Sep 2004 15:35 
Bien, bien, ya están surgiendo ideas concretas y diferentes alternativas, eso me gusta...

Básicamente, de los últimos mensajes extraigo las siguientes conclusiones resumidas:

- El comportamiento en un cruce no deberí­a ser el mismo si los personajes que se cruzan son amigos que si son enemigos.

- En el caso de que sean amigos, tenemos las siguientes opciones:
(a) * La que yo sugerí­a al principio de preguntarle a cada personaje si está seguro de moverse: tiene el inconveniente de que puede lastrar algo la jugabilidad, como se ha comentado.
(b) * Detener a uno de los personajes, diciéndole "no puedes avanzar porque X llega desde el norte": menos realista, porque lo cierto es que por los caminos suelen caber dos personas, y puede ser excesivo teniendo en cuenta que el personaje es amigo y no te va a hacer nada.
(c) * No hacer nada para resolver el cruce en este caso, salvo tal vez poner un mensaje en plan "de camino al este, te cruzas con X". Tiene el inconveniente de que no resolvemos el problema, que sigue existiendo. Pero esto tal vez sea generalmente aceptable en el caso de que los personajes no sean enemigos. Además, la posibilidad de incluir un mensaje explicativo mitiga un poco el problema, al menos recibir un mensaje de que te has cruzado parece más elegante que recibir un mensaje de movimiento del otro personaje cuando estás en una de las dos habitaciones y no poder reaccionar ante él.

- En el caso de que sean enemigos:
* En este caso está más claro, parece que casi todos estamos de acuerdo (porque a mí­ también me gusta la idea) en que lo que procede, dado que es absurdo que los enemigos se crucen y lo que te pide el cuerpo en esas ocasiones es un buen combate; es que uno de los dos personajes sea detenido (cuál de ellos es detenido se puede decidir en el AGE en función de cuánto camino lleva recorrido sin ningún problema, pues los caminos entre habitaciones tienen un peso en tiempo)
* Si encima se pone un mensaje efectista, como dice dhan, mejor:
"¡Tu intento de ir hacia el norte se ve frustrado por la repentina aparición de un guardia orco!"
o bien, si es el otro quien se detiene:
"¡A tu llegada sorprendes a un guardia orco que se dirigí­a hacia el sur!"
* Se me ocurre que esto incluso podrí­a dar lugar a mejoras roleras, como que el personaje que ha sido "sorprendido" por otro esté aturdido durante unos momentos (ir tan tranquilamente por el puente y cruzarse con un orco desconcierta un poco).

- Por lo tanto, en el caso de los enemigos estoy por implementar esta opción y en el caso de los personajes amigos de momento dejar los cruces tal como están, con posibles miras a implementar alguna de las otras opciones en el futuro.

- En cuanto al coste de la implementación, no hay problema. No cambia el orden de complejidad del movimiento de los personajes si se hace de la siguiente manera: en la rutina del movimiento del personaje, obtener los personajes que hay en la habitación destino, ver si alguno de ellos se está moviendo hacia la nuestra, y en ese caso calcular quién se tiene que detener en función de las unidades de tiempo. Lo que sí­ que se incrementa algo es la dificultad de programar PSI's que se muevan, porque el programador debe tener en cuenta que cuando da al PSI una orden de movimiento dicha orden puede fallar al cruzarse con un enemigo.

Por cierto...

Paynalton escribió:
Porque?, simplemente porque es una de las cosas que harí­an perder el realismo al juego. Cuando creamos un juego nuevo nos esforzamos por sumergir al jugador en un mundo fantástico, haciendolo abandonar su cuerpo transportandose por medio del teclado a un universo completamente distinto, y son problemas como este los que le recuerdan al jugador que sólo es una fantasí­a y lo hacen volver al mundo real diciendole que "Solo es otro estúpido programilla de computadora".


í‰ste es precisamente el espí­ritu que busco en la creación de aventuras. Vale, tal vez me coma el coco demasiado con problemas como éste; pero es que por pequeños que sean me parece que debemos intentar resolverlos. Si nos conformamos con lo que tenemos diciendo "bah, este problema no es tan grande y no merece la pena pararse a pensar en él", al final conseguiremos que los juegos de texto no evolucionen y que tengan una serie de detalles pequeños individualmente; pero que en conjunto hagan que el realismo y la interactividad se resientan.

Gracias a todos por las nuevas respuestas.


Arriba
  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 22 mensajes ]  Ir a página 1, 2  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM