最終確認日

オンラインゲームのしくみ Unityで覚えるネットワークプログラミング

https://www.sbcr.jp/product/4797375916/

バンダイナムコスタジオ所属のプログラマーによるオンラインゲームプログラミング解説書が遂に登場! TCP/IPの基礎から懇切丁寧に解説、ゼロからオンラインゲームを作リあげることを通して、ゲームのためのネットワークプログラミングのノウハウを伝授! https://www.sbcr.jp/product/4797375916/

目次

第1章 オンラインゲーム作りをはじめよう
第2章 通信プログラムの基礎知識
第3章 通信プログラムを作ってみよう
第4章 チャットプログラムを作ろう
第5章 ターン制ゲーム
第6章 ちょこっとアクションゲーム
第7章 キー入力同期ゲーム
第8章 箱庭コミュニケーションゲーム
第9章 アクションMO

メモ

2025-06-10から読書

第1章

  • オンラインゲームとオフラインゲームは別物だよ
  • オンラインゲームには遅延が必ずあるよ
  • 同じオンラインゲームでも同期方式、非同期方式など通信方式が色々あるよ
    • 格ゲーだと人の通信を待たないとゲームにならない
    • MMOだと人の通信を待っていたらゲームにならない
    • 自分の作りたいゲームはどっちかな?
  • 1vs1のオンラインゲームではキャラクターは4人登場する
    • 2人のキャラクター×2端末
    • そうそうそれがむずいんす
  • 通信プログラムの大半はエラー処理
  • 正常系の処理より異常系の処理を先に組み込む方がいいよ
  • 正解はひとつではないよ
    • だからむずかしいのよ...

第2章

  • パケット
  • IPアドレス
  • ポート番号
  • パケットロスト
  • TCP
    • p24
    • しっかりもの。コストもお高い。
    • データの到達保証や順序保証がある
    • HTTPやFTPで使われているプロトコル
    • 送信するデータが小さい場合は小さなデータをTCPのバッファで1つにまとめて、TCPバッファがいっぱいになるか規定の時間が過ぎるまで送信されない。
    • 遅れて送信されることがある。
    • 輻輳(ふくそう)制御がある。ネットワークが大渋滞しないように調整するよ。
  • UDP
    • p27
    • とにかく速い。スピード自慢
    • お届け先が留守でも、途中で荷物を紛失しても気にしない。
    • 到達保証と順序保証を犠牲にして、速さを求めている。
  • オンラインゲームではUDPが使われることが多い
    • TCPはデータ送信が失敗した時に再送信してしまうので時間がめちゃかかる
    • 再送を繰り返すときはタイムアウト時間が2倍になるようになっている。
    • 再送タイムアウト(RTO: Recovery Time Objective)
  • RUDP(Reliable UDP)
    • パケットロストした時の再送信や受信パケットの確認応答などの機能を持つ
    • 標準で提供されるプロトコルではない。
    • 初心者はまずはTCPUDPを理解して使い分ける方がいいよ
  • 遅延は必ず発生する
  • [レイテンシ]
    • 片道レイテンシ
    • 往復レイテンシ
  • RTT(Round Trip Time)
  • 片道レイテンシ分は必ず遅れざるを得ないのでゲームデザインや仕組みを工夫する必要がある。
  • 通信量について考える必要がある
    • p32
    • データの送信量と通信帯域の関係は、水槽の中へ入れる水の量と出ていく水の量の関係
    • スループット (一定時間内に処理できるデータ量や処理能力)が悪いとデータがスムーズに流れない。
    • 入ってくる水の量より出る水の量のほうが大きいようにしよう
    • わかりやすい!
  • 通信相手とのデータ通信の速度は 通信帯域が広い(or 狭い)という言い方をする
  • 通信するデータの仕様が決まったら、必要な通信量を計算して、どのくらいの帯域までゲームが遊べるかを確認する。
    • このときに、ゲームを遊ぶことができることを保証する通信帯域を設定する

第3章

通信プログラムを作ってみよう。Unity向けだが、Godotに変換して読み進めてみる。

第4章

チャットプログラムを作ってみよう。

サイトアイコン
公開日
更新日