LoginSignup
5
11

More than 3 years have passed since last update.

Unity + Epic Online Services でオンラインゲームを作ろう ~②マルチFPS編~

Last updated at Posted at 2020-07-23

概要


Github:unity_eos_fps
Unity + Epic Online Services(以下 EOS) でマルチプレイ FPS を作ってみました。
前回は「ゲームを作ろう」というタイトルなのに成果物がチャットでしたが、今回は正真正銘のゲームです。

残念:ゲーム公開ができない

ネット上の多数の方にプレイしてもらいたく開発していたのですが、
「さぁ公開だ」となったタイミングで気づきました。
Epic Online Services のゲームの公開はまだ許可されていません。
公開用のための審査提出ボタンが「COMMING SOON」となっています。
そのため、開発チーム以外のアカウントでゲームにログインするとはじかれます。
Edp37coUYAAqOrP.png
・・・

残念ですが現在はみんなでプレイができず、ビルドしてローカルでテストしかできません。
また進展があったら報告します。😢

ロビー検索のバグの対処

前回と同じく 7/23 現在 EOS のロビー検索はまだバグで動きません。
バグ報告したスレッド の情報提供によると内部で通信エラーが発生しているようです。
同じロビーにいないと P2P 通信が始められないため、
対処として Glitch で簡易ロビー検索サーバーを作りました。
ロビーID を保持・配信するだけの API です
Glitch : eos-lobby

コードの工夫

SDK の呼び出しはコード量が増える一方だったので、拡張メソッドをどんどん書いて整理しました。

EOS の C# SDK は C++ SDK と書き方を統一するためか、インターフェースのメソッドは下記のようになってます。

  • 引数に直接値を書かず、データ受け渡し用クラスのインスタンスで渡す ⇒ インスタンスを new する記述が増える
  • 戻り値は処理結果(Result)の Enum ⇒ 呼び出すたびに処理が成功したか判定する必要がある
  • 処理結果はコールバックで返ってくる ⇒ ネストがどんどん深くなる

なので下記のような拡張メソッドを EOS の使用するメソッド分、追加してます。

  • 引数だけで呼び出せるように置き換え
  • 戻り値を UniTask にしてコールバックを async で受け取る

ビルド

著者環境

OS : Windows 10 Pro
Unity : Unity 2020.1.0f1

1. Github からプロジェクトチェックアウト

2. Epic Online Services デベロッパーポータルで登録

  1. 新しいプロダクト作成
  2. Epic Account Services で 3 項目を全て入力して、Configured にする image.png
  3. Product Settings の内容を Unity でプロジェクトを開いて Assets/ScriptableObjects/EOSSettings.asset に記載

3. Glitch でサーバー作成

  1. eos-lobby を開いて View Sorce -> Remix Edit で自身のアカウントにクローン
  2. .env にシークレットのキーと値を設定して
    • Variable Name:SECRET
    • Valiable Value:適当な文字列 image.png
  3. Unity プロジェクトの Assets/ScriptableObjects/EOSSettings.asset に記載
    • Api Url : https://【クローン後のプロジェクト名】.glitch.me/kvs
    • Api Securet : .env の SECRET に設定した文字列 image.png

4. Unity ビルド

Windows Standalone でビルド

終わりに

公開できないのは残念です。
EOS は正式リリースされているかのように宣伝されているので、
私のように勘違いして開発している人いそうです。
ロビー検索が動かない件も含めて、公式には早急に対応していただきたいです。

5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11