SpecificActor



Esta entidad se utiliza para posicionar personajes secundarios estáticos o cualquier elemento 3D en el escenario usando modelos 3D en formato .ACT.



Parámetros de esta entidad:


  • ActorFile
  • Introducir aquí el nombre del fichero .ACT que quieras situar como personaje en el escenario o elemento 3D. Este fichero .ACT debe existir en la carpeta actors de Entidad 3D.
    Si el archivo .ACT se encuentra en otra carpeta, debes indicar la ruta completa donde se encuentra el archivo. Por ejemplo: armas\bate.act si quieres usar el archivo bate.act que se encuentra en la carpeta armas.

    Si utilizas el editor de niveles 'World Editor Pro', los nombres de los ficheros .act que indiques en este parámetro 'ActorFile', ponlos con las extensión .ACT en mayúsculas (por ejemplo 'estatua.ACT') si quieres que el modelo 3D de este fichero .act no aparezca en el editor para que el editor funcione más rápido, ya que si indicas la extensión .act del fichero en minúsculas (por ejemplo 'estatua.act') verás una representación del modelo 3D con una sola textura y si tienes muchas entidades 'SpecificActor' en tu nivel, observarás que el editor se hace muy lento a la hora de modificar cualquier elemento.



  • Motion
  • Nombre de la animación que queremos que realice este personaje. Este nombre ha de ser uno de los nombres de animación que contiene particularmente cada fichero .ACT. Usa la utilidad 'Actor View' para ver los nombres de animación del .ACT que te interese.

    La animación que seleccionemos se realizará de forma continua mientras este personaje esté en el escenario.

    Usa los comandos MOTC y MOTI para cambiar esta animación durante el transcurso de tu juego.



  • ASpeed
  • Variando este valor puedes regular la velocidad de la animación que hayas establecido en el parámetro 'Motion'.

    Acepta tiempos numéricos con decimales.

    0.5 para una velocidad lenta.

    1 para una velocidad normal (la que tenga por defecto esta animación en el fichero .ACT).

    2 para una velocidad rápida.

    ... pero puedes usar otros valores.



  • Rotate X
  • Con 'True' haremos que el modelo 3D realice una rotación continua sobre su eje X.



  • Rotate Y
  • Con 'True' haremos que el modelo 3D realice una rotación continua sobre su eje Y (vertical).



  • Rotate Z
  • Con 'True' haremos que el modelo 3D realice una rotación continua sobre su eje Z.



  • RSpeed
  • Variando este valor podremos regular la velocidad de rotación del modelo 3D en el caso que lo hayamos establecido con Rotate X, Rotate Y o Rotate Z.

    Acepta tiempos numéricos con decimales.

    0.5 para una velocidad lenta.

    1 para una velocidad normal.

    2 para una velocidad rápida.

    ... pero puedes usar otros valores.



  • CommandsFile
  • Introduciremos el nombre del fichero de comandos .ini que contiene los comandos que deseamos procesar cuando el jugador entre en la zona de influencia de esta entidad. Este fichero .ini debe existir en la carpeta 'Comandos' de Entidad 3D.

    Consulta dentro de este fichero de comandos la variable del sistema EVENTO_NOM_SPECIF si quieres saber el nombre de la entidad causante de este evento.



  • Repetir_comandos_zona
  • Consulta este parámetro en la entidad Door. El funcionamiento es el mismo.



  • CommandsFile2
  • Introduciremos el nombre del fichero de comandos .ini que contiene los comandos que deseamos procesar cuando un proyectil de una de las armas del jugador impacte sobre este SpecificActor. Este fichero .ini debe existir en la carpeta 'Comandos' de Entidad 3D.

    Para que funcione debes poner a 'True' el parámetro 'Bloqueo_Proyectiles'.

    Puedes averiguar el tipo de proyectil que ha impactado si consultas la variable del sistema PROYECTIL_IMPACTA_SPECIF.

    También puedes consultar dentro de este fichero de comandos la variable del sistema EVENTO_NOM_SPECIF si quieres saber el nombre de la entidad causante de este evento.



  • Boton_accion
  • Con valor 'True', los comandos contenidos en el fichero especificado en 'CommandsFile' se procesarán si el jugador toca al personaje y al mismo tiempo pulsa el botón o tecla 'Acción'.

    Con valor 'False', sólo será necesario que el jugador toque al personaje para procesar los comandos que contiene el fichero .ini que hemos especificado en 'CommandsFile'.



  • Boton_Accion_indicador
  • Consulta este parámetro en la entidad Door. El funcionamiento es el mismo.



  • Origin
  • Son tres cifras (X Y Z) que determinan la posición de esta entidad en el escenario. Estos 3 datos normalmente no se modifican aquí y se deja que se modifiquen según movemos esta entidad (con el ratón) desde 'World Editor'.



  • Orientation
  • Son tres cifras (X Y Z) que determinan la orientación que tendrá el objeto .ACT en el escenario. Variando estos tres ángulos (con valores entre 0 y 365 grados) podremos hacer aparecer nuestro objeto o personaje boca abajo, tumbado, ladeado, etc..

    Si ponemos 0 0 0 el objeto se presentará en la orientación original del diseño de este objeto 3D.


    Ejes X Y Z en Entidad 3D


  • Scale
  • Son tres cifras (escala en X(ancho), escala en Y(alto), escala en Z(largo)) separadas por un espacio. Permiten agrandar o reducir el tamaño inicial de nuestro personaje. Si ponemos 1 aparecerá en el escenario en el tamaño inicial de diseño de este objeto 3D. Si ponemos 2 aparecerá el doble de grande. Si ponemos 0.5 aparecerá a la mitad de su tamaño.



  • Visible
  • Con 'False' haremos que este objeto o personaje no aparezca en el escenario. Esto se utiliza en casos en que nos pueda interesar definir la posición de un personaje con todas sus características y ficheros de comandos, pero que al dar comienzo el juego aún no aparezca en el nivel ni tenga ningún tipo de influencia. Posteriormente, durante el transcurso del juego, lo podremos hacer aparecer usando el comando VIS1.



  • Bloqueo_ver
  • Con valor 'True', nos aparecerá un rectángulo azul transparente que envolverá el objeto o personaje. Esta zona azul es la zona de bloqueo para este 'actor' y representa el espacio que el jugador no podrá atravesar mientras el 'actor' sea visible.

    Tanto si este valor está como 'True' o como 'False', el jugador no podrá atravesar esta zona.

    A continuación puedes ver un ejemplo de un tanque con este rectángulo azul activado:




  • Bloqueo_X Bloqueo_Y Bloqueo_Z
  • En estas tres cajas podemos especificar valores para variar la zona de bloqueo (visible si pones 'True' en Bloqueo_ver), con el objetivo de modificar el tamaño que tiene esta zona por defecto.

    Si utilizas valores positivos aumentarás de tamaño la zona, mientras que si utilizas valores negativos reducirás la zona.

    Si usas esta entidad SpecificActor para unirla al personaje del jugador usando el comando UNIR_SPECIF_JUGADOR, estos tres datos los debes usar para ajustar la posición del SpecificActor unido al jugador.



  • Zona_influencia
  • Son tres cifras (X para el ancho, Y para el alto y Z para la profundidad) que determinan el tamaño de una caja imaginaria que envuelve al modelo 3D de este SpecificActor, y que establece la zona de influencia de este elemento en el nivel sobre:

    - Colisiones de Bots.

    - Colisiones de disparos del jugador para lanzar ficheros de comandos.

    - Colisiones del personaje del jugador para lanzar ficheros de comandos.

    No confundir con la zona de bloqueo que hace retroceder al jugador si colisiona con este SpecificActor.

    Normalmente la zona de influencia es ligeramente más grande que la zona de bloqueo para poder detectar algunos eventos que se producen muy cerca de este SpecificActor sin que ello suponga frenar al jugador en su avance.




    En la imagen de este reloj de pared se muestra la
    Zona de bloqueo de color azul, mientras que la
    Zona de influencia se muestra de color rojo.
    Estas dos zonas las puedes hacer visibles
    si pones a 'True' el parámetro 'Bloqueo_ver'.


  • Brillo
  • Con un valor que puede variar entre 0 y 255 podemos dar más o menos brillo al modelo 3D .ACT que represente este 'SpecificActor'.



  • Color
  • Permite seleccionar un color para cambiar el color general del modelo 3D .ACT que representa este 'SpecificActor'.

    Para que funcione debe estar a 'True' el parámetro 'Colorear'.



  • Colorear
  • Con valor True se usará el color seleccionado en el parámetro 'Color' para aplicar ese color al modelo 3D .ACT.

    Puedes usar esta característica para situar en tu nivel diferentes variaciones de un mismo modoleo 3D .ACT sin necesidad de usar distintos archivos .ACT.

    Con valor False se mantendrán los colores originales del modelo 3D .ACT.



  • Luces_Dina_Max
  • Permite indicar el número máximo de luces dinámicas del nivel que afectarán al modelo 3D .ACT de esta entidad.

    Admite valores de 0 a 9. El valor recomendado es de 3.

    Por afectar, se entiende que dichas luces harán variar el color del modelo .ACT según el color de las luces dinámicas que se encuentren cerca.

    Recuerda que las luces dinámicas no sólo son las entidades DynamicLight de tu nivel sino también otras luces como linternas, antorchas, disparos, etc..

    El rendimiento de tu juego puede verse afectado cuanto mayor sea el valor de este parámetro para modelos .ACT con muchos polígonos.

    A continuación un ejemplo de una caja eléctrica definida con una entidad 'SpecificActor.

    A la izquierda, esta entidad con 'Luces_Dina_Max' = 2, por lo que le afecta la luz del cohete y también le podría afectar otra luz dinámica más.

    A la derecha, con 'Luces_Dina_Max' = 0, por lo que no le afecta ninguna luz dinámica.




  • Luces_Stat_Max
  • Permite indicar el número máximo de luces estáticas del nivel que afectarán al modelo 3D .ACT de esta entidad.

    Admite valores de 0 a 9. El valor recomendado es de 3.

    Al contrario que las luces dinámicas, las luces estáticas cercanas al modelo .ACT sólo hacen variar el color del modelo al dar comienzo el nivel y no varía nunca más durante el juego aunque las luces estáticas tengan propiedades de variación de intensidad según el valor del parámetro 'Style'.



  • Bloqueo
  • Con valor 'True', el jugador colisionará con este objeto o personaje.

    Con valor 'False', el jugador atravesará este objeto o personaje.

    Con 'False' nos deja la libertad de poder controlar las zonas de bloqueo de este objeto mediante bloques que definamos en el escenario (en World Editor) en el mismo punto donde tengamos situado el 'SpecificActor'.

    Para que estos bloques realicen la tarea de bloquear al jugador pero que al mismo tiempo no se vean, debemos acceder a las propiedades de todas las caras de ese 'brush' (ventana 'Faces Attributes'), marcar 'Transparent' y finalmente poner el valor 0 en 'Transparency Value'.



  • Bloqueo_Bots
  • Con valor 'True', los personajes Bot colisionarán con este objeto o personaje.

    Con valor 'False', los personajes Bot atravesarán este objeto o personaje.



  • Bloqueo_Proyectiles
  • Con valor 'True', los proyectiles de las armas del jugador que impacten con este SpecificActor colisionarán con este objeto o personaje.

    Con valor 'False', los proyectiles de las armas del jugador que impacten con este SpecificActor atravesarán este objeto o personaje.



  • Transparencia
  • De 0 a 255.

    Nivel de transparencia del objeto o personaje.

    255 opaco, 0 completamente transparente, 128 semi-transparente.



  • RenderSiNoVisible
  • Con valor 'False', si el modelo 3D .ACT no está dentro del campo de visión del jugador, el programa no realizará los cálculos necesarios para visualizar este modelo. Esto permite aumentar el rendimiento del programa si usas muchas entidades 'SpecificActor'.

    Intenta siempre poner este parámetro a 'False' si no causa algún efecto indeseado en tu juego.

    Cuando pongas un 'SpecificActor' en tu nivel y en su interior situes un bloque 'brush' sólido ('Solid' en la sección 'Brush Attributes' de World Editor) para que el jugador colisione con él, si pones 'False' en 'RenderSiNoVisible' nunca verás el modelo 3D. Para resolver esto debes poner dichos bloques 'brush' como 'Clip' en Word Editor en lugar de 'Solid'.



  • Render_tras_solido
  • Se usa para aumentar el rendimiento general del nivel, aunque no es 100% fiable, ya que en ocasiones oculta completamente el modelo 3D .ACT cuando realmente sólo está parcialmente oculto a la vista del jugador.

    Es recomendable que uses esta opción con valor 'False' si en tu nivel existen muchas entidades 'SpecificActor' en una misma área y no te importa mucho que algunos elementos se oculten a lo lejos sin que apenas se aprecien estos defectos.

    Con valor 'False', no calcula los datos de visualización de este elemento si está detrás de un bloque 'brush' sólido del nivel desde el punto de vista del jugador.

    Con valor 'True', siempre calcula los datos de visualización.



  • Sombra
  • 0, 1, 2 o 8.

    Establece el tipo de sombra para este objeto.

    Valor 0 sin sombra.

    Valor 1 con sombra en círculo.

    Valor 2 con sombra dinámica.

    Valor 8 con sombra octogonal.

    Si quieres ver ejemplos de estos tipos de sombras, consulta la sección de la entidad ConfigEnemigos.



  • Resaltar
  • Se usa para resaltar modelos 3D que capten la atención del jugador. Para que se acerque el jugador para por ejemplo intentar alguna acción sobre ese elemento.

    Esto se consigue con una variación constante del brillo de este elemento.

    Con valor 'True', resalta este 'SpecificActor'.

    Con valor 'False', no lo resalta.

    Durante el juego puedes controlar el estado de este parámetro usando el comando CAMBIAR_PARAMETRO



  • Render_distancia_max
  • Permite establecer hasta qué distancia (respeto al jugador) el modelos 3D .ACT asociado a esta entidad se procesará.

    Si la distancia entre el jugador y el modelo .ACT es superior a la establecida, el modelo .ACT no se procesará y desparecerá de la vista del jugador.

    De esta forma se puede aumentar el rendimiento general de los juegos sacrificando algo de calidad gráfica en el fondo de la escena.

    Para probar esta característica usa por ejemplo el valor 1800.

    Usa el valor 0 para no utilizar esta característica.

    Usa un valor de distancia impar para que en lugar de hacer desaparecer por completo el modelo .ACT se procesen sólo la mitad de sus polígonos. A bastante distancia del jugador no importará mucho si el modelo .ACT aparece incompleto ya que apenas se apreciará con claridad desde lejos, pero el rendimiento de tu juego aumentará. Para probar esta característica usa por ejemplo el valor 1801.



  • Model
  • Permite seleccionar un modelo 'model' del nivel para asociarlo a esta entidad 'SpecificActor'.

    El modelo 3D .ACT de la entidad quedará vinculado a ese 'model' por lo que la posición del .ACT variará según la posición del 'model'.

    Como estos 'model' pueden tener una ruta predefinida puedes usarlos para que el .ACT se desplace por el nivel según la ruta del 'model'.

    Estos modelos son los bloques o conjunto de bloques 'brush' que hayas definido como 'model' en World Editor (pestaña 'models') en tu nivel.

    Esta característica de vincular un 'model' a un 'SpecificActor' es ideal para dar un poco más de vida a estos modelos 3D estáticos, por ejemplo para crear bandas de murciélagos, personajes secundarios, peces en el agua, efectos visuales combinados con luces, unir objetos .ACT a puertas 'model' que se abren, etc..

    Recuerda que estos bloques 'model' puedes hacerlos invisibles si quieres que el jugador sólo vea los movimientos de los objetos 3D .ACT pero no los del bloque 'model' asociado.

    Debes poner el parámetro 'RenderSiNoVisible' a 'True' si tienes problemas para visualizar el .ACT cuando se desplaza por en nivel.

    Puedes usar 'models' que no tengan desplazamiento pero sí rotación para que sólo orbite o rote el .ACT asociado usando los parámetros AllowRotation o AllowOrbiting.

    Si quieres unir el .ACT de un 'SpecificActor' a una puerta deberás poner a 'True' tanto AllowRotation como AllowOrbiting si quieres que el .ACT acompañe al movimiento de apertura de la puerta y que rote al mismo tiempo.

    Puedes asociar diferentes 'SpecificActor' a un mismo 'model' del nivel si quieres unir diversos objetos 3D a un mismo bloque 'model' en movimiento o en rotación.



  • AllowRotation
  • Usa este parámetro sólo si has asociado un modelo en el parámetro 'Model'.

    Con valor True, el modelo 3D .ACT rotará sobre sí mismo y sobre los mismos ejes que lo esté haciendo el modelo 'Model' asociado.

    Este parámetro no realiza un desplazamiento del .ACT, eso lo hace según la posición del 'model' asociado (si se desplaza) o bien con el parámetro AllowOrbiting a 'True'.

    Con valor False se ignorará la rotación del 'model' para que no afecte a la rotación del modelo 3D .ACT.



  • AllowOrbiting
  • Usa este parámetro sólo si has asociado un modelo en el parámetro 'Model'.

    Con valor True, si el modelo 'Model' asociado rota, el modelo 3D .ACT orbitará alrededor del modelo 'Model' asociado.

    Este movimiento de orbitación es como la Luna (el .ACT del SpecificActor) alrededor de la Tierra (un 'model') produciendo un desplazamiento de la Luna pero no una rotación sobre sí misma, eso lo haría si usas el parámetro AllowRotation.

    Con valor False se ignorará la rotación del 'model' para que no afecte a la posición del modelo 3D .ACT.





    Jugadores online disparando sobre una entidad
    'SpecificActor' que representa un coche


    Consulta la sección 'Personajes' para ver un ejemplo de como añadir una entidad de este tipo.



    Personajes interactivos:

    Si no queremos que nuestros personajes sean simples 'estatuas' que no se relacionan con el jugador, tendremos que asociar la entidad 'SpecificActor' de nuestros personajes con algún fichero de comandos .ini para que realicen ciertas acciones según las circunstancias.

    Lo que pueden hacer estos personajes lo determinan los comandos disponibles en 'Entidad 3D', desde decirle algo al jugador (mediante un texto), hasta darle algo al jugador o hacer sonar un fichero de audio con alguna voz grabada.


    A continuación, y a modo de ejemplo, vamos a crear un fichero .ini en la carpeta 'Comandos' y que estableceremos como nombre de fichero .ini en 'CommandsFile' para una entidad de este tipo. El fichero en cuestión contendría lo siguiente:



    ¿ Que hace todo esto ?. Lo que pretendemos hacer es que un personaje le venda una llave al jugador si este lleva dinero en su inventario. Evidentemente, para este ejemplo necesitaríamos los objetos '5_dinero.act' (para el dinero) y '4_llave.act' (para la llave). También vamos a preparar un par de respuestas por parte del personaje, una para cuando le entregue la llave al jugador y otra para cuando el personaje le pida dinero al jugador a cambio de la llave.

    Estos diálogos han de estar en forma de ficheros en la carpeta 'Comandos' y con la extensión .dlg. Crearemos el fichero 'vende_llave.dlg' conteniendo las líneas siguientes:



    También crearemos el fichero 'dame_dinero.dlg' con lo siguiente:


    Ya estamos en condiciones de entender el grupo de comandos anterior.

    Recordarte que estos comandos se procesarán sólo cuando el jugador intente tocar al personaje.


    En primer lugar, decirte que utilizo la variable 'llave_entregada' (que me he inventado) para controlar la entrega de la llave al jugador. De esta forma podré presentarle al jugador diversos mensajes en función del valor de esta variable.

    El primer 'IF', comprueba la condición 'llave_entregada=0', lo utilizo para, si no se cumple significará que ya le hemos entregado la llave al jugador, pues le presentamos un mensaje rápido a través del comando 'ACCI TEXT' poniéndole 'No tengo nada mas de tu interes'. Este mensaje aparecerá en la parte superior de la pantalla en azul y desaparecerá en pocos segundos. Como ves, para este mensaje no hemos creado un fichero .dlg ya que opino que para un mensaje tan corto no era necesario.

    Pero volvamos otra vez a la condición que estamos analizando pero esta vez supongamos que la condición se cumple y la variable 'llave_entregada' vale 0 (que sería lo que valdría al comenzar el juego), pues entonces aún comprobamos otra cosa más, ya que el jugador podría llevar el dinero o no. Si lo lleva la condición 'COND 5_dinero.act=1' se cumplirá y por lo tanto se desencadenarán todos los comandos hasta el siguiente 'ELSE', comandos que hacen lo siguiente:


    (pone en pantalla el diálogo que hemos preparado en el fichero 'vende_llave.dlg')


    (quita el objeto '5_dinero.act' del inventario del jugador)


    (pone el objeto '4_llave.act' en el inventario del jugador)


    (pone la variable 'llave_entregada' a 1)


    Finalmente si no se cumple la condición 'COND 5_dinero.act=1' es que el jugador no lleva el dinero y por lo tanto no le damos nada y con el comando 'ACCI DIAL dame_dinero' le presentamos el diálogo que tenemos preparado en el fichero 'dame_dinero.dlg'.


    Ya te estarás haciendo una idea de la cantidad de posibilidades que tienes con estos ficheros de comandos .ini, y no sólo en entidades 'SpecificActor' sino en todas las entidades de 'Entidad 3D' que soportan estos ficheros.

    Si combinas adecuadamente comandos y condiciones dentro de otras condiciones, etc... podrás obtener gran cantidad de complejas situaciones que podrán adaptarse a las necesidades del guión de tu juego. Al principio te puede parecer un poco liado, pero con la práctica, si ordenadas bien los comandos y los escalonas correctamente para no ver toda una cascada confusa de comandos, verás que ni de lejos tiene la complejidad que te supondría realizar lo mismo programando en lenguajes de programación.



    Usa el comando CAMBIAR_PARAMETRO para modificar algunos parámetros de esta entidad durante el transcurso de tu juego.