Eventos
Dónde y cuándo usar los comandos

Los comandos de Entidad 3D te permiten realizar gran variedad de tareas durante el transcurso de tu juego para personalizar al máximo los mecanismos de funcionamiento de todo lo que sucede en tu juego y de esta forma poder controlar lo que hace o intenta hacer el jugador o los Bots. Estos comandos los debes escribir en el interior de ficheros .INI que debes crear y editar con cualquier sencillo editor de textos tipo Notepad o similar.

Los ficheros deben tener la extensión .INI ( por ejemplo proceso.ini ) y siempre deben estar en la carpeta comandos que encontrarás dentro de la carpeta principal de Entidad 3D.


Los comandos que debes introducir en esos ficheros .INI, sólo tú podrás decidirlo después de estudiar qué realiza cada comando y cómo lo realiza. De esta forma podrás seleccionar de manera correcta los comandos más adecuados en cada momento según las situaciones particulares que quieras establecer o controlar en tu juego.


La siguiente tabla muestra las diversas situaciones que existen para poder lanzar los ficheros de comandos .INI:


Evento Entidad Parámetro Ejemplos para su uso
El jugador intenta abrir una puerta Door CommandsFile · Controlar si abrir o no la puerta en función de si el jugador lleva una llave o un cristal.
· Presentar un mensaje al jugador al abrir la puerta.
· Premiar al jugador al conseguir abrir la puerta.
· Informar al jugador de lo que necesita para abrir esa puerta.
Un Bot enemigo o personaje intenta abrir una puerta Door CommandsFileE · Controlar si abrir o no la puerta a ciertos enemigos.
· Informar al jugador que hay personajes secundarios que están abriendo ciertas puertas.
Una puerta recibe un disparo del arma del jugador Door CommandsFile2 · Abrir trampillas sólo si el jugador dispara contra ellas.
· Enviar enemigos al jugador por abrir la puerta haciendo tanto ruido.
El jugador se sube a un ascensor MovingPlat CommandsFile · Controlar si activar el ascensor en función de si el jugador lleva el objeto adecuado.
· Bloquear ascensores si antes no se han realizado ciertas tareas.
Un Bot enemigo o personaje se sube a un ascensor MovingPlat CommandsFileE · No permitir a enemigos que sigan al jugador usando ciertos ascensores.
· Activar ascensores de servicio sólo para enemigos.
Un ascensor recibe un disparo del arma del jugador MovingPlat CommandsFile2 · Hacer llegar una plataforma móvil al jugador si le alcanza un disparo.
· Hacer bajar un ascensor averiado sólo si recibe un disparo en sus controles.
El jugador pisa una plataforma de teletransporte Teletransporte CommandsFile · Controlar si teletransportar jugadores a otra posición del nivel.
· Transportar al jugador a otra dimensión o planeta si lleva el objeto adecuado.
· Transportar al jugador a un piso superior del nivel en juegos online.
Un Bot enemigo o personaje pisa una plataforma de teletransporte Teletransporte CommandsFileBot · Controlar si teletransportar Bots a otra posición del nivel.
· Transportar al Bot fuera del alcance del jugador.
· Transportar al Bot a un piso superior del nivel en juegos online.
Al morir un Bot enemigo o personaje BotActorStart CommandsFile · Premiar al jugador por eliminar el enemigo final de un nivel.
· Entregar al jugador documentos que llevaba el enemigo muerto.
· Penalizar al jugador por haber matado a la hija del Rey.
Al sufrir daño el jugador Configuracion FicheroComandosSalud · Avisar al jugador que tenga más cuidado.
· Hacerle perder algún tipo de energía adicional si baja por debajo del 10% de salud.
Al morir el jugador Configuracion FicheroComandosMorir · Eliminar objetos del inventario del jugador.
· Reproducir una música o efecto de sonido.
Al finalizar la partida Configuracion FicheroComandosFinal · Informar al jugador de su fracaso en la misión.
· Reproducir una música o efecto de sonido.
Al reaparecer el jugador después de morir Configuracion FicheroComandosRespawn · Reposicionar al jugador aleatoriamente.
· Recordar al jugador cuál es su misión.
· Entregar objetos al jugador.
· Reposicionar objetos del nivel.
Cuando el jugador seleccione elementos en pantalla usando el ratón Configuracion FicheroComandosRatonIzq · Controlar qué opciones de un menú pulsa el jugador.
· Detectar qué botones del HUD pulsa el jugador.
El jugador toca un Bot enemigo o personaje BotActorStart Comandos_colision · Presentar el diálogo que muestra lo que el personaje le dice al jugador.
· Entregar al jugador una espada si el jugador lleva dinero en su inventario de objetos.
· Matar al jugador por tocar una serpiente venenosa.
Un Bot enemigo o personaje sufre daño al recibir un disparo del arma del jugador BotActorStart Comandos_impacto · Presentar un mensaje informando al jugador que este personaje no es un enemigo.
· Penalizar al jugador por intentar matar a un aliado.
El jugador toca un personaje o bloque estático SpecificActor

