Posted Articles

Photon Fusion 100 チュートリアルをやってみた

PhotonFusionを使うにあたって、チュートリアル100をやってみたので、実行可能なソースコードと実行結果をまとめてみます。

Fusion 100

Fusion SDKのバージョンや概要がまとめられています。
https://doc.photonengine.com/ja-jp/fusion/current/fusion-100/overview

Fusion 101 – Getting Started

Fusion 101ではUnityにFusionを導入する手順がまとめられています。
https://doc.photonengine.com/ja-jp/fusion/current/fusion-100/fusion-101

Fusion 102 – シーンをセットアップする

Fusion 102では基本のネットワークセットアップ方法を説明しています。
https://doc.photonengine.com/ja-jp/fusion/current/fusion-100/fusion-102

上記を参考にするとNetworkCharacterControllerと古い記述があるので、すべてNetworkCharacterControllerPrototypeに置換します。
BasicSpawner.cs


Player.cs

実行結果

https://twitter.com/JY20160816/status/1608051963572408321

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

初心者がUnrealEngineでオンラインゲームを作って公開するのはほぼ不可能な理由を語る

こんにちは!ジェイです。みなさんいかがお過ごしでしょうか?
私は20日くらいから熱が出て今までずっと寝込んでました。まだ完治してないのでこれを書き終えたらまた寝る予定です。

今年を振り返ってみるとゲーム制作の方は相変わらず、やり直して試行錯誤の繰り返しですが、一番大きなチャレンジはずっと使っていたUnityを使うのをやめてUnrealEngine5を使い始めたことです。

UnrealEngineの感想

結論からいうと、Unityより高機能でゲームエンジンとしての完成度はUnrealEngineの方が高いなと使ってみて思いました。
特に以下の項目はUnityよりも高いレベルです。
・グラフィック
・アニメーション
・AI
グラフィックに関しては好みの問題があるのでそこまで追求しませんが、またUnityでAIを作る時は正直大変だなと思います。
もちろんUnityも有料アセットのArbor3など高機能なものがありますが、UnrealEngineでは無料かつデフォルトで実装されてます。
また、TPS、FPSなどのジャンルはUnrealEngineの方が適してると言えるでしょう。

オンラインゲーム開発はというと?

ここまでを見るとUnrealEngineの方がいいじゃん!と思うかもしれませんが、もちろんUnityがよいところもあります。
なのでどっちが優れているでなくて、作りたい目的にあった物を選ぶ方のが一番大事だというのを念頭においておきながらも、3カ月間UnrealEngineを使ってみて、オンラインゲームを作ってみて感じたことを素直に書き残しておきます。

ListenサーバーとDedicatedサーバー

まずオンラインゲーム開発を行う上でListenサーバーとDedicatedサーバーがあって以下のような特徴があります。
・Listenサーバーはクライアントとサーバーが一つのプログラムで一緒に動作する
・Dedicatedサーバーはサーバーの通信処理だけ行うサーバーなので処理速度がListenサーバーより早い
・Listenサーバーを使う時はクライアントとサーバーの通信回数、通信量が少ない等、あまりサーバーに負担しないゲームなら簡単にマルチプレイが実装できる
・サーバーの負担が多いゲームの場合はListenサーバーには足りない場合がありますのでその時はDedicatedサーバーを使う
詳しい説明はこちらから。

Listenサーバー方式で試したもの

UnrealEngineといえば、EipcなのでEpicOnlineServicesを最初に試してみました。
説明はこちら
結論からいうと認証が厄介すぎて使い物にならないです。
確かにDevAuthToolなどもあって何度も認証しなくてもいいような仕組みもあります。
しかし、基本的には普通にテストするのにアカウントが2つ以上必要です。
Eipcのアカウントにログインするのに、事前にメールアドレスを登録しておいて、そのメールアドレスの持ち主だけログインできるようになります。
つまり、配信などでテストプレイヤーなどを募集する場合は、全員のメールアドレスが必要ということです。
APPIDのみコピペしたら十分なPhotonなどと使って非常にハードルが高くて難しいですね。(ただし、セキュリティが高いともいう)
正直この認証地獄はもう二度とやりたくないです。

