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
>
ネットワーク
Tagged Content List
Blog Post:
ネットワークゲームに関する記事まとめ
Yuichi Ito - MSFT
ツイッターの方でネットワークゲームに関する話題が上がったので、以前投稿したネットワークゲームに関する物をまとめてみました。これらの記事はXNA向けに書かれた物ですが、基本的な考え方やテクニックはどのプラットフォームでも同じなので参考になれば幸いです。 ネットワーク その1 レイテンシ ネットワーク その2 パケットロス ネットワーク その3 帯域 ネットワーク その4 帯域 ボイスチャットについて ネットワーク その5 圧縮 ネットワーク その6 量子化で圧縮 ネットワーク その7 ビットフィールドで圧縮 ネットワーク その8 算術符号化圧縮 ネットワーク その9 究極の圧縮方法 ネットワーク...
on
5 May 2012
Blog Post:
リモートコマンド
Yuichi Ito - MSFT
ねことプログラマーとXNAの友好な関係の為に デバッグコマンド はゲーム開発する上では欠かせないツールの一つですがXbox 360上で使用するにはUSBキーボードが必要になります。私の場合は新し物好きで定期的にキーボードを買い換えるので家の中には使っていないキーボードが幾つかあり、いならくなったキーボードを使っていました。 ですが、最近になって11年物のTVが写らなくなってしまい、ようやっとHDTVというものを購入しました。新しいTVの画面上で自分の作ったゲームが動いているのを見るのは楽しいので、リビングルームでソファに座りながらプログラムするという機会が増えました。 そこで、新たに起きた問題が発生しました...
on
27 Sep 2010
Blog Post:
招待サンプル
Yuichi Ito - MSFT
今日は 招待サンプル を紹介します。 Xbox Live!の機能のひとつに、フレンドリスト内の友達と一緒にネットワークゲームをプレイしたいときに誘える招待機能があります。XNA GS 3.0ではこの招待機能がサポートされています。招待するケースとしては以下の二つのケースがあります。 同じゲームをプレイしている時(In-Title Invites) 違うゲームをプレイしている時(Cross-Title Invites) XNA GS 3.0上では、このどちらのケースでも NetworkSession.InviteAccepted イベントが発生します。このイベントを受け取った時に...
on
25 Nov 2008
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:
ネットワーク その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:
ネットワークサンプルの配信
Yuichi Ito - MSFT
XNA 2.0リリースと同時に配信されたネットワーク対応のスターターキットに Net Rumble がありますが、もっとシンプルなサンプルが欲しいという人の為に4つのネットワークサンプルコードが配信されました。 Network Architectures: Client/Sever XNA 2.0上でのシンプルなサーバー/クライアント型のネットワークゲームのサンプルです。このサンプルではクライアントは単に入力情報をサーバーに送るのと、レンダリングするだけの処理をしています。サーバー側はクライアントから受け取った情報を元にシミュレーションを実行し、その結果をクライアントに送るようになっています...
on
20 Dec 2007
Page 1 of 1 (14 items)