スレッディングなしのスクリプティングとシネマティクス
ゲームエンジンにスクリプトを実装する方法に苦労しています。いくつかの要件があります。直感的である必要があり、カスタム言語、パーサー、インタープリターを記述したくない、スレッドを使用したくない、などです。(もっと簡単な解決策があると確信しています。複数のゲームロジックスレッドの面倒は必要ありません。)Pythonのスクリプトの例(別名擬似コード): def dramatic_scene(actors): alice = actors["alice"] bob = actors["bob"] alice.walk_to(bob) if bob.can_see(alice): bob.say("Hello again!") else: alice.say("Excuse me, Bob?") ストーリーテリングの壮大な部分は、実装の問題を引き起こします。walk_toゲームの時間がかかるため、メソッド全体を一度に評価することはできません。すぐに戻ると、アリスはボブに向かって歩き始め、(同じフレームで)挨拶(または挨拶)します。しかし、walk_toBobに到達したときに戻るブロッキングコールは、アリスが歩くのと同じ実行スレッドをブロックしているため、ゲームが停止します。 各機能をアクションにalice.walk_to(bob)キューに入れることを検討しました- オブジェクトをキューにプッシュし、アリスがどこにいてもボブに到達した後にポップされます。それはもっと微妙に壊れています:ifブランチはすぐに評価されるので、ボブがアリスに背を向けても挨拶するかもしれません。 他のエンジン/人は、スレッドを作成せずにスクリプトをどのように処理しますか?私は、jQueryアニメーションチェーンなど、ゲーム開発者以外の領域でアイデアを探し始めています。この種の問題にはいくつかの良いパターンがあるはずです。