Dedicatedサーバー方式で試したもの

まずは、自家用サーバーの構築でしたが、こちらはポート開放ができない環境だったため諦めました。
そして、VPSを借りてプロの方に依頼して、SSHでサーバーの構築までやってもらいました。
ただし、サーバーのメンテなどは自分でやらなければならないし、更にLinuxなどの専門の知識が必要です。
更にビルドに5時間かかったりとこれも初心者にはかなり厳しいです。
具体的にやった手順はこちら
こちらはもしかしたら、もう少し頑張ればいけるのかもしれません。
何だかもったいない気もしますが、体が限界を超えたので諦めることにしました。

来年度はどうする?

進んでは転んでやり直しの連続のゲーム制作ですが、来年はUnityに戻ってPhotonFusionを試してみようと思います。
作りたいゲームがUnrealEngineの方が適しているのですが、オンラインゲームを作るのがほぼ不可能なので仕方ないですね。
もちろんその前に健康な状態になってからというのが前提なので、PhotonFusionでオンラインゲーム開発するのは、しばらく先になると思います。

それではみなさんよいお年を~!

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

UnrealEngine5.1でLinux用のビルドを追加する方法

こんにちは!ジェイです。以前にDedicatedServerをビルドするまでの手順を説明しました。
DedicatedServerは自家用サーバーやゲーム用サーバーを借りるなどして、構築することが多いと思います。そこで特にVPSでよく使われてるOSのLinuxでビルドする方法を説明します。

VisualStadioのコンポーネントの設定

VisualStudio2022 Commnityをダウンロードして、Linux用のコンポーネントを下の画像のようにインストールします。

Linux SDKのインストール

公式のページからクロスコンパイル ツールチェーンをダウンロードした後、exeを起動して特に設定はいじらずにインストールする。

念のためインストールできているか確認する方法

Windowsの設定を開き、検索ボックスで「詳細設定」と打ち、「システムの詳細設定の表示」を開く。
環境変数」を開いて、「LINUX_MULTIARCH_ROOT」があればOKです。

UnrealEngineにLinuxを認識させる

Windowsキー+Rで開いたウィンドウにcmdと打ち込んでコマンドプロンプトを開きましょう。
次にcdコマンドを使って、自分が使っているUnrealEngineが置いてあるフォルダの階層に行ってから以下のコマンドを実行します。

Setup.bat -exclude=Linux

GenerateProjectFiles.bat -2022

その後、自分のプロジェクトの.uprojectファイルで「Generate Visual Studio project files」をして.slnファイルを更新する。

VisualStudioでLinuxむけビルドを実行

更新した.slnファイルを開くと、PlatformsにLinuxが追加されているはずです。

Configurationsを「Development Editor」Platformsを「Linux」にして、ビルドします。
終わったら、Configurationsを「Development Server」にしてもう一度ビルドします。

ビルドが終わったらプロジェクトを開きます。
プラットフォームにLinuxがあれば成功です。


参考にした動画
https://www.youtube.com/watch?v=MVm5got0RMY

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

超初心者でもできるUE5.1でEpic Online ServicesをBPだけで使う方法

こんにちは!ジェイです。今回は超初心者向けにEOSの使い方を説明しようと思います。

準備するもの

・Epicのアカウント
・Epic アカウントサービスの設定
・Advanced Sessions Pluginのダウンロード
・Dev Auth Tool (開発者モードでログインしたい人のみ必要)
なおEpicのアカウントはもってるものとします。

Epic Online Services の準備をする

DeveloperPortalにアクセスしテスト用の製品を作成します。

Epic アカウントサービスの設定




プラグインのインストール

1.Advanced Sessions Pluginをダウンロードする
2.プロジェクトを開いて直下にPluginsフォルダを作りダウンロードしてきたAdvanced Sessions Pluginを入れる
3.プロジェクトを開き、メニューのEdit > PluginsからOnline Sybsystem EOSを有効にして本体を再起動する

SDK のダウンロードと Dev Auth Tool の用意をする

