タグ付けされた質問 「events」

イベントは、通常メインプログラムスレッドの「外部」で発生するアクションですが、その内部で処理されます。

3
イベントシステムを設定するより良い方法はありますか?
イベントシステムは驚くべきものであり、非常に扱いにくいコードを飼いならし、オブジェクトとゲームループの簡単な通信を通じてゲームの動的な作成を可能にします。現在の実装の効率に苦労しています。現在、オブジェクトのリストをそれらが応答するイベントに分離するという私のわずかな最適化は不思議に思っていますが、私ができることがもっとあるはずです。 現在、私は2つの方法があります: 最も単純:イベントが送信されると、すべてのオブジェクトがベクターに追加されます。すべてのオブジェクトには、handle_event()メソッドを介してイベントが送信されます。 より複雑:キーが文字列、値が整数のマップがあります。イベントタイプが追加されると、それはこのマップに追加され、intは単純にインクリメントされます(より良い方法が必要 です)。次に、オブジェクトのベクトルのベクトルが新しいベクトルを押し戻し、そのタイプのイベントを処理します。 イベントが呼び出されると、eventTypesマップの対応するintをオブジェクトのベクターのベクター内の型に呼び出し、そのイベントタイプを処理する各オブジェクトにそのイベントを送信します。 これらの最初の方法は、多くのオブジェクトに対して(明らかに)非常に低速ですが、非常に少数のオブジェクトに対しては非常に高速です。2番目の方法は、異なるタイプのイベントを処理したい大きなオブジェクトでは非常に高速ですが、同じタイプのイベントを処理するオブジェクトを使用するオブジェクトごとの最初の方法よりも低速です。 より速い(実行時間に関して)方法はありますか?文字列型からintを検索するより速い方法はありますか?(最初は列挙型がありましたが、必要なレベルのダイナミズムのために必要なカスタム型は許可されていませんでした。)

2
イベントでの開発はゲームでどのような役割を果たしますか?
ほとんどのアプリケーション開発はイベントの開発に基づいていますが、ゲーム開発のゲームループスタイルと(多くの場合)高いパフォーマンス/スループットの必要性を考慮すると、イベントを使用した開発にはどのような役割があり、トレードオフは何ですか?しばしば含まれる同期/ロックは、より大きな影響を及ぼしますか? 例:-ネットワーク[レイヤー]は、受信したデータをゲームループにどのように通知しますか?-物理システムはどのように衝突を通知しますか イベントを使ったゲーム開発が厳禁だった時代を思い出すことができるからです。これは変わりましたか?

4
XNAゲームでイベントを使用する必要がありますか?
画面にボタンを描画するボタンクラスを作成しました。それをクリックすると、何かが起こっているのを見たいです。WinFormでは、ボタンのOnClickイベントを使用します。XNAはどうですか? OnClickイベントをボタンクラスに追加する必要がありますか?それは良い習慣ですか?それ以外の場合、ゲームループでイベントをどのように処理しますか?
8 xna  xna-4.0  .net  events 

2
後でアクションが完了するのを待つコマンドまたはイベントの処理
2つのイベントがあるとします:Action1とAction2。Action1を受け取ったときに、次にAction2が回転するときに使用する任意のデータを保存する必要があります。最適には、Action1は通常コマンドですが、他のイベントにすることもできます。考え方は同じです。 これを実装する現在の方法は、状態を格納し、特定の状態が存在する場合にAction2が呼び出されたときに単純にチェックすることです。これは明らかに少し厄介であり、多くの冗長なコードにつながります。これが私がこれをどのように行っているかの例を、疑似コードの形式で(そして明らかにかなり細かく分解して)示します。 void onAction1(event) { Player = event.getPlayer() Player.addState("my_action_to_do") } void onAction2(event) { Player = event.getPlayer() if not Player.hasState("my_action_to_do") { return } // Do something } 他の多くのアクションでこれを行うと、それはやや醜くなり、それを改善するために私にできることがあるかどうか知りたいと思いました。 データを渡す必要がないようなものを考えていましたが、これも正しい方向ではありませんか? void onAction1(event) { Player = event.getPlayer() Player.onAction2(new Runnable() { public void run() { // Do something } }) } それをさらに進めたい場合は、単にこれを行うことはできませんか? void onPlayerEnter(event) …
7 java  events 

3
イベント、投稿とキューイング
メッセージングシステムを実装していて、イベントをどのように処理する必要があるのか​​疑問に思っています。それらをポストして、受信したらすぐに適切なリスナーに送信する必要がありますか、それともキューに入れて、(おそらくメインのゲームループによって)プロンプトが表示されたときにのみディスパッチする必要がありますか? 編集: 詳細 私のゲームは2Dプラットフォーマーなので、パフォーマンスを達成するのはそれほど難しくありません。Roy T.の発言を考慮すると、イベントが投稿されたらすぐに送信するのもよいでしょう。それをキューに入れる必要はないようです(もちろん、何か欠落している場合を除きます)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.