Top > OUTPUT > INPUT > diff

OUTPUT/INPUT の変更点


 *OUTPUT/INPUT [#j009d309]
 *解説 [#h6890d61]
 同じエンティティを複数おく場合があるので、当然置いたエンティティには固有の名前をつけることができる。
 Aエンティティは、ある状態(my output namedに設定)になったとき、Bエンティティ(targets entities namedに設定)に対して、イベント(via this inputに設定)を送ることができる。
 例:ボタンエンティティ(func_button)は、ボタンが押されたとき(OnPressed)、通れないバリア(barrier_example_1)を消す(Disable)
 
 * [#x4f77aa1]
 以下は
 http://tendon.s35.xrea.com/phpBB/kb.php?mode=article&k=82
 からの転載です。
 
 説明: Entity I/O
 *エンティティI/O(入出力) [#na6de266]
 
 ソースエンジンでのマッピングにおける最重要変更点の一つはエンティティI/O(入出力)です。以前のエンジンではターゲットとターゲットネームのキーフィールドに依存してエンティティに単純な刺激を送っていましたが、このエンティティI/Oシステムではエンティティ間の複雑な通信が可能になります。これはコネクションによって結ばれたエンティティのインプットとアウトプットによって行われます。このシンプルな方法によって、エンティティは状態変化に基づいてイベントを簡単にトリガーでき、そして今までに比べ他のエンティティとの協調動作がよりアトミックで論理的で強力にできるようになります。
 
 ターゲットエンティティに関してターゲットに特殊な設定をすることも出来ます。
 詳しくは以下を
 https://developer.valvesoftware.com/wiki/Targetname
 
 
 *概要 [#j2eae175]
 
 エンティティは二つの通信手段を持っています: 他のエンティティにアウトプットを送ること、もしくは他のエンティティからインプットを受け取ることです。あるエンティティは殺されたときにアウトプットを他のエンティティのインプットに送って、その色を変えるかもしれません。同じアウトプットはまた別のエンティティのSpawnインプットをトリガーさせるのに使うこともできます。アウトプットとインプットはコネクションによって対になり、そこでは受信エンティティへの追加データ、アウトプットを受け取ってからの遅延時間、アウトプットをまた後で送ることが可能であるか、といったことがコントロールされます。
 
 アウトプットはどんなインプットに結びつけることができ、その逆も成り立ちます。
 
 これによってエンティティ間の複雑で協力なインタラクションが可能になるのです。
 
 例として、logic_timerエンティティは時間の条件が満たされたときにOnTimerアウトプットを出します。このアウトプットを env_spriteのShowインプットに接続すると、タイマーが指定の時間になったときにenv_spriteが表示されるということになります。また同様にlogic_timerのOnTimerアウトプットをenv_sparkのSparkOnceに結びつけることで、雷を出すこともできます。コネクションのプロパティを変更することで、アウトプットが2秒間の遅れの後でトリガーされたり、トリガーは一度だけでもう二度と起きないようにもできます。
 
 オリジナルのハーフライフでのエンティティ情報伝達の方に慣れているユーザに対しての情報です。targetnameとtargetフィールドは今では廃止され、エンティティI/Oシステムがその機能の上位集合になっています。自分のtargetエンティティにのみトリガーを送る trigger_multipleエンティティの代わりに、今では同じ効果を得るためにOnStartTouch, OnEndTouch, OnTouchといったアウトプットを何個でもつかうことができます。これらのアウトプットは同時に任意の個数のエンティティにそれぞれに時間遅れの設定を持たせてつなげることが可能なので、multi-managersも廃止になりました。同様に、killtargetフィールドも他のエンティティの Killインプットへの接続によって置き換えられました。
 
 
 
 *アウトプット [#ta793631]
 
 アウトプットはエンティティの状態が変化した時に発動するイベントです。この状態変化は、タイマーが終了時刻になったり、ボタンが押されたり、ドアが閉まったりといったものなどがあります。プログラマはエンティティの中にいくらでも様々な評価に基づいて発動するアウトプットを作ることができます。アウトプットの指定はエンティティプロパティのアウトプットタブで行えます。オブジェクトプロパティのアウトプットタブはこのエンティティから他のエンティティに接続している全てのアウトプットを表示します。
 
 +トリガーされるアウトプットの名前
 +アウトプットを受け取るエンティティの名前(エンティティをアイドロッパーツールでクリックしてその名前を貼り付けることができます)
 +アウトプットを受け取る対象エンティティのインプットの名前
 +対象インプットがデータを受け入れる場合に使用できるパラメータオーバーライド。インプットファンクションが使う数字であることが多い。(下のインプットセクションを参照)
 +アウトプットを送るときの時間遅れ(単位は秒)。10分の1秒は"0.1"秒と表現される。
 +アウトプットの発動が一回のみであるか
 
 
 ・Via this inputリスト・
 Activate
 AddHealth
 AddOutput
 Alpha
 AlternativeSorting
 Break
 ClearParent
 Close
 Color
 direction
 Disable
 DisableCollision
 Disabled
 DisableDamageForces
 DisableFloating
 DisableMotion
 DisablePhyscannonPickup
 DisablePuntSound
 DisableShadow
 Enable
 EnableCollision
 EnableDamageForces
 EnableMotion
 EnablePhyscannonPickup
 EnablePuntSound
 EnableShadow
 Explode
 FadeIn
 FadeOut
 FadeToPattern
 FireUser1~4
 ForceDrop
 Hurt
 Ignite
 IgniteHitboxFireScale
 IgniteLifetime
 IgniteNumHitboxFires
 Kill
 KillHierarchy
 Lock
 Open
 physdamagescale
 Pitch
 PlaySound
 Press
 PressIn
 PressOut
 RemoveHealth
 SetAngles
 SetAngularVelocity
 SetAnimation
 SetBodyGroup
 SetCheapWaterEndDistance
 SetCheapWaterStartDistance
 SetColor
 SetDamage
 SetDamageFilter
 SetDefaultAnimation
 SetDistance
 SetExcluded
 SetHealth
 SetInvert
 SetMass
 SetParent
 SetParentAttachment
 SetParentAttachmentMaintainOffset
 SetPattern
 SetPlaybackRate
 SetShadowsDisabled
 SetSpeed
 Skin
 Sleep
 StopSound
 TestActivator
 Toggle
 ToggleEnabled
 ToggleSound
 TurnOff
 TurnOn
 Unlock
 Volume
 Wake
 *インプット [#fce01d42]
 
 インプットはどんなタイプのアウトプットにも繋がります。ここでオブジェクトプロパティダイアログのインプットタブを見てみましょう。これはこのエンティティに接続している全てのアウトプットを表示しています。
 
 どんなアウトプットもどんなインプットに接続することができるので、複雑なインタラクションを起こすような多数のコンビネーションを作ることができます。タイマーは特別なエンティティの助けなしに、点滅するスプライト、音、特殊効果を使ってカウントダウンを演出することができます。Markボタンをクリックするか、リスト中のエンティティをダブルクリックすることで、アウトプットを送っているエンティティに移動することができます。
 
 コネクションが赤く表示されている場合、それは無効です。これはアウトプットが送り元のエンティティに存在しないか、インプットが送り先のエンティティにないかです。無効なコネクションは無害ですが、Check For Problemsメニューコマンドがエラーとして報告するのでマップのコンパイルより前に修正する必要があります。
 
 
 
 
 *デバッグ [#f8778030]
 
 エンティティの通信がとても複雑にそして強力になったので、問題を追跡するエンジン能力も強力になりました。インプットとアウトプットロジックの鎖が期待通りに動かない場合、以下のツールがエラーを解決する大きな助けになるでしょう。
 
 **developer [#p125f9bd]
 
 このコンソール変数の値を"2"に設定することで、エンティティがI/Oシステムを通じてどうインタラクションを行っているかの詳細なログをみることができます。これは複雑なインタラクションの中どんな一連のイベントが起こっているのかを見るのに役に立ちます。
 
 **ent_messages_draw [#v9ff6fea]
 
 このコンソール変数の値を"1"に設定することでエンティティがどのように通信しているのかを視覚的に見ることができます。ent_developerの使用ともとても似ていますが、時により直感的に見ることができます。
 
 **ent_fire (エンティティ名, インプット名, インプットの値) [#j82167e8]
 
 このコンソールコマンドを使うことでコンソールから手動でエンティティのインプットを発動することができます。リアルタイムでエンティティの設定を試すのにとても役に立ちます。"testentity"という名前のエンティティの"Open"インプットを"3"というインプットパラメータで発動させるには、以下のように入力してください: ent_fire testentity open 3
 
 **ent_pause [#h5b797d3]
 
 このコマンドはマップ内のエンティティを停止させます。もう一度入力すると、エンティティは通常の振る舞いに戻ります。このコマンドは以下に説明があるent_stepコマンドと組み合わせたときに一番効果的です。
 
 **ent_step [#v6961664]
 
 ent_pauseコマンドと共に使われると、このコマンドでエンティティの一連のインプット、アウトプットの実行をゆっくり進ませることができます。コマンドの後ろに値を入れることで、一度に任意の数のステップを実行ことができます。(例 "ent_step 3"は一度に3ステップを実行します)