浮上

面白いネタを見つけたので久々に更新。

ゲームのマルチスレッド化の話。

ゲームの処理は大体update→drawの2ステップの繰り返しで進行していくところを、update、衝突判定(interact)、drawの3ステップに分け、updateの後、interactとdrawを並列に処理することで早くできないかな、とかふと思いついてやってみたら、予想以上に良好な結果になった。

大量の球形オブジェクトをばら撒いて衝突判定させた結果、Core Duo T2300(1.66Gz) & GeForceGo 7400のノートで、マルチスレッド化無しで1100、有りで1800オブジェクトくらいまで60FPSを維持できた。
このやり方は定石にできるかもしれない。
(当然ながら、マルチコアでもハイパースレッディング対応でもないCPUだと変化は無い。ちなみに単なる総当りで500弱、等間隔のグリッドに刻んで1100、マルチスレッド化で1800、IDでソートして自分より大きいIDの相手とのみ計算で2200くらい、と高速化中。細かい部分詰めればもう少し早くなりそう)

http://stage6.divx.com/user/i_saint/video/1320345/exceed_20070615


まあそんなわけで、仕事の合間を縫ってのろのろと流体シミュみたいなシューティングを製作中。
グラディウスVは隕石の面が一番好きです。