Hi.
¿Cómo administrarías los triggers y la interactividad de un escenario?
Para los triggers, he pensado en crear un tipo de objeto (llamémoslo Trigger) el cual sería invisible para el jugador (en el editor podría ser cualquier tipo de shape), y cuando el jugaro tocara, ejecutase las acciones pertinentes descritas en un archivo asociado al Trigger.
Y para la interactividad con objetos, pues crear otro tipo de objeto (llamémoslo InteractiveObject ?¿), el cual tendría otro archivo asociado, que se leería cuando el jugador, tocase, atacase, accionara, etc. dicho objeto.
¿Qué os parece?
Saludos.
PD: Si os sirve de algo, estoy pensando en un RPG.
Yo en mi juego lo he hecho asi. Los defino desde el MAX, con gizmos. Y asi tambien mola porque le puedes asociar movimientos de camara y demas cosas, para hacer cinematicas con el motor.
Échale un ojo al Crisol Engine ;)
http://usuarios.lycos.es/crisolengine/La idea básica sería usar Observers(Listeners en Java)
¿Podrías explicar el concepto de Observers Grugnorr?
Gracias.
http://calisto.sip.ucm.es/people/pedro/das...gn_patterns.zipAhí tienes el design patterns entero
Aquí cada patterns en un pdf:
http://calisto.sip.ucm.es/people/pedro/das/Cuando tenga algo de tiempo te respondo mejor ;)
PD: Dale las gracias a Daventry por los links, es de una asignatura que sólo pueden pillar los de la superior :(
Muchas gracias.
Al trabajar con triggers lo que he hecho yo es dividir el problema en dos partes:
1. La parte de la logica del trigger, el trigger en si. Es codigo puro que implementa la logica del trigger
2. Variables. Tengo tres tipos basicos, estas si se pueden manejar desde MAX pe.
tipos:
- Regiones
- Cronometros
- Numerico
El trigger esta implementado mediante un lenguaje script y tiene acceso a las variables.
El esquema es muy simple, no creo que sea necesario usar un patron observador.
Yo opino igual que TurMach ( Marc? :b )
Hola,
un listener es un objeto que se dedica a "escuchar" eventos del tipo que tiene registrado. Por ejemplo: tu tienes un boton, y le añades un listener de acción (actionListener en java). En java, eso significa que si se pulsa el botón, se ejecuta el código del listener (por ejemplo, cambias de color el botón). Algo como:
class x {
...
JButton miBoton;
/*hacemos el boton*/
miBoton.addActionListener(new MiListener);
...
}
Tu tendrás otra clase que sea el MiListener, que definirá que hace el botón cuando se pulse. Podrías hacer que el botón escuchara otros eventos (que el ratón pase por encima, que lo arrastren,...).
Vamos, resumiendo: tu le dices a cada componente a que tipo de acciones responde, y cuando se produce esa acción, otro trozo de código se encarga de determinar que pasa.
Espero que te sirva de algo (madre que dormido estoy ya a estas horas...). Un saludo!
Vicente
Lo que voy a hacer es crear el código de la función en C++, y usará las variables correspondientes en cada situación leyéndolas del escenario creado en MAX.
Ejemplo:
Cuando el personaje se acerque a menos 1 metro de una caja, esta explotará.
En MAX, en las "User defined properties", escribiré:
Trigger (Variables) Función_a_Ejecutar (Variables)
TriggerDistance (Player, 1) FunctionExploit (Box)
Esto básicamente, llamará a la función FunctionExploit con el parámetro Box (objeto a explotar) cuando el objeto Player esté a 1 metro o menos de distancia.
A grosso modo, esto es lo que haré.
Saludos.