0 - イントロダクション

PUN基本チュートリアルはUnity基本チュートリアルです。

このチュートリアルではPhoton Cloudによって独自のマルチプレイヤーが有効となったアプリケーションの開発の仕方とアニメーションにAnimatorを使ったキャラクターの使い方を説明しています。PUNを使ったネットワークベースでの開発へのアプローチの概要をつかめるよう、途中で、多くの重要な機能やヒント、トリックについて学びます。

目次

概要

このチュートリアルでは、空のプロジェクトから始めて、作成プロセス全体を順番に説明します。 途中でコンセプトととくある落とし穴、そしてネットワークゲーム用の デザイン設計についての説明をしています。

プレイヤーが歩き回るだけで他に何もすることがない、という事態を避けるため、プレイヤーの体力管理とカップリングされた基本の発砲システムを実装します。これにより様々なネットワークを越えた同期の説明がしやすくなります。

ルームに入っているプレイヤー数に合わせてカスタムサイズアリーナも使用します。アリーナの大きさは現時点でプレイ中の人数で調整されます。ここでは、自動シーン同期機能についてのコンセプトをいくつかと、異なるシーンをローディングした際のプレイヤーの扱いについてのヒント、そしてこのシナリオでうまくいかない可能性のある事柄について説明していきます。

ゲームのゴール

ゲームが発表されると、ユーザは接続プロトコルを確認し、UI自体の中での発達について情報を得ることになるでしょう。ルームが作成されたり、ルームへの参加があると、プレイヤーはサイズ変更可能なアリーナに入ります。このアリーナに同時にいられるのは4人までです。プレイヤーは走ったりターンしたり、また発砲することもできます。各プレイヤーから発砲された光線は、プレイヤーにヒットすると、当たったプレイヤーの体力に影響します。体力が0になると、ゲームオーバーになりアリーナから抜けます。そしてイントロスクリーンが表示され、希望する場合は新しいゲームが開始できます。

留意事項

このチュートリアルでは、Unityエディターとプログラミングの基本的な使用のみを前提としていますが、Photonネットワーキングに搭載された新しいコンセプトの理解に集中するため、普通のネットワークゲームではないゲーム創作の十分な知識と経験があることが望まれます。

サンプルコードはC#で書かれています。

目次に戻る

Photon Cloud

新規のUnityプロジェクトを作成する

Unityバージョンと同等もしくは5.3.7p4よりも上位のバージョンを使用してください。新しいプロジェクトとして作成すること、一般的にチュートリアルを行っていく際にはこれが推奨されています。徐々にコンセプトやデザインパターンを理解しはじめたら、自分のプロジェクトに適用してみてください。

PUNのインポートと設定

アセットストアを開きPUN 2アセットを検索してダウンロード及びインストールします。PUNアセットを全てインポートしたら、Unityにリコンパイルさせましょう。

ネットワーク設定の手助けとなり、そしてマルチプレイヤーゲームを簡単に開始できる方法を提供してくれるPUNのセットアップウィザードが、Photon Cloudです。

不思議かもしれませんが、クラウドなのです。これゲーム作成で使えるPhotonサーバーの集まりです。これについては少し後に説明します。

「無料プラン」でのクラウドの使用は無料で、負担もありません。まずはメールアドレスを入力してみましょう。ウィザードが魔法をかけてくれます。

Photon Cloud Screen Shot: Cloud Registration
Photon Cloud Screen Shot: Cloud Registration

「AppId」は新規アカウントにすぐに割り当てられます。入力したメールアドレスが既に登録済の場合は、ダッシュボードを開くように促されます。ログインして「AppId」をフェッチし、入力フィールドにペーストしてください。

AppIdを保存して、このステップは完了です。

Photon Cloud
Photon Cloud

では、この「Photon Cloud」で実際にできることとは一体何なのでしょうか。

基本的には、Photon CloudとはPhotonサーバーが実行されているたくさんのマシンの集まりのことです。この ーの「クラウド」は、Exit Games社によりメンテナンスされていて、マルチプレイヤーゲーム用に手間のかからないサービスとして提供されています。サーバーは要求に応じて追加されるので、プレイヤー数は何人でも対応できます。

Photon Cloudは完全に無料でないといっても、ホスティングと比較すると低コストです。 価格設定について詳細はこちらを参照してください.

内部で起きていることを簡潔に言うと、Photon Unity NetworkingはPhoton Cloudを管理しています。つまり下記の流れのようになっています。

全ての人は始めに「ネームサーバー」に接続します。ここでは(AppIdを使用して)appと、クライアントが使用するリージョンがチェックされます。その後、クライアントをマスターサーバーに転送します。

