SourceEngine Outputs et Inputs

  • Initiateur de la discussion
  • Administration
Seb

Seb

El Dictator
Membre du Staff
Messages
1 875
Score réaction
454
Points
370
Ce tutorial réalisé entièrement par Ludak-sa-sela et provient des archives de mapping-area et modding-area.
Les archives sont anciennes, certains tutoriels peuvent ne plus correspondre aux dernière versions.


-

Inputs and Outputs

L’un des plus importants changement dans la création de map pour le moteur Source sont les entités I/O. Considérant que les versions plus anciennes du moteur comptait sur target et targetname comme clef pour envoyer des impulsions simples à une entité, le système d'entité I/O tient compte de la communication complexe entre entités. Ceci est fait en utilisant les entités inputs et outputs, qui se joignent par connexions. En employant cette méthode simple, les entités peuvent facilement déclencher des événements basés sur les changements d’états et travailler en tandem avec d'autres entités en plus atomique, de manière plus logique et puissante que précédemment.

Table des matières

1 Vue d'ensemble
2 Outputs

2.1 Sample outputs

3 Inputs
4 Outputs avec valeurs
5 Debugging

Vue d'ensemble

Les entités ont deux méthodes de communication: envoyer un output à une autre entité, ou recevoir un input d'une autre entité. Une entité peut envoyer un output quand il est tué à une autre entité input qui a pour cause de changer de couleur. Même output peux également être employé pour déclencher l'entrée engendrer d'une autre entité. Les outputs sont assortis aux inputs via la connexion, qui commandes les données supplémentaires qui sont relayé par le receveur, quelle quantité de retard il y a avant que le output soit reçu, et si output peut être mis de côté pour être envoyé plus tard. Les Outputs peuvent être lié à un input et vice versa. Ceci permet des interactions complexes et puissantes entre les entités.

Par exemple, l’entité logic_timer peut envoyer un OnTimer output, qui déclenche le timer quand les conditions sont réunies pour l’entité. Cet output pourrait être attaché à l’input d’Exposition env_sprite, le rendant visible quand le timer a atteint le moment désiré. Vous pouvez aussi attacher OnTimer output et logic_timer à SparkOnce input avec env_spark pour créer des étincelles. En utilisant les propriétés de connexion, vous pouvez également provoquer le déclenchement de l’output après deux seconde de délais, ou pour ne jamais le déclanché qu’une fois.
Pour les utilisateurs familiariser avec les méthodes originales d’Half-Life sur la communication d’entités, le targetname et target fields sont maintenant obsolète et le système d’entités I/O est un super ensemble de fonctionnalités. Au lieu de l’entité trigger_multiple mettant le feu seulement à l’entité cible,on peut maintenant utiliser nombre des ses outputs pour faire la même chose, incluant: OnStartTouch, OnEndTouch, OnTouch, etc. Ces outputs peuvent être connecté à un nombre arbitraire d’entités en un seule fois avec un délais unique par output, la création multi directrice est aussi bien obsolète. De même, le champ killtarget est maintenant remplacé par connexion d’output à l’ input Kill d’une autre entité.

Outputs

Les outputs sont les événements de mise à feu quand l'état d'une entité change. Cela peut être un timer qui arrive à terme, un bouton qui est poussé ou une porte venant à être fermé. Un nombre d’outputs peuvent être spécifié par un programmeur à l’intérieur d' une entité pour déclencher un nombre de critères. Les outputs sont indiqués dans l’onglet Outputs dans les propriétés de l’entité. L’onglet Ouputs dans la fenêtre Object Properties montre tout les output qui sont reliées de cette entité à d'autres entités.

Hammer_entityio1.jpg


1. Nom de l’output qui doit être déclenché.
2. Nom de l’entité réceptrice de l’output (cliquez sur une entité avec l’outil Eye Dropper pour coller le nom ici).
3. Input d’une autre entité qui recevra l’output. C'est là que vous choisirez quelle action sur l’entité target vous voulez que l’output active. Par exemple, si vous voulez rappeler un soldat avec npc_combine_s , vous pouvez employer l’input BeginRappel.
4. Parametre supplémentaire à utiliser si les données sont acceptées par l’input cible. Souvent c'est un nombre employé par la fonction de l’input (voir la section Inputs ci dessous).
5. Délais de retardement envoyer à l’output (en secondes). 1/10 de seconde est exprimé "0.1" seconde.
6. Mise à feu de l’output une fois seulement.

