【xnaひそレポ日記】第25回 ア ボクセル アクション (aVoxelAction) スレッド作成
|
XNA aVoxelAction (ア ボクセル アクション) プレイ映像 粛々と開発の終わりを迎えている、ア ボクセル アクション (aVoxelAction)ですが、 折角スレッドも勉強したので、覚書程度にまとめます。 事の発端は、セーブデータについて、かなりの小さいサイズでした。 これなら非同期要らないんじゃ無いかと思い、 ストレージ管理を同期処理で書いてはみたものの、Xbox360では瞬間重くなる… こんな時は、同期処理のまま、まるごとスレッド化に限ります!(いえ、別に限りませんケド…) Xbox360のCPUは物理的に3つ載っていて、 1コアに付き、2つのハードウェアスレッド(HWT)が起動可能です。 実質、6CPUの様な振る舞いが出来る理由で、 これを活用しない手はありません。 スレッドを使う前提として、CPU間での同期は必然ですが、 セーブ/ロード処理は比較的切り分け易いと思います。 XNA Xbox360 HWTについてはこちらを http://msdn.microsoft.com/ja-jp/library/microsoft.xna.net_cf.system.threading.thread.setprocessoraffinity.aspx 0コアめ、1コアめと1HWTずつXNAに専有されているので、 狙い目は2コア目の完全?フリーなCPUです。 public class cGameThread {
//スレッド実体
#if XBOX360Thread mNewThread; //スレッド生成 (updateThread は起動メソッドです) mNewThread = new Thread( new ThreadStart( updateThread ) ); volatile bool mShouldStop = false; //実際に起動されるメソッド private void updateThread() {
//お好きな HWT を設定 (2コア目を設定)
#endifThread.CurrentThread.SetProcessorAffinity(4);
while(mShouldStop == false){
}
//実際の処理
}… … … //ミリ秒停止 Thread.Sleep(1);
// スレッドを強制終了
}public void Abort() {
mShouldStop = true;
}m_cNewThread.Abort(); // スレッドが終了するまで待機 public void Join() {
mShouldStop = true;
}m_cNewThread.Join(); ゲーム終了時に Join を呼べば終了します。 *Windowsであったのですが、何かの拍子に Join を呼ばないタイミングがあり、 ゲームが再起動しない場合がありました。 タスクマネージャーのプロセスを見て、判明… |

いつも楽しみに拝見させていただいております。PC版をつくるご予定などはあったりしないのでしょうか?ぜひつくってほしいです!
2012/1/24(火) 午前 11:40 [ pla*is*j* ]
playismjpさん
コメント有難うございます!
XNAで作成しているので、PC版は既にあります。
XNAのゲームのPC配信って出来るんですかね?
2012/1/24(火) 午後 10:47 [ kos*y*com ]
権利的に、PC版の配信は特に問題ないはずです。日本ではあんまりないですが、XNAで開発し、PC版を配信してるゲームは海外ではいろいろあります。steamで配信されているsequenceなどなど。
実は私は、PLAYISMというPCゲーム配信サイトの運営に携わっており、日々、素敵なインディーズゲームを探しております。ア ボクセル アクションは以前から素敵なタイトルだなあと思っておりました。でも、X boxなのか…と思っておりました。
PC版配信されるなら、PLAYISMで出していただけると、非常にうれしいです!
(営業書込みで申し訳ありません)
2012/1/25(水) 午後 8:43 [ playismjp ]
XNAのPC版が配信出来るなんて、知りませんでした!
勉強になりました。
ただ、現状のXNAそのままでは、XNAランタイムや.NETフレームワークが必要になると思うので、その辺りを対応すると、結構作業を要すると思います。
この辺りの解決策って有るのでしょうか…?
2012/1/26(木) 午前 1:32 [ kos*y*com ]
ClickOnceで行けるとの情報を頂きました。
Peripheral周りの対応も要りそうですが、
一度試してみる価値はありそうですね。
2012/1/26(木) 午前 2:17 [ kos*y*com ]
すみません、我々実は、正直技術的なところは詳しくなくて・・・(汗
何らか解決しそうでよかったです!
ツイッターもフォローさせていただきました。
ひとまずはXboxの開発、そしてPC版への改修等々大変かと思いますが、
いつでもいいので、ご連絡お待ちしております。
2012/1/26(木) 午後 1:58 [ playismjp ]
了解しました。
PC版を出す暁にはご連絡させて頂きます!
2012/1/26(木) 午後 11:36 [ kos*y*com ]