Luaスクリプトを使用したC++ゲームのデザイン/スケルトンコーディングフェーズにいますが、デザインの問題が発生しました。
ゲームには同じ種類のエンティティのコピーが多数あり、動作は同じスクリプトによって制御されます。単一のlua_state内の同じタイプのエンティティ間でスクリプトを共有できる簡単な方法はありますか?私はこの質問がインターネット上で数回尋ねられたのを見つけることができました。同じスクリプトを異なるlua_stateにロードするのが良いかどうかについての混合フィードバックを読みましたが、代替案についての詳細なフィードバックではありません。
シンプルで防弾ですが、同じエンティティタイプの各インスタンスが作成された同じバイトコードの追加コピーをロード、コンパイル、および保存することは悲劇的な無駄だと思うので、よりスマートなソリューションを見つけたいと思います。
これらは私が考えた2つの解決策です。私はプログラミングやCまたはOOの概念に慣れていませんが、Lua、特にLua /CAPIに関してはまだ学んでいます。私のアイデアは健全だと思いますが、どうやってそれらを実装するのかさえわかりません。
LuaスクリプトにOOを実装し、各エンティティをLuaオブジェクトで表すようにします。すべてのLuaロジックがオブジェクトに作用します。これには、単一のエンティティによって地球環境を変更できるという利点(または「利点」)もあります。
setfenvを使用して各エンティティを独自の環境にカプセル化し、グローバル空間からすべての関数の参照をコピーします。私が理解しているように、envはデフォルトのグローバルとは異なるテーブルですが、setfenvを調べましたが、それをどのように行うかわかりません。