NeoBlogKossy

ゲームプログラマー kossy のゲームにまつわるひそかにレポート(ひそレポ) 足跡残していってくださいな☆

全体表示

[ リスト ]

【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
{
//スレッド実体
Thread mNewThread;

//スレッド生成 (updateThread は起動メソッドです)
mNewThread = new Thread( new ThreadStart( updateThread ) );

volatile bool mShouldStop = false;

//実際に起動されるメソッド
private void updateThread()
{
#if XBOX360
//お好きな HWT を設定 (2コア目を設定)
Thread.CurrentThread.SetProcessorAffinity(4);
#endif


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 を呼ばないタイミングがあり、
ゲームが再起動しない場合がありました。
タスクマネージャーのプロセスを見て、判明…



閉じる コメント(7)

顔アイコン

いつも楽しみに拝見させていただいております。PC版をつくるご予定などはあったりしないのでしょうか?ぜひつくってほしいです!

2012/1/24(火) 午前 11:40 [ pla*is*j* ]

Yahoo!アバター

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 ]

Yahoo!アバター

XNAのPC版が配信出来るなんて、知りませんでした!
勉強になりました。
ただ、現状のXNAそのままでは、XNAランタイムや.NETフレームワークが必要になると思うので、その辺りを対応すると、結構作業を要すると思います。
この辺りの解決策って有るのでしょうか…?

2012/1/26(木) 午前 1:32 [ kos*y*com ]

Yahoo!アバター

ClickOnceで行けるとの情報を頂きました。
Peripheral周りの対応も要りそうですが、
一度試してみる価値はありそうですね。

2012/1/26(木) 午前 2:17 [ kos*y*com ]

顔アイコン

すみません、我々実は、正直技術的なところは詳しくなくて・・・(汗
何らか解決しそうでよかったです!

ツイッターもフォローさせていただきました。
ひとまずはXboxの開発、そしてPC版への改修等々大変かと思いますが、
いつでもいいので、ご連絡お待ちしております。 削除

2012/1/26(木) 午後 1:58 [ playismjp ]

Yahoo!アバター

了解しました。
PC版を出す暁にはご連絡させて頂きます!

2012/1/26(木) 午後 11:36 [ kos*y*com ]

コメント投稿
名前パスワードブログ
投稿

閉じる トラックバック(0)

トラックバックされた記事

トラックバックされている記事がありません。

トラックバック先の記事

  • トラックバック先の記事がありません。


.

kos*y*com
人気度

ヘルプ

Yahoo Image

  今日 全体
訪問者 45 169512
ブログリンク 0 7
コメント 0 1179
トラックバック 0 77
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
検索 検索

開設日: 2006/7/11(火)


プライバシーポリシー -  利用規約 -  ガイドライン -  順守事項 -  ヘルプ・お問い合わせ

Copyright (C) 2012 Yahoo Japan Corporation. All Rights Reserved.