Es/Inputs and Outputs: Difference between revisions

From Valve Developer Community
< Es
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:




== Entradas ==
== Entradas (acción/hecho) ==


Las '''entradas/acciones''' son comandos u acciones que causan que una entidad cambie lo que esté haciendo. Son activadas (o llamadas) por las salidas - no pueden ser manipuladas directamente.
Las '''entradas/acciones''' son comandos u acciones que causan que una entidad cambie lo que esté haciendo. Son activadas (o llamadas) por las salidas - no pueden ser manipuladas directamente.
Line 22: Line 22:
En el Hammer Editor, puedes ver una lista de acciones que entidad (A) recibe, en la pestaña "Inputs", en las propiedades de un objeto. Haciendo clic en "Mark" te llevará a la entidad (B), que está activando la acción.
En el Hammer Editor, puedes ver una lista de acciones que entidad (A) recibe, en la pestaña "Inputs", en las propiedades de un objeto. Haciendo clic en "Mark" te llevará a la entidad (B), que está activando la acción.


== Salidas ==
== Salidas (reacción/consecuencia) ==


[[File:Output.png|thumb|"Object Properties" Ventana de las propiedades de una entidad, en Hammer]]
[[File:Output.png|thumb|"Object Properties" Ventana de las propiedades de una entidad, en Hammer]]
Line 40: Line 40:


Las reacciones son creadas en la pestaña "Outputs", en las propiedades de una entidad. Este menú te da una lista de reacciones, que están siendo emitidas, por la entidad que los emite, campos de texto para configurarlas y étcera.
Las reacciones son creadas en la pestaña "Outputs", en las propiedades de una entidad. Este menú te da una lista de reacciones, que están siendo emitidas, por la entidad que los emite, campos de texto para configurarlas y étcera.
The output configuration fields are:
En el Hammer Editors, se entiende así:


