日記書く暇がないなぁ。寝るまえに歯を磨きながらちょこっとか、朝起きて会社行く前にちょこっとか。
そういや日曜に秋葉原でXNAのイベントがあったんで行ってきた。
XNAで作ったゲームを展示しているので遊べます!というのと、あとXNA2.0のセッションがあったんで、主目的は後者。
展示のゲームもどんなんだか知らんけど、きっとレベル高くて見たら凹むようなのがいっぱいなんだろうなぁ、と思って行ったんだが…。
ぽろっとXbox360が置いてあって自由にプレイできる環境。11本ゲームが入ってたんで上から実行してったんだが1本目からかなり痛い感じでこれはつらい。
9本目くらいにはもうそのやばさ具合が楽しくなるぐらいだったんだけど、10本目、11本目は海外のコンテストで上位だった奴なのかな? かなり良くできててすごくほっとしました。
中にゲーム系の専門学校と思しきロゴを出してる物があったんで、おそらく9本は専門学校の学生の作品だったんだろうね。いったいどのくらいの期間で作ったんだろうね…。2週間とかならあんなもんかもしれんが…。
つか展示する方もなんか良いの探して来たほうがいいんじゃなかったのかとか思わなくも無かったり。
それはともかく2.0のセッション。Gamefestとやらと同じ内容らしいってことは知ってたんだけど、あんまり詳細な記事は無かったしね。
セッションの準備は手間取ってみたいでその間に雑談みたいな話があった。2.0では日本語版が出るとかなんとか。まあ俺は英語でも問題無かったけど、ドキュメントが日本語ならちょっと嬉しいかも*1。
あと作ったゲームの配布方法について簡単なアンケートとか。専用のメモリーパックみたいなのは?とか専用のダウンロードサイトみたいなのは?とかそんな感じだったような。
配布方法はいろいろ考えてはいるけど難しいみたいだねぇ。そりゃ難しいよね。
で、本番。2.0の目玉機能はやはりネットワーク対応。XboxLiveとGameForWindowsLiveでWindowsでもXbox360でも同じネットワーク環境を実現!
あとはGameStudioExpressじゃなくてGameStudioに。VC#ExpressじゃなくてもOKなのでついにViemuが使えるように!!
前半はかなり現状の説明、というかXNAの既知の利点っぽいの説明ばっかりだったな。学校の卒業製作とかで画面を出すまででも大変で挫折してたようなのがXNAで楽になりました!みたいな。しかしそんなレベルで卒業する学校というのも…。
途中でXbox360の.NETのGCがクソなんだけどどうにかならんの?とかいう質問とか。GCはどうにもならんらしい。ならんのか。まあ俺はそこまで使い込んでないが、やはり結局はいかにGCを起こさないようにするかが鍵になるんだろうな。
あと360の.NETCompactFrameworkは拡張されんのか、という質問をしようとしたら先にされて皆同じようなこと考えてんのなーと。答えとしては随時微妙に更新されてるよ、という感じ。まあつまり大幅に拡張されたりはしないってことだろう。
.NET3.0には対応しないの?とかの質問もあったが、そもそもCompactFrameworkだと3.0も何もないだろうとか思わんでもない。3.0ってコンパイラ変わってないじゃん。
もちろん対応予定は無くて、しかしWindowsなら3.0使うことも出来るけど使うとXPとか切り捨てになっちゃうよ、とかいう答えだった。XPでも3.0余裕で動きますが何か。もちろん3.5でも動いちゃいますが。
で、本番のネットワーク対応の話。
簡単に言えばさっき挙げた、XboxLiveとGameForWindowsLive対応。マッチングサーバーとかがLiveの方で用意されてるのが使えるぜひゃっほう!という話だ。
セッションの作成と検索、システムリンク(LAN対戦)、ボイスチャット、進行中のセッションへの参加とかXboxLiveで普通に使うような機能が簡単に使えるらしい。
ゲームが始まってからの通信自体はSendDataとReceiveDataでUDPベースのある程度信頼性とかパケットの到達順が保証されたプロトコルで通信するらしい。いちおうBinaryWriterみたいなPacketWriterクラスはあるけど、その程度みたいね。
GameForWindowsLive対応ってことで、WindowsでもXboxLiveみたいなあのアカウント管理用のウィンドウが自動的に出たりするようになるらしい。
あと当然のことならが待望のゲーマータグにアクセスする機能が追加!実績についてはスコアの問題から作れないみたいだけど、あのちっこいウィンドウは出せそうだからニセ実績は作れそうだぜ!!
ネットワークで2.0時点で無いけどそのうち実装されそうな機能としては、フレンドの招待、ランキングサーバー、プレゼンス詳細(これはよく知らん)というもの。
将来的にも無いものは、ランクマッチ、実績、RAWソケット、Liveサーバープラットフォーム、らしい。ランクマッチってなんだろう? セッションの検索の条件付けはかなり自由にできるようだけど、そういう意味のランクではないんだろうな。実績は上にも書いたけどスコア関連で無理だね。RAWソケットはXboxでは無理だけどまあWindowsだったらいつも通り使えるか。Liveサーバープラットフォームも良くわからんけど、Live上で独自サーバーにアクセスするってもんだっけ? RAWソケット使えなければどちらにしろ関係ないような。
で、ここで時間が無いとか言ってその他の新機能は飛ばされてしまった! 前半部分のいらないところを削ってでもそっち紹介してよ!
軽く読み取れた部分では、デバイス/リソースの管理の強化、MRT、持続RenderTarget、コンテンツパイプラインへの引数、なんかか。
デバイス/リソースの管理はあれか、デバイスロストが隠蔽されるのかな? それとも今ManagedなのかUnmanagedなのかよくわからんリソースが明確になるのかな? どっちにしろ楽にはなりそう。
MRTは意味が分からん。1.0でも使えなかったっけ?
持続RenderTargetもこれだけじゃ意味わからんけど、あれだね、XboxでRenderTargetをつけかえると内容がぶっこわれるのを隠蔽してくれる機能だろう。遅くなければ便利だね。
コンテンツパイプラインへの引数ってか、パラメータを渡せるのは嬉しいよな。モデル変換時にテクスチャ圧縮方法を渡せたりもできるようになるんだろう。
これ以上は読み取れなかったんだけど、地味に便利になってそうだね。
で、このセッションを聞いて思ったが、XNA2.0良さそうだなぁ。
マッチングとかアカウント管理の面倒な部分がLiveに任せられるんで、ネットワーク使うのにいろいろと楽はできそうだ。と言ってもゲーム始まってからの通信は自前なんで簡単にできる、とまではいかないし、セッションの管理もちゃんとやろうとするとちょっと面倒そうではあるけどね。
それにしても全部自前で用意するよりは完全に楽だし、ボイスチャットもON/OFFするだけで自動で対応してくれるみたいだしね。
でまあ、それで思ったのがXNAの360対応\(^o^)/オワタ。Xbox360のゲーム作る理由は完全に無くなったな。
GameForWindowsLiveでWindowsでもXboxLiveのゲーマータグがそのまま使えるんで、360が有利になる可能性があったゲーマータグが使えるっていうのはWindowsの不利な点にはならなかった。
360では作るの面倒でパフォーマンスにも気をつけなきゃいけないわりには、依然として極一部の高い金を払ったユーザーしか動かせない。この問題は近いうちに改善される見込みは無さそうだ。
WindowsだとXInputにしか対応してないのはきついが、これは頑張ればDirectInput対応できないこともない。あんまりやりたくないが。 そのかわり360じゃ使えないマウスも使えるしね。
スペックが固定されないというデメリットはあるかもしれないが、そもそもXNAで作る時に360専用に作るのか? 大抵Windows用にも作るよな。だったら同じだって。
360用に作るにはかなりチューニングしないときつい。マルチスレッド化しないと思ったよりCPU遅いしね。360のRenderTargetの制限みたいなのもあるから下手するとWindows版と結構設計を変える所も出てくるだろう。
しかしそこまで頑張って作ったところで誰が360でプレイしてくれるの?
しかもWindowsでは.NETのフルスペック使えるから通信もソケットで独自サーバーもできるんだよ? もちろんLiveはLiveで別に使えるし。
面倒そうなGameForWindowsLive対応は自動でやってくれるなら、360にこだわる理由がどこにある? 360で動いたら楽しいじゃんって? それは分かるけど、誰にもプレイして貰えないゲームを作りたいのか?
そんなわけで、もし次にXNAでゲーム作ることがあれば俺は360切り捨てだな。
*1 リファレンスは英語の方がいいけど