調べ物。Microthreadについて。まとまってないし、思いつきで書いてるのでいい加減なこと書いてるかも。
Microthreadについては、いろんな人が書いてるの、
http://d.hatena.ne.jp/shinichiro_h/20040106#p1
がまとまってるのでそっちを参考に。


個人的にはThreadとcontinuation、この二つの単語の中間って印象が。どっちもなんか微妙なので、呼び名はFiberでいいって気がする。

使い道はありそうだけど、実際の所どういったところに使うんだろうかこれ。例に出てるシューティングなんかは規定の行動を順に行うみたいなので、確かにこれ使ったほうがきれいにかけそうだけど。


考えてみたけどMicrothreadを使ってきれいに書けるのは毎フレーム呼び出される形のために処理が細切れになってる、連続したアニメーションを再生する部分か。結局ゲームオブジェクトの処理自体はFSMで書く必要がある気が。

  • 非リアルタイム系のゲーム、古典的なSRPGでも想定してみる。AI関係の処理は除くとして、基本的に一時中断して処理を明け渡すのは、1フレーム分の(描写関係)処理が終わった時。で、終わるまで、毎フレーム描写の所だけ再開、中断を繰り返す。例えば、移動中、攻撃モーション等。この場合、行動中は他にやることないし。
  • リアルタイム系ゲーム。割り込みとか入るだろうし、そっちはメインのFSMに任せて、アニメーションのFSMだけ別にMicroThread化、アニメーションに遷移が起こらない時だけresume?きれいに書けるのかよくわからん。
  • 後はAI処理。普通の処理はともかく、RTS系ゲームの経路探索みたいにフレーム間にまたがったり、他にいろいろやる必要のある処理の場合はこれ以外の方法だと面倒そう。Microthreadなら同期とる必要はないし、処理量の調整も楽。