マスターサーバーは、一連のリージョナルサーバーのハブです。マスターサーバーは既存のゲーム全てを把握しています。ゲーム(もしくはルーム)が作成されたりそこに参加されたりすると毎回クライアントはその他のマシンに転送されます。この転送先のサーバーが、「ゲームサーバー」です。

PUNの設定は非常に簡単で、ホスティング費用やパフォーマンス、メンテナンスを気にする必要は一切ありません。

ルーム

Photon Cloudは「ルームベースのゲームであること」を念頭に置いてビルドされました。つまり、マッチ毎にプレイヤーの定員(例えば10人未満)があります。ルーム内では通常、他のプレイヤーが送信したものは全員が受信します。ルームの外ではプレイヤー同士はコミュニケーションできませんので、できる限り早く、プレイヤーにはルームに入ってもらうほうがいいのです。

ルームに入る一番良い方法はRandom Matchmakingを使用することです。サーバーにルームもしくは一定のプロパティを要求するだけです。

ルームが満員もしくはクローズ状態でなければ、その名前を使ってルームに参加できます。 マスターサーバーがapp向けにルームのリストを提供してくれます。

ロビー

ルーム表示できるアプリケーション用のロビーはマスターサーバーにあります。私たちの例ではロビーを使わずランダムに空いているルームに参加するか、参加できそうなルームがなければ(ルームには定員があるので、 全て満員という可能性もあります)新規でルームを作成します。

アプリケーションIDとゲームのバージョン

もし全員が同じサーバーに接続しているのであれば、自分のプレイヤーを他のプレイヤーと区別する方法があるはずです。 各ゲームは(アプリケーションも同様に)クラウド内で独自の「AppId」を取得します。プレイヤーはクライアント内部においてのみ、他のプレイヤーと毎回同じ「AppId」を使用して出会います。

前からいるクライアントと新規のクライアントを分離させる方法には「ゲームバージョン」もあります。

リージョン

Photon Cloudは遠方でプレイしているプレイヤーに対する接続不良を避けるため、世界各地で別々のリージョンで構成されています。異なるリージョンのリモートチームと作業を行っている場合は、特にこの概念を理解しておく必要があります。 別のリージョンを使っていることによって、チームメイトとゲームのテストができないかもしれません。コミュケーションをとりたい全てのテスト要員が同じリージョンにいることを確認してください。

目次に戻る

開発

各セクションは具体的にプロジェクト開発段階の一部をカバーしています。なので順番通りに処理していくことが大切です。スクリプトとPhotonの知識について想定されるレベルは徐々に高くなっていきます。

  1. 基本のロビーシーンを作成する
  2. ユーザーインターフェース(UI)を使用してロビーシーンを改善する
  3. ゲームシーンを作成する
  4. レベルのローディングを実装する
  5. 基本のプレイヤープレハブを作成する
  6. カメラにプレイヤーを追従させる
  7. プレイヤープレハブを修正しネットワーク機能を追加する
  8. プレイヤー初期化とシーンの切り替え
  9. プレイヤーユーザーインターフェース(UI)

目次に戻る

まとめ

動作中のシステムまで見てきました。ここでユーザー同士はインターネット間でスムーズな動作に必要な基本の条件でプレイできます。

PUNの制御方法、PUNステータスと進行中のコンテキストのリッスン方法、そして便利なコンポーネントを活用して簡単にAnimatorを使う方法について説明をしました。

自動シーン同期機能などのPhotonの興味深い機能についても、オリジナルでパワフルなゲームプレイの実現のために 説明しました。

公開の準備が整った完全なゲーム作成のためには、やらなけばならばいことはまだまだありますが、それはここで紹介した基礎の上にビルドされているだけです。

  • "はじめよう" セクションを確認してください。
  • ドキュメントやAPIリファレンスを参照し、利用可能な機能を確認してください。 いきなり全てを使用するわけではありませんが、必要となったとき、もしくは新しい機能を実装するときに、何らかのメソッドやプロパティが関連していたことを思い出すでしょう。その時がメソッドやプロパティなどを正確に学習する機会です。
  • フォーラムを活用して、問題や疑問点、不満などを遠慮なく共有してください。一つの問題で行き詰まらないようにすることが肝心です。 抱えている問題点を他の人に理解してもらおうと、客観的に体系だてて説明することで、問題解決にもつながります。 無駄な質問などありません。どの程度の専門知識があるのか、またUnityとPUNの知識の量によってさまざまな質問が出てくると思います。

目次に戻る

次に進む.

 ドキュメントのトップへ戻る