CommandModel
CommandsFile · Causar daño al jugador al tocar pinchos venenosos.
· Entregar contraseñas al jugador al tocar una consola de computadora.
· Presentar un texto que muestra el diálogo de un personaje.
Un personaje inmóvil o modelo 3D estático recibe un disparo del arma del jugador SpecificActor CommandsFile2 · Destruir objetos que revelen items que pueda recoger el jugador.
· Abrir una puerta en otra posición del nivel.
· Matar personajes estáticos.
Un bloque del nivel recibe un disparo del arma del jugador CommandModel CommandsFile2 · Romper cristales de las ventanas.
· Destruir zonas que impiden al paso del jugador.
· Activar resortes que no puede alcanzar el jugador.
Al pasar el jugador por una posición del nivel Command CommandsFile · Reproducir un efecto de sonido al cruzar por un arco.
· Cargar alguna variable que sirva como comprobante en otra parte del nivel de que el jugador alcanzó cierta posición.
· Encender luces de una habitación.
El jugador ha recogido un objeto ItemObject CommandsFile · Informar al jugador con mensajes de texto o de sonido, sobre la utilidad del objeto recogido.
· En otro lugar del nivel, hacer visible el personaje que necesita el objeto recogido.
· Restar salud al jugador si ha recogido un objeto radiactivo sin usar guantes. Guantes que debería llevar en el inventario de objetos.
Al dar comienzo el juego Configuracion FicheroComandos · Presentar al jugador información sobre su misión.
· Establecer ciertos valores iniciales de variables.
· Presentar marcadores personalizados.
El jugador usa el Menú de Acciones Configuracion FicheroAcciones · Procesar lo que hay que hacer si el jugador usa acciones como Usar o Mostrar en combinación con objetos de su inventario.
· Reproducir un sonido si usa el teléfono de su inventario de objetos.
· Incrementar la salud del jugador si se toma las pastillas que lleva en su inventario de objetos.
Al dar comienzo el siguiente nivel Comando
CARGAR_NIVEL
fichero_comandos · Presentar al jugador información sobre donde se encuentra en estos momentos.
· Establecer ciertos valores de variables para este nivel.
· Ocultar ciertos bloques del nivel que inicialmente son visibles.
Desde el interior de otro fichero de comandos, pero con un tiempo de retardo Comando
TEM1
nombre_fichero_ini · Desbloquear una puerta transcurridos 5 segundos.
· Dar al jugador 60 segundos antes de ser teletransportado a la Tierra desde Marte, a menos que encuentre la clave de desactivación.
· Usando temporizadores que al finalizar se vuelven a activar, puedes procesar comandos de forma cíclica y constante.
Al detectar la existencia de un fichero externo Comando
CREAR_PROCFICH
fichero_comandos · Detectar la finalización de un proceso externo.
· Recoger datos que ha generado una aplicación externa.
El jugador pulsa una tecla TeclaComandos FicheroComandos · El jugador usa la tecla 'J' para lanzar un hechizo.
· El jugador pulsa la tecla 'L' para usar un teléfono. Puedes controlar con variables el tipo de llamada que realiza en cada momento.
En marcadores de barra, al alcanzar valores máximos o mínimos MarcadorBarra Comandos_Llena y Comandos_Vacia · Premiar al jugador con objetos o con salud si consigue el máximo de 'maná' MP.
· Teletransportar al jugador al infierno si su nivel de fuerza vital alcanza 0.
· Abrir ciertas zonas del nivel si el jugador consigue el máximo valor de 'inteligencia' INT.
· Pasar al siguiente nivel, si el jugador consigue reducir a 0 el nivel de radiación de una Central Nuclear.
En barra indicadora de energía de vuelo, al alcanzar su mínimo valor VolarJugador Comandos_Vacia · Informar al jugador sobre su fallida misión por alcanzar la colina volando.
· Llevar al jugador al punto de partida.
Al colisionar bloques de física del nivel PhysicsObject ColisionCommandsFile · Si el jugador logra unir dos piezas de un engranaje, se activa la máquina que levanta una puerta metálica.
· Se premia al jugador, si consigue arrastrar una pequeña pirámide hasta su posición correcta en lo alto de una estructura.
· El jugador muere si por error hace que dos núcleos de plasma se toquen.
En cualquier momento, desde la consola Comando de consola
+fichero
- · Para lanzar ficheros de comandos de prueba durante el desarrollo de tu juego.
· El jugador puede disponer de comandos especiales que pueda lanzar en cualquier momento: armar una bomba, comunicar con la Central, teletransportarse ...
Según una opción seleccionada por el jugador Comando
OPCI
fichero_ini_n · Presentar al jugador 4 opciones para que seleccione la frase que quiere decir.
· Entregar una llave al jugador si ha seleccionado la opción correcta.
· Teletransportar al jugador a 4 lugares diferentes en función del botón pulsado en un cuadro de mandos.
Al maximizar la ventana del juego Comando
EXEC_PROCESO
fichero_comandos · Informar al jugador del resultado de la ejecución de una aplicación externa.
· Procesar más comandos una vez ha finalizado una aplicación externa y el control ha pasado de nuevo a tu juego.
Cuando el jugador introduce un dato o texto concreto Comando
INPU
fichero_de_comandos · Para comprobar si el jugador ha introducido la contraseña correcta para acceder a una caja fuerte.
· Entregar dinero al jugador si introduce la clave correcta en un cajero automático.
· Desactivar una bomba si introduce la clave correcta.


