敵オブジェクトが敵弾オブジェクトを生成する処理をMissileスクリプトで記述することを考える。
その場合、敵スクリプトから、敵弾スクリプトが呼び出される形になるわけだが、ゲーム中にはたくさんの種類の敵と敵弾を登場させる必要があるため、敵1から敵弾1が発射されるパターンや、敵1から敵弾2が発射されるパターンなど、敵スクリプトと敵弾スクリプトを自由に組み合わせて使えると楽になるはずである。
敵スクリプトと敵弾スクリプトの間で依存性があると、スクリプトを使いまわしすることが出来なくなるので、似たようなスクリプトをたくさん書かなくてはならない状況になってしまう。
AスクリプトからBスクリプトを呼び出す場合に、Aスクリプト中にBスクリプトのファイル名を直接記述せずに、外からスクリプト間のバインディングを決定できるような機構があれば、スクリプト間の依存性を無くすことが出来る。
要するに、Seasar2フレームワークのDIコンテナみたいな仕組みを取り込みたいわけである。
ITProのDI解説
WikipediaのDI解説
現状の仕様でも、スクリプト間の依存性がなるべく小さくなるようにMissileスクリプトは設計されている。そのため、スクリプトは単体で実行してテストすることができるようになっている。
この仕様をもう一歩進めて、DI的な仕組みを入れることができれば、スクリプトを「部品」として自由に組み合わせて作っていくことが出来るようになるだろう。
しかし、上記のリンクとかを見てもらえれば分かるが、スクリプターにとってとDIというのは難しい概念だ。そんな概念を知らずとも、自然に使えるような構文を考えないといかんですね。
0 件のコメント:
コメントを投稿