コードスペランカー

ゲーム開発日誌など

複数オブジェクトの同時処理

複数のオブジェクトが互いに影響しあっている状況で同時に処理をしなければならない。
まぁ、それなりにあるシチュエーションだな。
厳密に行おうとするとCPUが1つしかない環境下では当然無理なわけだが、ごまかす手段はいくつかありそうなんで、思いついたことをメモしておく。

1、スレッドを使う
スレッド処理を行えば、それなりに同時っぽく見えるもんだ。
多少制御が面倒だけど、最近のプログラム言語であれば、かなりお手軽に使える。
問題点は、メモリを多く消費するので、1つ2つならともかく、多くを処理するのに向かないという点だ。

2、更新と処理を分離する
おそらく、こっちが一般的なんだろう手法になる。
ゲームプログラムよろしく更新(データの変更)と処理(ロジックの実行)を分離してしまえば、擬似的に「同時」に実行されたことにできる。
これなら、オブジェクトが多くあっても、効率的に処理が可能になる。
まぁ、更新と処理は本来一体のはずなんで、分離するとなると、それなりの仕組みが必要になるはず。

3、オブジェクト毎にプロセスを完全分離して、プロセス間通信させる
CPUが必要なオブジェクトの数分だけ用意できるのなら、一番確実なんだろうけど、分散コンピューティングとか非常にめんどくさいし、第一に必要な物理資源の確保が大変そう。でも最近はi7とか複数コアのCPUが一般的になってきてるので、少ない数のオブジェクトなら、スレッド分けと同等ぐらいの価値はあるかも知れん。

って方法をでっち上げたわけだが、個人で、沢山のオブジェクトをという前提で考えると2がもっともよさげな気がするわけだ。