El Lenguaje de comandos de Entidad 3D

La primera implementación de este lenguaje se realiza en el año 1997 para el programa Hermes. Una herramienta escrita en Java para crear juegos de aventuras gráficas para Windows 95.

En el año 2004 se incorpora un versión ampliada de este lenguaje en la primera versión de Entidad 3D.

Posteriormente, en el año 2007, se incluye una versión reducida del lenguaje en el programa Icarus Adventure System para la consola portátil Nintendo DS. Otra herramienta para crear juegos de aventuras gráficas para esta consola.


Pero ... ¿ cómo se llama realmente este lenguaje ?. Pues en cada implementación se llama genéricamente 'Lenguaje de comandos' y en el caso de Entidad 3D se llama 'Lenguaje de comandos de Entidad 3D'.


Este lenguaje surge ante la necesidad de ofrecer a usuarios poco o nada experimentados en la programación de computadoras, un sistema para interaccionar con las herramientas de creación de videojuegos, pero no de la misma manera que lo hacen lenguajes de programación como el C/C++ o el Java, que se usan para realizar todo el proceso de cálculo y control de un videojuego, sino sólo para intervenir en ciertos momentos (llamados eventos) durante el transcurso del videojuego, dejando el resto de la gran carga de trabajo para la propia herramienta de creación de videojuegos.

Este lenguaje no necesita ser compilado para que lo pueda entender la computadora, simplemente se escribe en ficheros de texto plano y el propio Entidad 3D los interpretará y procesará en el momento adecuado según los requerimientos de la persona que ha creado el videojuego.

Como ves, la propia definición del lenguaje lo dice todo. Es un lenguaje interpretado orientado a eventos.


Si bien se podría decir que se asemeja mucho a un lenguaje de 'script', si tienes tiempo y ganas intenta comparar el Lenguaje de comandos de Entidad 3D con otros lenguajes de programación, incluidos los de 'script' y verás a qué lenguaje se parece más. Yo creo que claramente se parece más al legendario lenguaje BASIC que a otra cosa. Evidentemente con las lógicas diferencias que existen entre los dos lenguajes ya que el lenguaje de comandos incluye muchas referencias a comandos orientados a la gestión de elementos de videojuegos.


Por esa razón, ni de lejos tiene la potencia ni la velocidad del C/C++ o una variante del mismo (lenguaje más usado para escribir videojuegos), pero es que tampoco la necesita para intervenir en momentos concretos durante el transcurso de un videojuego y procesar acciones de manera eficiente.

Evidentemente que este lenguaje de comandos es mejorable y así lleva haciéndose desde hace años, pero en ningún caso es ni será un sustituto de los lenguajes de programación de computadoras si quieres crear videojuegos de alto rendimiento y sin límites.



El 'Lenguaje de comandos' y su variante 'Lenguaje de comandos de Entidad 3D' han sido desarrollados por el propio autor de Entidad 3D ( Jordi Pérez ).