パーティクル エフェクトを生成するために使用される言語には、どのような表現力が適しているのだろうかと考えていました.エンジンをできるだけ柔軟にしたいとすると、どのような「機能」が必要ですか? (色、位置、速度、加速度などの些細なものに加えて)
3 に答える
だからみんながあなたに車輪の再発明をしないように勧めています、そしてそれは素晴らしいアイデアです、私はPythonのソフトスポットを持っています(これはあなたのスクリプトユーザーが他のたくさんの便利な数学ライブラリをインストールして使用することを可能にします&c)、しかしLUAは間違いなくさらに簡単です統合します(そしてRubyなどの他のスクリプト言語も間違いなく問題ありません)。独自のアドホックスクリプト言語を作成しないことは、優れたアドバイスです。
しかし、あなたの質問を読むと、あなたの問題はもっと重要であることがわかります-私のエンジンのオブジェクトのどの属性(そしてどのオブジェクト-粒子、確かに、しかし、他に何がありますか)私が残りのスクリプト言語(または、たとえば、MS COMまたは.NETを介して、ユーザーが好むスクリプト言語または非スクリプト言語を使用しますか?
あなたがリストしたもののような各粒子の特定の特性は間違いなく価値があります。エンジンには、たとえばサーフェスやその他の非点状のエンティティなど、点状の粒子以外に、粒子が跳ね返る可能性のあるものがありますか?引力または反発の「力」はどうですか?あなたの粒子は角運動量/スピンを持っているのでしょうか?
パーティクルのプロパティを「拡張」して、一般的な用語を使用することをお勧めします(他のオブジェクトモデルは同じアイデアを異なる方法で表現します)。エンジンを使用するアプリによっては、他のプログラマーがパーティクルにプロパティを追加することを決定する場合があります。彼らが必要としているのは...多分大量、多分-おそらく電気-多分あなたが知っているか気にかけているすべてのためにユーロセントでの費用;-)。これにより、ユーザーが関心のある特定の属性を追跡するためにハッシュテーブルなどで使用するための「パーティクルID」(もちろん、とにかくそうする必要があります;-)を提供するよりも、ユーザーの生活が楽になります。「メソッド」と「トリガー」(特定の条件が成立した場合に自動的に呼び出すメソッド、たとえば2つのパーティクルが特定の距離よりも近づく場合)を追加できるようにすることは素晴らしいことですが、少し難しいかもしれません。
ところで、パーティクルシステムの現在の状態(ユーザーが追加したexpandoプロパティを含む)を名前付きのストリームまたはファイルに「スナップショット」し、そのようなスナップショットから復元できるようにすることを忘れないでください。これは多くの人にとって絶対に重要です。を使用します。
特定のパーティクル(および、もしあればサーフェスなどの他のオブジェクト)を超えて、おそらく独自のプロパティ(expandoのものを含む)と理想的にはメソッドとトリガーを備えた「グローバル環境」が必要です。たとえば、すべての粒子に作用する力場は、それらの位置(およびおそらくそれらの電荷、質量など...!-)に応じて...
これらのアイデアのいくつかがあなたに興味深いものとして印象付けられることを願っています-あなたの意図する応用分野のアイデアがほとんどないので、私にはわかりません!-)
アプリケーションのためだけに新しい言語を設計しようとするのではなく、別の確立された言語をそこに埋め込んでください。独自のスクリプト言語を実装しようとしている他のアプリケーションに引き起こされた混乱を見てください (mIRC は良い例です)。これは、ユーザーがアプリケーションのスクリプトを作成するためだけに別の言語を学ばなければならないことを意味します。また、独自の言語を設計すると、他の言語ほど役に立たなくなる可能性があります。車輪の再発明を試みないでください。
Luaは軽量で人気があり、定評があり、ゲームで使用するように設計されており (ユーザーには EA、Blizzard、Garry's Mod などが含まれます)、非常に最小限のコアを備えているため、Luaを検討することをお勧めします。ライブラリ (モジュラー言語になるように設計されています)。
Luaを埋め込むだけです。これは、優れた言語設計、優れたパフォーマンス、ゲーム開発者によって広く使用されているものであり、数日で習得できるほど小さいものです。
その後、ゲームのデザインに取り掛かることができます。