コードスペランカー

ゲーム開発日誌など

シーンの初期化と更新の自動化

XNAモドキの話なのだがXNAの基本処理は

ってな感じで行われている。オレのシステム設計としては、このプロセスが複数同時に動いて欲しい。しかも、後で追加したり、削除しながら動いて欲しいのだ。
「更新⇒描画」の部分だけなら「更新1、更新2、更新3、描画1、描画2、描画2」といった感じにできるが、初期化や終了が絡んでくると、ちと面倒だ。更に言うなら初期化というやつには、意外と重たい処理であるグラフィックや音声といったデータの読み取りも行っているので初期化中にゲームが完全停止するのは何とか避けたい。
初期化中はローディング画面とか出しておきたいという希望なので、ある処理が初期化中だけ動く別な更新処理と描画処理が必要になる。
材料がそろった所で、実際に処理をしてみるわけだが、面倒な部分はスレッドという形で丸投げして、スレッドの終了フラグを設定してそれを見て同期を取ることにした。具体的には「初期化」と「終了」は別スレッドとして動いていて「更新」と「描画」は本スレッドで制御して動かすという方法をとった。フラグ管理がちょっとばかり面倒になったが、うまく動いてるようなので良いとして置く。