SDK は直接は必要無いのですが、そこに添付されている Dev Auth Tool を利用するのでダウンロードしておきます。SDK は前述の Developer Portal からダウンロードできます。
私のバージョンだと以下の場所にありました。
EOS-SDK-21689671-v1.15.4.1\SDK\Tools\EOS_DevAuthTool-win32-x64-1.1.0\EOS_DevAuthTool.exe

起動すると以下のようになります。


Epic アカウントでログインしておきます。今回は Creadential Name を Context_1, Context_2 としていきます。この名前は任意ですが、後述するログインフェーズで指定するのでそこと合わせてください。

Project Settings で Epic Online Services の設定を行う

前述の Plugin を有効にしたことで Project Settings に Plugins -> Online Subsystem EOS のメニューが出てきています。

Developer Portal の「製品設定」の箇所にある項目をそのままコピーできるようになっています。


Encryption Key はここでは対応する値がありませんが、空にするとうまくいかないので 0000000000000000000000000000000000000000000000000000000000000000 を入れておきます。(64桁であればなんでもいいです)

また Use Epic Account for EOS login (requires account linking) にもチェックを付けていることに注意してください。

DefaultEngine.ini の設定を行う

EOS Online Subsytem (OSS) プラグイン | Unreal Engine ドキュメント
プロジェクトのConfig→DefaultEngine.iniを以下の部分を一番下の行に追加します。

[OnlineSubsystemEOS]
bEnabled=true

[OnlineSubsystem]
DefaultPlatformService=EOS

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[/Script/OnlineSubsystemEOS.NetDriverEOS]
bIsUsingP2PSockets=true

メインメニュー画面を作る

ログイン、セッション作成、セッション検索などを行う画面を作成します。
まずは MainMenu で新規 Level を作成します。今回は Empty Level で作成しました。

UI を作成する

ログイン処理

EOS Online Subsytem (OSS) プラグイン | Unreal Engine ドキュメント
Account Portal


Developer

上記はそれぞれの実装ですが、基本的にはドキュメントの通りです。Dev Auth Tool で設定した Port 番号 (ここでは 6300) を指定します。
DeveloperのCredentialNameにこの場合はContext_1を指定する必要がある

ログイン処理をボタンクリックで呼び出す

Account Portal


Developer

レベルブループリントから上記で作ったウィジェットの登録


まとめ
以下のような注意点があります。

・Developer Portal で Epic アカウントサービスを設定する
・Project Settings への設定時に Encryption Key をダミーで入れておく
・Dev Auth Tool は SDK から取得する
・Developer でログインする場合には Dev Auth Tool と設定をあわせる
・Standalone で起動する

画面の解像度の設定

このままではフルスクリーンで実行されてしまってテストができないので以下を参考に画面の設定を行う。

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

UnrealEngineで専用サーバーを構築する方法

こんにちは!ジェイです。今回はUnrealEngine5で専用サーバー(dedicated server)を構築したのでその手順を書き残しておきます。

UnrealEngineのソースコードをダウンロードしてビルドする

1.Visual Studio での UE5 C++ 開発環境の構築
2.Epic Games アカウントと GitHub アカウントの連携
3.ソースコードのダウンロード
4.ソースのビルド
という手順で進めます。注意することはファイルサイズが130GBあるのでそれ以上の容量を確保しておかないとビルドができません。
こちらを参考にするのがとてもわかりやすいです。
https://zenn.dev/pokotaro/articles/7d60ecaf7a2f57

専用サーバーの構築

公式の情報

Unreal Engineはサーバークライアントモデルで、1台のサーバーをホストにして複数のクライアントが参加して同時に遊べる環境を簡単に構築できるらしいので、それをテストしてみようと思います。

流れとしては

既存のThird Personプロジェクトを利用して、サーバーアプリとクライアントアプリを作成
ローカルPC(IPは、127.0.0.1)でサーバープログラムを動かして、同じくローカルからクライアントアプリを複数起動させる
という手順で進めていきたいと思います。

1.ThirdPersonプロジェクトを作成

前回タスクバーにピン留したUE5のアイコンをクリックしてUnreal Engineを起動し、ゲーム>サードパーソンを選択。

プロジェクトデフォルトの設定(画面右下)は、「C++」を選択。

プロジェクト名は「TestProject」にする。