Exemple d’outputs

OnTrigger - Quand cette entité est déclenchée, il enclenchera la mise a feu de cette output.
OnMapSpawn - Quand cette map est chargée, cet output déclenché.

Inputs

Hammer_entityio2.jpg


Les inputs sont reliable aux outputs de n’importe quel categorie. Ici nous voyons l’onglet Inputs dans la boite de dialogue Object Properties. Il montre tous les outputs de cette entité qui sont reliées d'autres entités.
Puisque n'importe quel output peut être relié à n'importe quelle input, il y a une multitude de combinaisons qui peuvent être employées pour produire des interactions complexes. Les chronométreurs peuvent orchestrer un ordre de compte à rebours en utilisant des sprites de clignotement, sons et effets speciaux tous sans avoir besoin d'entités spéciales. En cliquant sur le bouton Mark ou en double cliquant sur une entré de la liste, l'utilisateur peut aller à l'entité envoyant l’output à l'input en question.
Si une connexion apparaît en rouge, elle est invalide. Ceci signifie que l'un ou l'autre output n'existe pas dans l'entité source, ou bien que l’input n’est pas présent dans l’entité de destination. Les connexion invalides sont bénigne mais devraient être fixées avant la compilation de la carte parce que le menu de commande Check For Problems les rapportera comme une erreur.

Outputs avec valeurs

Très peu de sorties émettent des valeurs. Un des cas est math_counter's OutValue output. Ces outputs sont liées aux inputs qui prennent un paramètre, et compléte une valeur pour ce paramètre lors du déclenchement. Par exemple, dans math_counter il pourrait y avoir l’input suivant: OutValue mover SetPosition <none> là où le moteur est a func_movelinear[/i]. La position du moteur peut alors être changé par les opérations arithmétiques simples du math_counter.

Debugging

Puisque la nature de la façon dont les entités communiquent est devenue plus complexe et puissante, il à aussi plus de possibilités de correction du moteur pour vous aider à dépister des problèmes. Si une chaîne de I/O logique ne fonctionne pas comme prévu, les outils ci-dessous faciliteront considérablement la résolution d'erreur.

developer En plaçant cette variable console à une valeur de "2", vous recevrez une description détaillée de la façon dont les entités agissent les unes par rapport aux autres par l'intermédiaire du système d'entité I/O. Ceci est utile pour voir la série d'événements exacte ayant lieu pendant des interactions complexes.

ent_messages_draw En plaçant cette variable à une valeur de "1" vous revevrez des informations visuelles sur la façon dont les entités communiquent entre elles. C'est très semblable à l’utilisation de la variable console, mais peut parfois être tout de suite plus intuitif lors de la visualisation.

ent_fire (entity name, input name, input value) Cette commande vous permet la mise à feu manuelle des entrées d’une entité à partir de la console. Ceci peut être très utile pour tester les parametres d’entités en temps réel. Pour la mise à feu l’ "Open" input pour une entité nommé "testentity" avec un paramètre input de "3", vous taperez manuellement: ent_fire testentity open 3

ent_pause Cette commande met en pause les entités de la map. Si elle est entrée de nouveau, les entités reprendront leur comportement normal. C'est plus utile en utilisant la commande ent_step, décrite ci-dessous.

ent_step Utilisé avec la commande ent_pause, cette commande permet à l’utilisateur d’exécuter pas à pas une chaîne d’entités pour les input et output. Tout nombre d'étapes peut être réitéré à en même temps, en entrant une valeur est entré après la commande (i.e. "ent_step 3" Permet d’exécuter 3 pas à la fois).

Traduction de : Inputs and Outputs
 
Discord Hytale, Minecraft, Rust, ARK, FiveM

Découvrez mTxServ!

Discord d'entraide

Rejoignz-nous sur Discord