Implementing MicroThread / Coroutine via esp-swap for Danmaku Shoot...

公開:2012-05-17 08:36
更新:2020-02-15 04:37
カテゴリ:シューティングゲーム,c++/cx,ゲーム,ゲーム製作

Implementing MicroThread / Coroutine via esp-swap for Danmaku Shoot....

マイクロ・スレッド(コルーチン)によるシューティングゲームの製作。コルーチンを使うと状態変数の数が減ってコードの見通しもすごく良くなる。シューティングゲームにはもってこいなんだけどパフォーマンスに課題があり実用的ではなかった。

このプレゼンのアイデアはコンテキスト・スイッチを自前で実装することでパフォーマンスの問題を解消するというもの。このアイデアはやねうらおさんも10年ほど前に言っていた

これ以外で実装するとなるとスレッドやファイバーなんかを使わなくてはいけなくなり、コンテキスト・スイッチの負荷が無視できなくなる。Windows7以降だとUMSを使ったりとか。スレッドやファイバーでの実装例としてはBoost.CorouineHamigaki.Coroutineなどがある。

コルーチンとか継続ネタって何年かに一回盛り上がるんだよね。ワールドカップやオリンピックのように。最近はBoost.Contextでまた盛り上がってきているような気がする。

今作っているシューティングゲームもこの考えを取り入れたいが、X64だとインライン・アセンブラが使えないしまたMetro StyleだとXBYAK使えないのでどうしようか悩んでいる。デスクトップ・アプリにすると今度はUIの問題が出てくるし本当に悩ましいね。一番の問題は高い壁(私にとって)を乗り越えられない私のヘタレさだが。