※他の名前でも良いけど、この名前は色々なところで使うので、この記事を見ながら試すならTestProjectにしておくのが吉。決してThirdPersonという名前にはしないように。

2.エディタ・サーバー・クライアントビルドの準備

TestProjectを作成したフォルダ(以下、ルートフォルダ)を開き、TestProject.slnをダブルクリックしてVisual Studioで開く。


Visual Studioの方は無視してエクスプローラーの画面に戻り、ルートフォルダ>Sourceを開いてTestProject.Target.csをコピーして以下の2つのファイルを作成。

TestProjectServer.Target.cs
TestProjectClient.Target.cs


Visual Studioの画面に戻り、Solution ExplorerにあるSourceフォルダを右クリック>Add>Existing Itemで、先程作った2つのファイルを追加する。

Vsual Studioで新しく追加した2つのファイルを開き、

クラス名
メソッド名
Type = TargetType.hogehoge;(ここは自然に修正されているかも。ServerのファイルではServer、ClientのファイルではClientにする)
ExtraModuleNames.Add(“TestProject”);
の部分を修正


修正したら、Visual Studioを閉じる。その際にアイテムの保存を聞かれるので保存する。

ファイルを追加しただけでは今回のゲーム用のソリューションファイルに認識されないので、エクスプローラーでルートフォルダを開き、TestProject.unprojectを右クリック>Generate Visual Studio Project filesを選択。


この操作で、ゲーム用のTestProject.slnファイルが再生成されるとのこと。

3.エディタ・サーバー・クライアントビルドの開始

Visual Studioの画面に戻り、ビルドコンフィギュレーションを「Development Editor」にしてBuild>Build TestProjectを押してEditor Buildを行う。

※Build>Build Solutionではない。多分それでも行けるのだろうけど、すべてのソリューションを見てビルドするので二度手間。

※このとき、Solution Explorerの画面でEngine>UE5を選んでいると、Build>Build TestProjectが無く、Select Buildみたいな名称のものしか無い。


ビルドが完了したら、次はビルドコンフィギュレーションを「Development Server」にして同様にビルドを行う。

さらにビルドコンフィギュレーションを「Development Client」にして同様にビルドを行う。

ルートフォルダ>Binaries>Win64のフォルダの中に、~Client, ~Server, ~の3種類のファイル(およびその他のdllファイルなども)作られていることを確認する。

4.サーバー・クライアントアプリとしてパッケージ化の準備

取り敢えず全然用語がわからなければ、

エディタの起動時にブループリントを実行する | Unreal Engine ドキュメント

これらのドキュメントを読んでおくと良いかもしれませんが、わからなくても大丈夫です。

TestProjectでは、1つのゲームとして完結しているので、これをクライアント側とサーバー側の機能に分けてそれぞれパッケージ化してあげることになります。

クライアント側の機能としては、「クライアントが立ち上がったら、サーバー(今回はローカルの127.0.0.1)にアクセス」、サーバー側の機能としては「アクセスしてきたキャラの配置場所を指定。(後の機能は現在のTestProjectの設定のママ)」があれば十分なので、それぞれを「マップファイル」として作成し、後はEU5にそれぞれ「サーバーアプリ」「クライアントアプリ」としてパッケージ化するように司令を出すとういう手順となります。

※ここで言う「マップ」と言うのは「ゲーム内の地図」という意味でのマップではありません。

まずは、タスクバーに登録したUE5アイコンから、作成したTestProjectをUnreal Editorで開きます。(クリックするだけ)

All>コンテンツ>ThirdPersonフォルダ内のMAPフォルダを、ひとつ上の階層に有るコンテンツフォルダに移動させます。


(ThirdPersonフォルダ内に自動的にMAPフォルダができるがそれは無視。)今移動させたMAPフォルダを選択して、右側のエリアで右クリック>基本アセットを作成「レベル」でレベルを追加してTestProjectEntryと名付けます。


作ったばかりのTestProjectEntryを開き、(コンテンツを保存というダイアログが出るので保存する)このレベルのBlueprint scriptを開く。


作ったばかりのTestProjectEntryを開き、(コンテンツを保存というダイアログが出るので保存する)このレベルのBlueprint scriptを開いて以下のようにノードを追加。
左上から再コンパイルを行い、保存して閉じる。


