UNET① UNETを勉強する その前に

UNETの機能の説明などをする前に、周辺知識などを整理しておきましょう。

 

UNETとは

Unityには、複数のコンピューターを接続して多人数で遊ぶネットワークゲーム、いわゆるネトゲを作るための機能があります。この機能は通称で「UNET」と呼ばれています。

そもそも、ネットワーク通信を行う機能は、OSに初めから備わっているので、それを利用すればネットワークゲームは作れるのですが、とても面倒です。UNETはそれを比較的簡単にしてくれるというわけです。全部自力で作る場合と比べたら比較的簡単になるというだけで、ネットワークゲームを作るのはやはり難しいので注意しましょう。

いくらUNETが簡単な通信機能を提供してくれたとしても、ネットワークゲームの特徴や技術的な制限を知っておかなければ、ネットワークゲームは確実に完成しません。「UNETやPhotonを使えば、別々のコンピューター上で起動したゲームの状態が簡単に完全に同期できる」と思っている学生をしばしば見るのですが、そんな魔法のような機能は存在しません。そんな技術があったら、ゲーム会社が何億円払ってでも買います。残念ながら無理なのです。普段ネットワークゲームをプレイしていると、コンピューター同士で状態が完全に同期しているように見えますが、それは、開発者が死に物狂いで、同期しているように見せているだけなのです。そのための様々なノウハウがあります。下記の記事がとても参考になります。絶対に読んでください

[CEDEC 2010]ネットゲームの裏で何が起こっているのか。ネットワークエンジニアから見た,ゲームデザインの大原則

上記の記事を読んだら、確実に「うわーネットワークゲーム作るのめんどくさそう」と思いますよね。そしてUNETはそのめんどくささを軽減してはくれません。UNETがやってくれるのはTCP/IPを使ったコンピューター同士の接続、データ転送の部分だけです。UNETを使えばそこのプログラミングをしなくてよくなるだけであり、どの情報を送信するかとか、受け取った情報をどのように加工してゲームに利用するかとかは全て開発者の責任です。覚悟してください。

ネットワークに関する予備知識

いくらUNETが通信の技術的な部分を隠蔽してくれるといっても、通信技術に関して全くの無知では厳しいです。例えば

f:id:motoyamablog:20171028004907p:plain

というような状態では、UNETを使ったとしても、ネットワークゲームを作ることはできません。以下のようなキーワードについて、完璧ではなくとも、概要は理解しておかねばなりません。

  • インターネット
  • LAN
  • IPアドレス
  • ポート
  • TCP
  • UDP
  • ファイヤーウォール
  • ルータ
  • NAT

上記のキーワードについて、「全然わからない」という状態だと厳しいです。ちょっとずつ勉強していきましょう。
ググればいくらでも出てくるとは思いますが、次のWebサイトが、基本から体系的に解説してくれていてわかりやすいと思います。

ネットワークをはじめから

TCP/IPをはじめから

UNETの理解に役立つ資料

UNETを使ってネットワークゲームを制作するのは、自力でTCP/IPを使って制作するよりは、はるかに楽だと思いますが、それでもはやりUNETは難解だと思います。2017年現在、体系的に詳しく解説しているWebサイトはなく、まともな参考書も発売されていないという状況も、UNETの理解を困難にしています。
そんな状況で、日本語に翻訳された公式リファレンスはありがたいです。 

Unity公式リファレンス

何を言ってるのかわからない箇所も多いですが、無いよりはマシです。一読しましょう。

そして、UNETを理解する上で最も助けになるのが、UNET自体のソースコードです。UNETのHLAPIの機能群はC#で実装されていて、全てオープンソースとなっています。たくさんあるUNETの機能がそれぞれ何をやっているのかは、ソースを見ればわかります。(というか、ソースを見ないとわからない……😇)
ソースコードこちらから参照&ダウンロードできます。

 

次へ進む

目次へ