; Output name (Nombre de la reacción)
; Output name (Nombre de la reacción)
: ¿Qué, qué cosa o quién causa a esta acción, activarse. Por ejemplo, un activador ([[trigger_multiple]]) puede activar un "al activar" ('''OnTrigger''') una reacción cuando el jugador entra o interacciona en el activador.
: ¿Qué causa a esta reacción, activarse? Por ejemplo, un activador ([[trigger_multiple]]) puede activar un "al activar" ('''OnTrigger''') una reacción cuando el jugador entra o interacciona en el activador.
; Target entity (Objetivo)
; Target entity (Objetivo)
: El objetivo ([[targetname]]) o nombre de la clase ([[classname]]) de una entidad que recibirá la entrada/reacción. Se aceptan asteriscos (*) para buscar un objetivo con nombre incompleto/general.
: El objetivo ([[targetname]]) o nombre de la clase ([[classname]]) de una entidad que recibirá la entrada/reacción. Se aceptan asteriscos (*) para buscar un objetivo con nombre incompleto/general.
:* En el Hammer Editor, un objetivo en negrita, son múltiples entidades con el mismo nombre.
:* En el Hammer Editor, un objetivo en negrita, son múltiples entidades con el mismo nombre.
:* Si se pone en rojo, significa que no se apunta a una entidad que se llame como el objetivo. {{bug|Valid classname and wildcard values and [[Targetname#Keywords|special targetnames]] will also appear red. Don't worry: the engine will recognise them!}}
:* Si se pone en rojo, significa que no encuentra una entidad que se llame como el objetivo. {{bug|Los "classname" y valores "wildcard" y nombres (Targetname) especiales [[Targetname#Keywords|special targetnames]] aparecerán en rojo. ¡No te alarmes!: ¡El motor las reconocerá!}}
; Input name
; Input name (nombre de la acción)
: The input on the target entity that will be triggered. This too will be context sensitive. For example, if sending an output to a Door entity, some of the available inputs will be "Close" or "Open".
: The input on the target entity that will be triggered. This too will be context sensitive. For example, if sending an output to a Door entity, some of the available inputs will be "Close" or "Open".
; Parameters
; Parameters (Parámetros)
: You can pass data to the target entity with parameters. A parameter might be anything: how loud to play [[ambient_generic|a sound]], the [[targetname]] of another entity, or perhaps [[color255|a color]]. It all depends on what the input accepts. If it doesn't accept anything, this field will be greyed out.
: Puedes pasar información a un objetivo (targetname) con parámetros. Un parámetro puede ser cualquier cosa: el volumen de [[ambient_generic|un sonido]], el [[targetname]] de otra entidad, o quizá [[color255|un color]]. Todo depende de lo que la acción acepte. Si no es posible poner parámetros, la casilla se volverá gris.
: Some outputs, like [[math_counter]]'s <code>OutValue</code>, generate parameters themselves. To use a generated parameter, just leave the field reading <code><none></code>. {{note|If the output value is a [[targetname]], remember that it may not be unique!}}
: Algunas reacciones, como contadores ([[math_counter]]) con <code>OutValue</code>, generan parámetros por su propia cuenta. Para usar un parámetro preparado, deja el campo de "Parameters" vacío.
; Time delay
; Time delay (Tiempo de retraso)
: The number of seconds to wait after the output event occurs before firing.
: La cantidad de tiempo (en segundos) que tardará en hacer efecto la reacción.
; Fire once only
; Fire once only (Activar sólo una vez)
: The output will be deleted after it fires if this is checked.
: Significa que esta reacción, no podrá volver a ocurrir, más que una vez.


== Cómo entenderlo mejor: Ejemplos ==
== Cómo entenderlo mejor: Ejemplos ==
Line 76: Line 76:
|}
|}


== Setting up a simple trigger ==
== Preparando un activador ==
This is an example of how to make a simple trigger using inputs and outputs, so a sound is played when the player enters a specific area.
Esto será un ejemplo de cómo puedes crear un activador utilizando entradas y salidas, así que harás que un sonido se oiga, cuando el jugador entre en una zona.


Open up a map and add an [[ambient_generic]] (in the Name field, type in "<code>ambient_1</code>"). Go into its '''Object Properties''' and choose a sound file for it to play, and on the '''Flags''' tab make it set to "'''Start Silent'''". Select the "<code>tools/toolstrigger</code>" texture and create a cube brush with this texture. Right-click on this brush and using the "[[Brush entity|Tie to Entity]]" command, make it into a [[trigger_once]] entity. Go to the '''Outputs''' tab and click the '''Add...''' button.
Abre un mapa y añade un [[ambient_generic]] (en el campo "Name", pon el nombre del sonido, por ejemplo, "grito"). Vete a sus propiedades y elige un archivo de sonido para reproducir. En la pestaña '''Flags''', activa la casilla "'''Start Silent'''". Selecciona la textura "<code>tools/toolstrigger</code>" y crea un cubo que el jugador traspasará. Haz clic derecho sobre el sólido y haz clic en "[[Brush entity|Tie to Entity]]", y escribe [[trigger_once]]. Ve a la pestaña '''Outputs''' y haz clic en '''Add...'''.


Set "My output named" to "<code>OnStartTouch</code>". This causes the output (and thus the trigger) to occur when the player starts touching this brush in the game.  
En donde pone "My output named" elige la opción "<code>OnStartTouch</code>". Esto causará que la reacción sea "Al empezar a tocar el activador".


Set "Targets entities named" to "<code>ambient_1</code>" using the pull-down arrow. This makes the trigger output target the <code>ambient_generic</code> you placed earlier.
En donde pone "Targets entities named" escribe el nombre del sonido, o "<code>grito</code>". Esto señalará qué objetivo hará la acción.  


Set "Via this input" to "<code>PlaySound</code>". This chooses the <code>PlaySound</code> action from the target <code>ambient_generic</code>'s list of actions, which of course causes its sound to start playing.
En la caja "Via this input" selecciona "<code>PlaySound</code>". Esta caja, contiene '''todas''' las acciones que puede hacer el sonido. "''PlaySound''" significa "''ReproducirSonido''".  


Click the '''Apply''' button to save your changes to the trigger, and close it. Now we have the trigger set up so that as soon as the player touches it, it sends a command to the <code>ambient_generic</code> which makes it start playing its sound.
Dale al botón de Aplicar  ('''Apply''') para guardar los cambios, y cierra la ventana. Ya tenemos el activador colocado, para que, cuando el jugador lo toque (OnStartTouch), se empiece a reproducir (PlaySound), el sonido ("grito").  


If you open up the properties for the <code>ambient_generic</code>, you can see how the '''Output''' from the trigger has automatically been converted to an '''Input''' for the <code>ambient_generic</code>.
Si quieres compilar y comprobar tu activador, asegúrate de que tienes las cosas básicas, como el lugar del jugador, la luz, étcera. No te olvides de asignar un sonido a la entidad "grito".


If you want to compile and test your new trigger, make sure you have all the basics (player start, lighting, etc) and have assigned a sound effect to the <code>ambient_generic</code>.
== Depurando ==
 
== Debugging ==


Source provides various debugging tools for when an I/O chain is not working as expected.
Source provides various debugging tools for when an I/O chain is not working as expected.

Revision as of 08:43, 13 May 2014

Template:Otherlang2

Cuando un niño se asusta de un sonido, en la informática se suele decir, que el niño ha cometido una entrada (reacción) al escuchar el sonido (acción del sonido, que es, asustar)

Entrada y salida, o mejor entendido "Hecho-consecuencia", reacción-acción (y no al revés) (conjuntamente "E/S" o en inglés "I/O") son términos para describir los medios por los cuales las entidades se comunican entre ellas en mapas. Las entidades tienen dos métodos para comunicarse: enviar una "salida" (señal que sale) a otra entidad, o a una "entrada" receptiva de otra entidad. Por ejemplo, una entidad puede mandar una salida cuando es eliminada a otra entrada de entidad que causa que cambie de color.

Imagina una entidad como un logic_timer. Podría estar configurada para "activar" su entrada OnTimer cuando llegue a un límite de tiempo, el cual activa (o llama) la salida ShowSprite de un "sprite" (env_sprite).


Entradas (acción/hecho)

Las entradas/acciones son comandos u acciones que causan que una entidad cambie lo que esté haciendo. Son activadas (o llamadas) por las salidas - no pueden ser manipuladas directamente.

En el Hammer Editor, puedes ver una lista de acciones que entidad (A) recibe, en la pestaña "Inputs", en las propiedades de un objeto. Haciendo clic en "Mark" te llevará a la entidad (B), que está activando la acción.

Salidas (reacción/consecuencia)

"Object Properties" Ventana de las propiedades de una entidad, en Hammer

Las salidas/reacciones, son eventos, o sucesos, que se activan cuando hay un cambio en el estado de la entidad. Por así decirlo, un cronómetro (timer) podrá cometer una reacción al llegar al tiempo límite. Un botón (button) activará un evento al ser pulsado/apretado, o una pistola, desencadenará una reacción (disparar una bala) al apretar el gatillo.

Esto se entiende así:

1. Apretar el gatillo -> Acción
2. Una bala sale disparada -> Reacción
1. Cometer la acción, desencadenar algo = Acción
2. Consecuencia de la acción = Reacción
1. Un ejército verde invade el país azul = Acción
2. El ejército azul dispara contra el verde = Reacción

________________

Las reacciones son creadas en la pestaña "Outputs", en las propiedades de una entidad. Este menú te da una lista de reacciones, que están siendo emitidas, por la entidad que los emite, campos de texto para configurarlas y étcera. En el Hammer Editors, se entiende así:

Output name (Nombre de la reacción)
¿Qué causa a esta reacción, activarse? Por ejemplo, un activador (trigger_multiple) puede activar un "al activar" (OnTrigger) una reacción cuando el jugador entra o interacciona en el activador.
Target entity (Objetivo)
El objetivo (targetname) o nombre de la clase (classname) de una entidad que recibirá la entrada/reacción. Se aceptan asteriscos (*) para buscar un objetivo con nombre incompleto/general.
  • En el Hammer Editor, un objetivo en negrita, son múltiples entidades con el mismo nombre.
  • Si se pone en rojo, significa que no encuentra una entidad que se llame como el objetivo.
    Icon-Bug.pngError:Los "classname" y valores "wildcard" y nombres (Targetname) especiales special targetnames aparecerán en rojo. ¡No te alarmes!: ¡El motor las reconocerá!  [todo tested in ?]
Input name (nombre de la acción)
The input on the target entity that will be triggered. This too will be context sensitive. For example, if sending an output to a Door entity, some of the available inputs will be "Close" or "Open".
Parameters (Parámetros)
Puedes pasar información a un objetivo (targetname) con parámetros. Un parámetro puede ser cualquier cosa: el volumen de un sonido, el targetname de otra entidad, o quizá un color. Todo depende de lo que la acción acepte. Si no es posible poner parámetros, la casilla se volverá gris.
Algunas reacciones, como contadores (math_counter) con OutValue, generan parámetros por su propia cuenta. Para usar un parámetro preparado, deja el campo de "Parameters" vacío.
Time delay (Tiempo de retraso)
La cantidad de tiempo (en segundos) que tardará en hacer efecto la reacción.
Fire once only (Activar sólo una vez)
Significa que esta reacción, no podrá volver a ocurrir, más que una vez.

Cómo entenderlo mejor: Ejemplos

Para entenderlo mejor interpreta la tabla.

Lista de sucesos de una puerta
Entrada/Reacción Objetivo Salida/Acción Parámetro Tiempo de reacción Ocurrir sólo una vez
Entity-output-icon.png Al abrir la puerta Luz de la habitación Encender la luz <ninguno> 1.00 segundo
Entity-output-icon.png Al abrir la puerta Personas escondidas Salir del escondite <ninguno> 1.50 segundos
Entity-output-icon.png Al salir del escondite Personas escondidas Reconocerlas como <Invitados de cumpleaños> 1.55
Entity-output-icon.png Al ver al objetivo Invitados de cumpleaños Felicitar <Persona que ha abierto la puerta> 0.00

Preparando un activador

Esto será un ejemplo de cómo puedes crear un activador utilizando entradas y salidas, así que harás que un sonido se oiga, cuando el jugador entre en una zona.

Abre un mapa y añade un ambient_generic (en el campo "Name", pon el nombre del sonido, por ejemplo, "grito"). Vete a sus propiedades y elige un archivo de sonido para reproducir. En la pestaña Flags, activa la casilla "Start Silent". Selecciona la textura "tools/toolstrigger" y crea un cubo que el jugador traspasará. Haz clic derecho sobre el sólido y haz clic en "Tie to Entity", y escribe trigger_once. Ve a la pestaña Outputs y haz clic en Add....

En donde pone "My output named" elige la opción "OnStartTouch". Esto causará que la reacción sea "Al empezar a tocar el activador".

En donde pone "Targets entities named" escribe el nombre del sonido, o "grito". Esto señalará qué objetivo hará la acción.

En la caja "Via this input" selecciona "PlaySound". Esta caja, contiene todas las acciones que puede hacer el sonido. "PlaySound" significa "ReproducirSonido".

Dale al botón de Aplicar (Apply) para guardar los cambios, y cierra la ventana. Ya tenemos el activador colocado, para que, cuando el jugador lo toque (OnStartTouch), se empiece a reproducir (PlaySound), el sonido ("grito").

Si quieres compilar y comprobar tu activador, asegúrate de que tienes las cosas básicas, como el lugar del jugador, la luz, étcera. No te olvides de asignar un sonido a la entidad "grito".

Depurando

Source provides various debugging tools for when an I/O chain is not working as expected.

Foremost among them is the object properties dialog itself. Invalid inputs outputs are highlighted red in the entity's input or output list; the I/O icons at the bottom of the dialoge also change accordingly. Invalid outputs also show up in Check For Problems (Alt+P). It's a good idea check for problems before every compile.

Icon-Bug.pngError:Valid classname and wildcard values will be flagged as errors. Don't worry: the engine will recognise them!  [todo tested in ?]

Away from Hammer, there are a number of console commands and variables that will help you spot errors while your map is running:

developer <0-2>
Developer mode reports all entity I/O to the console, and unless you're playing on a dedicated server that enables cheats (which is needed for all of the commands below). If you are in developer 2, you will also get the last eight lines of the console displayed at the top of your screen.
ent_messages_draw <bool>
This displays the same information as developer mode, except that instead of appearing in the console it's drawn in the 3D world at the location of the entities in question.
ent_fire <targetname or classname> <input> <parameter>
This extremely useful command allows you to manually fire inputs on any entity at any time. If you want to unlock a door ahead of time, you would type ent_fire my_door unlock, followed if you're feeling lazy by ent_fire my_door open.
Like the "output target" field in Hammer, ent_fire supports classnames and wildcards. If you want to ent_fire npc_* ignite, you can!
Tip.pngConsejo:ent_fire is where the special !picker targetname comes in. Use it to target whatever is under your crosshair.
ent_pause
This command pauses all entities in the map except the player; submit it again to unpause. It is designed for use with ent_step.
ent_step <number of steps>
When used with ent_pause, this command makes entities perform a specified number of I/O steps before pausing again (default is 1).

See also