コンテンツ>Maps内のThirdPersonMapを開き、Map上右クリック>アクタを配置>PlayerStart でPlayerStartを2つ追加し、もともとのPlayStartを削除。

※実際は、2つのPlayStartがあればいいので元のやつを消さずに1つだけ追加(あるいは複製)すれば良い。


PlayStartが2つ有るのがわかる

5.サーバー・クライアントアプリとしてパッケージ化

編集> プロジェクト設定を開く。
左メニュー>マップ&モードのDefault Mapsの設定を変更


左メニューのパッケージ化を選び、パッケージ化セクションの下の「詳細設定」を開き、「パッケージ化されたビルドに含めるマップ」を以下のように設定


まずは、サーバーアプリとしてパッケージ化す。
プラットフォーム> WIndows>バイナリコンフィギュレーションで「開発」を選択。
プラットフォーム> WIndows>ビルダーターゲットで「TestProjectServer」を選択。

プラットフォーム>Windows>プロジェクトをパッケージ化 で保存先の「Packageフォルダ」をルートフォルダ直下に自分で作成&選択してパッケージスタート。

これで、サーバー用のパッケージが完成するので、終わったら、プラットフォーム> Windows>ビルダーターゲットで「TestProjectClient」を選択し、同様にパッケージ化(保存先はPackageでOK)

5.サーバーを立ち上げて、複数人のクライアントから同じ場所に接続できるか確認

サーバーのログを見ながら立ち上げることができるようにする。

ルートフォルダ>Package>Window Server内の、TestProjectServer.exeのショートカットを作成し、 TestProjectServer.exe – ThirdPersonExampleMapとリネームする。

そして、ショートカットを右クリック>プロパティを開き、ショートカットタブのリンク先のTestProjectServer.exeの後ろに -logをつける。半角スペースをきちんと入れて -logとするのが正しいです。


例:E:\UE5Projects\TestProject\Package\WindowsServer\TestProjectServer.exe -log

適用を押して保存し、ショートカットをダブルクリックすると、コマンドプロンプト画面が開きログが表示されてサーバーが起動しているのがわかる。


ルートフォルダ>Package>WindowsClientフォルダのTestProjectClient.exeをダブルクリックして、クライアントを立ち上げる。成功しているなら、キャラクター1体目が表示される画面が現れる。

ALT+TABで画面を切り替えて、もう一度ルートフォルダ>Package>WindowsClientフォルダのTestProjectClient.exeをダブルクリックして2つ目のクライアントを立ち上げる。

成功していれば、1体目のキャラクターと2体目のキャラクターが同じ画面に現れます。

画面の解像度の設定

このままではフルスクリーンで実行されてしまってテストができないので以下を参考に画面の設定を行う。


専用サーバーの構築は以上です。

もし他のプロジェクトからインポートする場合の手順

今まで作ったプロジェクトなど、特にC++でないプロジェクトを使いたい場合など既存のプロジェクトをインポートしたい時があると思うので以下の手順を書き残します。

プロジェクトの移行

移行したいプロジェクトのアセットを選択して、アセットアクション(AssetAction)→移行(migrate)を選ぶ、もしくはフォルダを選択して、移行(migrate)を選ぶとフォルダの選択画面になるので、移行先のプロジェクトのContentを選んで実行する。

プロジェクト設定の移行

移行(migrate)だけでは、プロジェクト設定は移行されないのでこちらも手順通りにやります。

項目ごとにインポートする方法

まず、移行元のプロジェクトから「編集→プロジェクト設定」からプロジェクトの設定をエクスポートして、移行先のプロジェクトで「編集→プロジェクト設定」をインポートする。特にプロジェクト項目のマップ&モードとエンジン項目のインプットは大事なので必ずインポートするようにしましょう。

Engine.iniを書き換えて一気に設定する方法

プロジェクト内のConfig→DefaultEngine.iniの中身を移行元から移行先へ内容をコピペする

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

« 1 2 3 4 5 6 7

Search by Article Tags

Monthly Archive

Search by Exclusive Perks

Search Articles