Implementing MicroThread / Coroutine via esp-swap for Danmaku Shoot....
マイクロ・スレッド(コルーチン)によるシューティングゲームの製作。コルーチンを使うと状態変数の数が減ってコードの見通しもすごく良くなる。シューティングゲームにはもってこいなんだけどパフォーマンスに課題があり実用的ではなかった。
このプレゼンのアイデアはコンテキスト・スイッチを自前で実装することでパフォーマンスの問題を解消するというもの。このアイデアはやねうらおさんも10年ほど前に言っていた。
これ以外で実装するとなるとスレッドやファイバーなんかを使わなくてはいけなくなり、コンテキスト・スイッチの負荷が無視できなくなる。Windows7以降だとUMSを使ったりとか。スレッドやファイバーでの実装例としてはBoost.CorouineやHamigaki.Coroutineなどがある。
コルーチンとか継続ネタって何年かに一回盛り上がるんだよね。ワールドカップやオリンピックのように。最近はBoost.Contextでまた盛り上がってきているような気がする。
今作っているシューティングゲームもこの考えを取り入れたいが、X64だとインライン・アセンブラが使えないしまたMetro StyleだとXBYAK使えないのでどうしようか悩んでいる。デスクトップ・アプリにすると今度はUIの問題が出てくるし本当に悩ましいね。一番の問題は高い壁(私にとって)を乗り越えられない私のヘタレさだが。