Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
27
Help us understand the problem. What is going on with this article?
@s_ryuuki

Unityのゲーム向けクライアント・サーバ・ネットワーク関連覚書

はじめに

脳内にある言語化されていない技術的なことを書き出したもの+ブックマークにためたリンクを整理したものになります。
情報ををすごく雑多にまとめたものになります。(あんまり綺麗に整理できていない)
自分の気になるキーワードは検索して資料を読んでみて、わからないところ深く掘り下げると良いかもしれません。

概要

クライアント

WebAPIやアセットダウンロードはUnityWebRequestやOS Native機能をPlugin化してで実装する。

リアルタイムの処理はライブラリを使用したりや独自実装を行う。
また、通信環境が携帯網(3.xG、4G、5G)、無線LAN(+光回線、ADSL、携帯?)など回線により影響を受けることを考慮する必要がある。

サーバ

クラウドサービス(まだオンプレもある?)にフルスクラッチや、マネージドサービス、mBaas、その他特化したサービスやライブラリを組み合わせて構築する。
各種サービスと併用して、WebAPI、リアルタイムサーバ、管理ツールなどを、スクリプト言語(PHP、Ruby、Python、Node.js)やコンパイラ言語(C++、Golang)でライブラリやフレームワークを使い実装を行う。

大雑把に、WebAPI、リアルタイムサーバ、管理ツールなどは下記のようなサーバを使用する。

  • ロードバランサーからフロント(Apache、Nginxなど)でWebAPIを受る
  • アプリケーションサーバで処理を行う
  • データはmysqlなどから読み込みや保存をする
  • キャッシュはRadiseなどで行う
  • 想定同時接続から負荷をかけて、New Relicなどを使って負荷時のパフォーマンス計測を行う
  • 監視用のシステムでCPU、メモリなどのリソース監視、サーバーの死活、ネットワークの死活などを管理する。

クライアントとサーバ間の処理

  • WebAPIやリアルタイムの実装は、クライアントとサーバ間で共通インターフェイスになるため協議して実装する必要がある(もしくは同じ人が作る)
  • ログインやアイテムを使うなどのコマンドタイプは、ステートレス設計なWebAPI(httpsアクセス、Restful風?)でやり取りする
  • アセットダウンロードする場合は、クラウドストレージからユーザー認証(ない場合や、推測しにくいパスとか)を行いhttps経由でダウンロードする
  • リアルタイム処理求められる場合は、WebScoket(TCP)や、RUDP(UDP)(の類型)を使い。 P2P接続をする。NAT越えができない場合はサーバを介してクライアント間の通信を行う。
    • P2Pを使わずに必ずサーバ経由する場合もある

Unity

マネージド

mBaas

ミドルウェア

通信ライブラリ

実装

各種資料

総合

モノビット社

中嶋氏関連

構成

リアルタイム

チューニング

 格闘ゲーム

ロールバック

負荷テスト

書籍

ネットワーク

総合

IPv6

WebAPI

解説

ドキュメント

TCP

解説

実装

UDP

実装

受信保証

NAT traversal

グローバルなIPアドレスを持たない、クライアント同士がP2Pで接続するための方法です。
この方法を使っても100%接続できるわけではないためリレーサーバを準備する必要があります。

技術解説
対応方法

通信方法

総合

なるべく切れない回線のつくりかた(物理) - Qiita

Mobile

無線LAN

セキュリティー

27
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
s_ryuuki
最近はスマホゲーム屋さん。 クライアントプログラマー。 最近はやってないが、マネジメント、人材育成もする。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
27
Help us understand the problem. What is going on with this article?