Sign in
ひにけにGD
Common Tasks
Blog Home
Email Blog Author
About
OK
RSS for comments
RSS for posts
Atom
Search Form
Tag Cloud
PowerShell
Windows
Windows Phone
XACT
Xbox360
XNA
XNA 2.0
XNA 3.0
XNA 3.1
XNA 4.0
XNA Game Studio
XNA フレームワーク
Zune
インディーズゲーム
オーディオ
グラフィクス
ゲーム素材製作
ゲーム開発
コンテント・パイプライン
シェーダーモデル 3.0
デバッグ
ネットワーク
紹介
雑談
Monthly Archives
Archives
December 2012
(1)
June 2012
(3)
May 2012
(1)
April 2012
(1)
February 2012
(1)
January 2012
(1)
September 2011
(1)
July 2011
(1)
May 2011
(1)
February 2011
(1)
January 2011
(1)
December 2010
(4)
November 2010
(2)
October 2010
(9)
September 2010
(10)
July 2010
(1)
June 2010
(3)
May 2010
(21)
April 2010
(1)
March 2010
(7)
November 2009
(1)
July 2009
(4)
June 2009
(10)
May 2009
(7)
April 2009
(3)
March 2009
(1)
January 2009
(1)
December 2008
(4)
November 2008
(5)
October 2008
(6)
July 2008
(2)
June 2008
(1)
May 2008
(3)
March 2008
(2)
February 2008
(7)
January 2008
(7)
December 2007
(6)
November 2007
(3)
October 2007
(1)
September 2007
(1)
August 2007
(1)
May 2007
(3)
April 2007
(5)
March 2007
(9)
February 2007
(3)
Browse by Tags
MSDN Blogs
>
ひにけにGD
>
All Tags
>
xna 2.0
Tagged Content List
Blog Post:
ネットワーク その10 オブジェクト所有権
Yuichi Ito - MSFT
クライアント/サーバー と ピア・ツー・ピア 型のどちらのネットワーク形態が優れているのかを議論するのが好きな人たちがいます。しかし、個人的にこの議論は間違ったものだと思います。誰が 「どちらか一方のネットワーク形態を選ばなくてはいけない」 と言ったんですが?私は両方の長所を活かしたハイブリット形式の大ファンです。 ネットワークプログラミングは妥協との戦いです。100%の正確さと、ラグがまったく無いという2つの状態を両立することは不可能で、トレードオフをしなければいけません。 時にはラグが多少大きくっなっても正確さをとる場合もあれば、逆に正確さを犠牲にして高いレスポンスを必要とする場合もあります...
on
12 Feb 2008
Blog Post:
ネットワーク その9 究極の圧縮方法
Yuichi Ito - MSFT
今まで紹介してきた狡猾な圧縮方法より効果的なデータ圧縮方法があります。それはデータ自体を送らないということです。 もちろん、まったくデータを送らないのでは相手側との同期ができません。でも、時には同期すること自体が重要ではない場合があります。 2つのルール ゲームプレイに関連するものは同期しなければならない 殆どの物はゲームプレイに関与しない 効果音やアニメーションは殆どの場合は同期する必要がありません。もし、ネットワークを介してキャラクターが前に走って移動する場合、それぞれりマシンではその情報を元に、走るアニメーションを再生させ、そのアニメーションに合わせて靴音を鳴らすことができます...
on
11 Feb 2008
Blog Post:
ネットワーク その8 算術符号化圧縮
Yuichi Ito - MSFT
算術符号化は解りづらく、めったに使われないツールのひとつですが、時々その威力を発揮します。例えるならネットワークデータ圧縮における変なサイズの六角レンチです。 算術符号化はクールです。なぜなら、あまり知られていないし、一見すると動かないように思えるものだからです。パーティーで女の子に好印象を持たせるのに活躍します(訳注:そうか?) 以下のデータがあったとします。 enum Species // 種類 { Camel, // ラクダ Cat, // ねこ Caterpillar, // いもむし Cheetah, // チーター Chimpanzee, // チンパンジー...
on
8 Feb 2008
Blog Post:
ネットワーク その7 ビットフィールドで圧縮
Yuichi Ito - MSFT
ビットフィールドは古くから知られている素晴らしいデータパッキング手法です。C#プログラマーがビットフィールドを使う機会は非常に少ないですが、ネットワークパケットの圧縮にはもってこいなので、この機会に使ってみましょう。 バイトは8ビット、intは32ビット。でも、送るべきデータが8ビットや32ビットの倍数にならないときはどうします?例えば以下のようなデータを送るとします。 bool isAlive; // 生きているか? bool isFiring; // 撃っているか? enum Species // 種類 { Camel, // ラクダ Cat, // ねこ ...
on
7 Feb 2008
Blog Post:
ネットワーク その6 量子化で圧縮
Yuichi Ito - MSFT
ビット数の少ない方が多いものより消費するスペースは小さくなります。 もしint型の値が0~100までの範囲しか取らないと判っているのなら、そのまま4バイトのint型として送るより、byte型にキャストして送ることができます。 場合によっては値が表す範囲を値をずらすことによって減らすことができます。例えば、キャラクターの高さのデータを送る必要があり、高さはcmで表されるとします。このゲーム中のキャラクターの高さの範囲は、ドワーフ(100cm)から巨人(300cm)まであります。 300という値はbyteで表現できる範囲(0-255)を超えているので、キャストすることはできません...
on
31 Jan 2008
Blog Post:
ネットワーク その5 圧縮
Yuichi Ito - MSFT
限られたネットワーク帯域の中では、送信するデータを圧縮することは非常に重要なことです。 Zip等の一般的な圧縮アルゴリズムはネットワークゲーム向けではありません。これらの圧縮はある程度のデータ量がある場合は効率良い圧縮が期待できますが、ネットワークパケットのように小さいデータを圧縮するには不向きです。ここで必要なのは20バイトのデータを10バイトにするような圧縮方法です。 初心者がよく考える手法として、送信側で複数のパケットを続けてバイトストリームして一般的な圧縮アルゴリズムを使って圧縮し、圧縮されたデータをパケットに分割して送受信するというものがあります。確かに圧縮率は高くなるのですが...
on
29 Jan 2008
Blog Post:
ネットワーク その4 帯域 ボイスチャットについて
Yuichi Ito - MSFT
XNAフレームワークはボイスチャットをサポートしており、ヘッドセットがある場合に自動でチャットができるようになっています。便利な機能ではありますが、使用中はより多くのネットワーク帯域が必要になることに注意が必要です。 音声データは500 B/s以下の帯域に圧縮され、ヘッドセットに向かって喋った時のみにデータ転送を行います。 デフォルトの状態では全てのプレイヤー同士で会話することができるようになっています。もし、ひとりが他の15人のプレイヤーに話しかけた場合、 500 * 15 = 7.3KB/s ひゃー!! 8KB/sが目標だったことを覚えていますか?これではゲームデータを送る前に殆どの帯域を使い切ってしまいます...
on
25 Jan 2008
Blog Post:
ネットワーク その3 帯域
Yuichi Ito - MSFT
ネットワーク帯域とは、どれだけの量のデータを送受信できるかを表します。データ量が上限に近づくほどにパケットロスの量が増え、この上限を超えたデータ量を送ろうとした場合、結果的にセッションから切断されることになってしまいます。 XNA Frameworkでは帯域をバイト/秒で表します。まぎらわしいことにネットワークベンダーはビット/秒で表すのが好きで(多分、より数字を大きく見せるため)、さらにまぎらわしいことにどちらの表記もbpsやkbpsを使うことです。この表記が出てきた場合にはバイト/秒なのかビット/秒のどちらのことを表しているのか注意する必要があります。(訳注:私は個人的にバイト/秒は大文字のB...
on
23 Jan 2008
Blog Post:
XNAカスタムコントロール
Yuichi Ito - MSFT
以前から、XNAを.NetのControl内で使いたいという要望を何度か聞くことがありました。本当はXNA 2.0で導入される予定でしたがテスト期間が間に合わなかったために見送りとなりました。ですが 以前書いたように XNA 2.0でGraphicsDeviceが仮想化されたことによってウィンドウ内でXNAを使う実装が非常にシンプルになったので、 Creators Club Online にサンプルがアップされました。 WinForms Series 1: Graphics Device Sample このサンプルでは、XNAをWinFormsのカスタムコントロールとして使う方法が実装されています...
on
17 Jan 2008
Blog Post:
ネットワーク その2 パケットロス
Yuichi Ito - MSFT
ネットワークは信頼できません。 データーパケットを送ったときにはいろいろな事がおこります。 相手側に届くかもしれない 届かないかもしれない 届いたとしても、送った順番とは違う順番で届くかもしれない 届いたとしても、その内容が壊れてるかもしれないし、誰かによって変更されているかもしれない 4つ目はXNAフレームワークベースのゲームでは問題になりません。XNAフレームワークではLiveのライブラリを使っているので送られるパケットは全��自動的に暗号化されているので、データ自体が改ざんされたり、壊れたりということを気にする必要はありません。 2と3の問題については...
on
9 Jan 2008
Blog Post:
ネットワーク その1 レイテンシ
Yuichi Ito - MSFT
「さて」とセイウチはいった「ネットワークの話をしましょう」 (訳注:元ネタはルイス・キャロルの セイウチと大工 から) ネットワークゲームプログラマーには以下の三つの不死の敵がいます レイテンシ データが相手に届くまでに掛かる遅延時間 パケットロス データが相手に届かない現象 帯域 送ることのできるデータ量の上限 以上の三つについて順に話しましょう。 レイテンシは物理的理由によって決まります。SFの世界では何十年もの昔に実現しているのに、物理学者は未だに光速を超える手段を発見していません。ですから、秒速30万キロ/秒を超える速度でデータを送ることができません...
on
7 Jan 2008
Blog Post:
XNA 2.0のコンテントパイプライン~その弐~
Yuichi Ito - MSFT
プロセッサパラメーター 上の画面はテクスチャのプロパティ画面です。Content Processorの脇に+のついた四角いマークに気づいたでしょうか? クリックすると複数のパラメーターが表示されます。これがXNA GS 2.0の新機能の一つであるプロセッサパラメーターです。XNA GSE 1.0では複数の複数のプロセッサを書く必要がありましたが、XNA GS 2.0ではひとつのパラメーターつきのプロセッサを書くだけで、どのようにコンテントがプロセスされるかを指定できるようになりました。 Textureプロセッサには以下のパラメーターが設定できます。 ...
on
21 Dec 2007
Blog Post:
ネットワークサンプルの配信
Yuichi Ito - MSFT
XNA 2.0リリースと同時に配信されたネットワーク対応のスターターキットに Net Rumble がありますが、もっとシンプルなサンプルが欲しいという人の為に4つのネットワークサンプルコードが配信されました。 Network Architectures: Client/Sever XNA 2.0上でのシンプルなサーバー/クライアント型のネットワークゲームのサンプルです。このサンプルではクライアントは単に入力情報をサーバーに送るのと、レンダリングするだけの処理をしています。サーバー側はクライアントから受け取った情報を元にシミュレーションを実行し、その結果をクライアントに送るようになっています...
on
20 Dec 2007
Blog Post:
XNA 2.0のコンテントパイプライン~その壱~
Yuichi Ito - MSFT
コンテントプロジェクト XNA 2.0のプロジェクジェクトをソリューションエクスプローラで見ると以下のようになっています。 参照設定の項目が二つあることに気づいたでしょうか?これは Content がWindowsGame1のサブプロジェクトになっているからです。XNA 2.0では、このサブプロジェクト内にコンテントを追加します。その他にも、以前まではメインプロジェクトに記述されていたコンテントに関する情報、例えばコンテントがどのようにインポートされプロセスされるかの情報、カスタマイズされたコンテントパイプラインアセンブリの参照などが含まれます。 以前はWindows、Xbox...
on
20 Dec 2007
Blog Post:
XNA 2.0でのGraphicsDevice仮想化
Yuichi Ito - MSFT
消えたデバイスロスト XNA1.0で作ったソースコードをXNA2.0に移植していて最初に気づくのは以下の警告メッセージだと思います。 warning CS0672: Member 'MyGame.Game1.LoadGraphicsContent(bool)' overrides obsolete member 'Microsoft.Xna.Framework.Game.LoadGraphicsContent(bool)'. 結論から書くと、XNA2.0ではグラフィクスリソースの扱いが簡単になり、Windows上で発生するデバイスロスト等の問題を気にする必要が殆ど無なり...
on
14 Dec 2007
Blog Post:
XNA Game Studio 2.0がリリース
Yuichi Ito - MSFT
と、言うわけでXNA Game Studio 2.0がリーリスされました。 以下のリンクからダウンロードできます。 http://www.microsoft.com/downloads/details.aspx?FamilyId=DF80D533-BA87-40B4-ABE2-1EF12EA506B7&displaylang=en インストール時の注意としてはXNA 2.0のベータ版をアンインストールしてからリリース版をインストールしてください。このとき、Games for Windows Live Redistもアンインストールするのを忘れないでください。 その他は...
on
13 Dec 2007
Blog Post:
XNA Game Studio 2.0の細かな修正点
Yuichi Ito - MSFT
Shawn Hargreaves氏のブログ から拝借+ちょっと補足説明 XNA Game Studio 2.0になって追加、または修正された細かな機能を紹介します。 GamePadState.IsButtonDownとIsButtonUpメソッドの追加 今まではコントローラーのボタンが押されているかの判定はButtons.A == ButtonState.Pressedと言う様に長いコードを書かなければいけませんでした。特に複数のボタンのいずれかが押されているケースを判定するのには以下のようなコードになってしまいました。 // AボタンもBボタンもXボタンも全部ジャンプだ!!...
on
28 Nov 2007
Blog Post:
XNA Game Studio 2.0ベータ
Yuichi Ito - MSFT
2007/11/28追記:メールでの解除キー取得はベータ版でのテストのみに必要です。リリース版では解除キー取得の必要はありません XNA Game Studio 2.0のベータ版 がリリースされました。日本語での概要は XNA Japan Team Blog に載っています。 最初のリンクは英語ですが、今まで XNA GSEを使っていた人 、 初めて使い始める人 のためのセットアップの仕方が載っています。直ぐにダウンロードしたい人は以下のリンクから。 http://www.microsoft.com/downloads/details.aspx?FamilyId=1A096AC7...
on
20 Nov 2007
Page 1 of 1 (18 items)