【Photon/Pun2】Unityでオンラインゲームを作る方法

こんにちは!

子供向けプログラミング教室kobakoスタッフです。

子供に人気なのがオンラインゲームですね。

自宅にいながら離れた友達とゲームが遊べたりする魅力はオンラインゲームならではという感じです。

そんなこともあってか、Unityを学んでオンラインゲームを作りたいという生徒が増えています。

今日はUnityでオンラインゲームを作る方法をご紹介したいと思います。

ところで・・・

この記事を書いている人はだれ?

子供向けプログラミング教室です!

JavaScriptを使ったゲームプログラミング、ゲーム企画が得意な教室です。

プログラミング教室で実際に使用している、学習成果のある教材をYouTube無料配信しています。

Photon / Pun2のススメ

現在、Unityでオンラインゲームを作ろうとすると一番メジャーなのがPhoton(フォトン)という、オンラインサーバーサービスです。

PhotonはUnityに最適化したPun2という無料ライブラリも公開しているため、比較的手軽にオンラインゲームを組み込むことができます。

手軽にと言いましたが、それでもオンラインゲームを作る難易度は非常に高いのが現実です。

Photonの始め方

Photon自体は無料トライアル版があり、2021年現在では同時接続20人までは無料です。

友達が21人以上いる人気者だと、バーストと言って、同時接続数を超えてしまうかもしれないので要注意です。

(同時ではなく、10人ずつのアクセスなどであれば問題ありません。)

https://www.photonengine.com

Pun2のインストール

Photonサーバーへの接続などを簡略化してくれるUnity用のSDKライブラリがPun2です。

UnityのAsset Storeからダウンロードできますので、ダウンロードして使っているプロジェクトにインポートしましょう。

https://assetstore.unity.com/packages/tools/network/pun-2-free-119922?locale=ja-JP

Pun2の使い方

ここでは簡単にPun2の使い方を説明しておきます。

2つの同期方法

オンラインゲームで、相手の動きを自分の画面に反映させるためには、同期と呼ばれる処理が必要です。

同期には大きく2つのやり方があります。

1つは、シリアライズです。プレイヤーの位置情報やヒットポイントなど、数値を自動的に同期するのに使えます。

2つ目はRPCです。RPCは任意のタイミングで同期させるときに使います。例えば相手が銃を撃ったりするなどは、RPCで同期していく流れになります。

個人的にはRPCの方が使い勝手が良いのですが、初心者はまずはシリアライズでプレイヤーの位置同期に挑戦してみるといいでしょう。

ラグの補正方法

オンラインゲームでは、インターネットを使う以上、必ず時間のズレが生じてしまいます。

Photonは非常に高速で、1秒間に20回近く同期することもできるのですが、それでもズレは生じてしまいます。

特にアクションゲームなどではこのズレが致命的になってしまうことも少なくありません。

シリアライズやRPCで同期した際に、送信時間と受け取り時間が取得できます。

この差を計算して、時間を修正することでラグの補正ができます。

が、

最も大事なラグの補正方法は、ラグが気にならないようなゲームにすることに他なりません。

当たり判定などを曖昧にするなど、そういったゲーム設計からオンラインゲームの構築は始まっています。

オンラインゲームを作る前に

オンラインゲームを作りたいという生徒が本当に多いのですが、僕は生徒に忠告していることがあります。

それは、オンラインゲームだから面白い、というわけではないということです。

オンラインゲームにすればなんでも面白くなるわけではなく、オンラインじゃなくても面白いゲームがオンラインになることでもっと面白くなるんです。

まずはオンラインじゃなくても面白いゲームを目指しましょう、というのが僕からのメッセージだったりします。

プログラミング教室kobakoでは現役のオンラインゲームエンジニアも在籍しています。

Unityでオンラインゲームを作りたいという生徒さん、ぜひ遊びに来てくださいね。

無料体験へのお申し込みはこちらから!

kobakoのゲームプログラミング教材もYouTubeで無料配信中です!

初回の授業料(体験)は無料です。

※現在はオンライン授業でのみ対応しています。通学型ではありません。

Photo by Onur Binay on Unsplash