スポンサーサイト

--年--月--日
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XNA:やっとこさセッションの検索に成功

2010年06月17日
ここ数日、XBOX360側ではセッションが作られているのに、PC側でそのセッションが検索結果に出てこないという事態で悶絶しておりました(汁
今しがた問題は解決できたのですが、参考になるかは別として覚書程度に書いておきます。

//memo
まず、セッションの作成は「NetworkSession.Create」メソッドでセッションオブジェクトを作成します。
これは簡単です。XNA万歳!

次に、セッションの一覧を取得します。これは「NetworkSession.Find」メソッドで「AvailableNetworkSessionCollection」オブジェクトを取得します。この中にセッションの数やホストのゲーマータグ名などの情報がまとめて放り込まれます。

XBOX360でセッションを作成して、PCでセッションの検索をすると、、、、
セッションが一つもありません。これは大問題です。
360側は間違いなくセッションの作成に成功していて、ホストとして待機中なのですが、PC側はそのセッションを見つけてくれません。
結局何が問題だったかというと、「networksession.Update()」の記述が足りなかったせいです。

NetworkSession.Createメソッドでセッションを作成した後は、毎フレーム「.Update()」をコールしなければならなかったようで、これに気が付くまでに数日かかりました(汁
XNA3.1のリファレンスヘルプの「方法 : ネットワーク セッションの検索および参加」のドキュメントで.Update()の事は何も記載されてなかったんだもん!
//memo end

リファレンスヘルプの「方法 : ネットワーク セッションを作成する」「方法 : ネットワーク セッションの検索および参加」の項目を参考にすれば万事OKという軽いノリでロビー画面を作っていましたが、おかげさまでかなり時間がかかってしまいました。しかもまだセッションホストのゲーマータグを表示しているだけで、まだ作業は残っています。
最低限の部分だけがやとこさ出来たという現状です。
XNA_20100617
上の画像がセッションの検索結果を表示しているPC側の画面です。
PC⇔360のシステムリンク扱いなので、セッションは1個しか作成できません。結果として360側のゲーマータグがホスト名として表示されています。(一応コード上では複数のセッションがあったら全部縦に並べて表示するようにはしていますが)

なんかこの先も苦行が続きそうな予感がします(汁
スポンサーサイト
Comment

管理者のみに表示

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。