特にSTGでは人気があるようなのですが、
どうにも合点が行かない箇所があります。
大真面目に凝ったタスクシステムは作ったことはないのですが、
基本的に
class TaskBase { virtual ~TaskBase(){} virtual void Update() = 0; }というのを継承して関数定義をして、
list<TaskBase*> TaskList;
//****************************
//擬似コード イテレータは略
for()
{
It->Update();
}
のように一斉処理をする、のような感じだろうと解釈しています
(これは勘違いかもしれませんし、実装には多種多様な方法があるそうですが)
ここで私が感じる違和感は
1、追加修正も含め、オブジェクト同士の通信が非常に面倒そう
(一つ一つが独立しているし、関係性が増えてくると、私の脳がパンクしそう)
2、仮に弾ひとつひとつにTaskを割り当てるとすると、
100個の弾だと100回のnewが入ってしまうこと
3、アルファ合成もの、影の描画など順序が重要な場合の部分の制御が面倒そう
4、レンダリングの設定を大きく変更する必要がある場合、処理が独立していると、
設定変更に大きな無駄が出る。
(Taskの中で、変更→描画→元にもどす、が繰り返されてしまう分変更が無駄に繰り替えされてしまう)
(すごくシンプルに書けば、変更→必要なものすべてループで描画→元にもどす、と無駄が少ない)
どうしてもタスクシステムの適用が良いという状況が少ないように感じられてしまいます。
しかし、おいしいところがあるから、
もてはやされたトピックだと思うのですが、いまひとつピンと来ないのです。
そこで、”おいしさ”の部分についてもう少し知りたく、お伺いしたいです。
よろしくお願いします。