FieldWalker
最終更新
役に立ちましたか?
最終更新
役に立ちましたか?
UnrealEngine 用プラグイン Diarkis UnrealEngine Plugin
を使用したサンプルプロジェクト (FieldWalker
) です。
Diarkis
の Room、Group、Field、P2P、MatchMaker、RPC、DirectMessage
機能を確認することができます。
複数の FieldWalker
を起動することで、他のクライアント端末で動作しているキャラクター位置の同期を確認できるサンプルです。
文字位置の同期は UDP/TCP
プロトコルまたは P2P
プロトコルを用いて確認することができる。
対応プラットフォームは、Windows10/11, Mac, iOS, Android, Nintendo Swtich, PS4, PS5, Xbox Series X|S です。
UE5.3.2で確認。
FieldWalker.uproject のマウスの右コンテキストメニューから「Visual Studio プロジェクトファイルの生成」を選択する。
Visual Studio で FieldWalker.sln を開く。
ビルド&実行
Windowsで実行する: VisualStudio で DebugGame_Editor
と Win64
を選択し、ビルドと実行を行う。
FieldWalker.uproject のマウスコンテキストメニューから 「Generate XCode Project」 を選択する。
処理が失敗した場合は、以下のシェルコマンドを実行してFieldWalker.xcworkspaceを作成する。
UE4.27 の場合
UE5.0 の場合
XCode 12.5.1 ( UE4.27 用 ) / XCode 13.3 ( UE5.0 用 )
で FieldWalker.xcworkspace を開きます。
ビルドと実行
File
メニューからWorkspace Setting
を選択し、New Build System
を選択します。
SchemeでFieldWalker
My Mac(XXXXX)
を選択する。
EditSchemeのBuild ConfigurationでDebugGame Editor
を選択してビルド&実行する。
UE5Editorを起動し、ツールバーのPlay
ボタンをクリックします。
Selected Viewport
とMultiplayer Option
でNumber of Players: 1
を選択します。
起動後、最初に表示されるログインメニューは以下の通りである。
Diarkisサーバーを指定します。
HostName : Diarkis HTTP サーバの URL を指定します。
ClientKey : DiarkisサーバーにClientKeyがある場合は、それを指定します。ない場合は空欄にしてください。
UID : 他のクライアントと異なるユニークなUIDを指定します。 注意! 他のクライアントと同じUIDを指定すると同期できません。デフォルトでは、この値はマシン名とクライアントのプロセスIDの組み合わせです。
プロトコル : 通信方式(UDP/TCP)を選択します。
Start ボタン : InGame に移動し、キャラクター位置の同期を確認できます。
フレームレート設定
Show Stat : フレームレートなどの情報を表示します。
Fix FPS : FPSを修正します。
FPS : 固定FPSを30FPSと60FPSの間で切り替えます。
起動後、最初に表示されるメインメニューは以下の通りである。
サンプルタイプを選びます。
RoomRandomJoin : 同期する Room を RandomJoinRoom で参加させます。
Field : Field 関数を使用した同期です。Field は使用する Pod (UDP / TCP サーバー) の数に応じて Grid で分割されます。
デフォルトでは、1PodのUDPサーバーが起動しているため、1Mapが4Gridに分割されます。
他のキャラクターが隣のGridにいても、そのキャラクターが自分の視界内にいれば、そのキャラクターの位置情報が送信されます。
MatchMaker ボタン : MatchMaker Menu 画面に遷移します。SyncMethod
には影響しません。。
Ticketボタン : Ticket Menu画面に遷移します。SyncMethod
には影響しません。
Disconnectボタン : Diarkisから切断してログインメニューに戻ります。
MainMenu画面のStartボタンをクリックすると、InGame画面に遷移し、MainMenu画面で指定した「同期方法」に従ってキャラクターの位置が同期されます。
アプリケーション操作
P2P接続の確認方法
Roomで接続した状態で、InGame画面のP2P Start
ボタンを押す。
端末との接続(HolePunch)に成功すると、InGame画面にP2P Connect: 1 Client
と表示され、端末間でP2P通信が開始されます。
MatchMakerを利用してInGameに参加した場合は、MatchMakerの機能を利用してP2Pに移行してください。
マッチングの種類
ランクマッチング
サンプルでは、1-10、11-20、21-30、31-40、...のランクのユーザー同士でマッチングされます。
UIでは、「ランク」で同じ数字、または 5 or 8 or 10、または 12 or 15 を選択したユーザー同士とマッチングされます。
RateAndPlayによるマッチング
「Rating」と「Play」の組み合わせが同じユーザーとマッチングします。
OwnUID : あなたのUIDが表示されます。
マッチメーカー
マッチングタイプに基づいてマッチングが行われます。
ホストボタン : マッチングのホストになりたい場合はこのボタンをクリックしてください。
検索ボタン : ゲストとしてマッチングする場合は、このボタンをクリックします。
MatchMaker UID Lists : マッチングしたメンバーのUIDリストを表示します。
Abortボタン : マッチング検索から除外します。この機能はホストに対してのみ有効です。
解除ボタン : 一致を解除します。この機能はホストのみ利用可能です。
Completeボタン : マッチングを完了し、マッチング検索からホストを削除します。この機能はホストのみ利用可能です。
マッチングを終了します。この機能はゲストのみ利用可能です。
チームマッチメーカー
TeamMatchMakerはマッチングタイプ
に基づいてチームをマッチングさせますが、TeamMatchMakerをチェックする際には、MatchMakerで使用したマッチングタイプ
と異なる必要があります。
チームホストボタン : あなたがチームマッチングのホストである場合、このボタンをクリックしてください。このボタンはMatchMakerでホストを務めた人だけが使用できます。
チーム検索ボタン : ゲストとしてマッチングを行いたい場合は、このボタンをクリックしてください。
TeamMatchMaker UID Lists : マッチングしたメンバーの UID リストを表示します。
中止ボタン : マッチング検索からチームを除外します。この機能はホストに対してのみ有効です。
Completeボタン : 照合を完了し、照合検索から除外します。この機能はホストのみ有効です。
同期
Syncボタン : SendMessageに入力されたメッセージがマッチングした全てのホストに送信されます。
Send Message : 送信するメッセージを入力します。送信するメッセージを入力します。
Recv Message : 受信したメッセージが表示されます。
Startボタン : マッチしたメンバーとのInGameに移動します。
Main Menuボタン : メインメニューに戻ります。
UEEditorを起動したら、ツールバーのPlay
ボタンを押します。
Standalone Game
を選択します。
「Multiplayer Option」 で Number of Players: 2 ~ 4
"を選択します。
ネットモードNet Mode
でスタンドアロンプレイ(Play Standalone)
を選択する。
複数のWindowが表示されるので、ゲームの Start
ボタンを押す。
UIDが同じでないことを確認してください。そうしないと意図しない動作が起こります。
複数人でプレイする場合、PCのスペックによってはキャラクターの同期に時間がかかる場合があります。
以下の手順は、選択したビューポートの場合と同じです。
ログファイルは以下のフォルダに出力されます。
FieldWalker/logs/○○○/および以下のフォルダ(OOOOはユーザID)。
ログはデバッグビルド時のみ出力されます。
Developmentビルドでもログを出力したい場合は、DiarkisInterfaceBaseのコンストラクタでbOutputLog = true
を調整してください。
DiarkisInterfaceBase コンストラクタでは、LogOutType でファイル出力とデバッグ出力を切り替えることができます。
LoggerFactoryコンストラクタでは、ログ出力レベルを変更できます。
ログ出力レベルは、クライアントライブラリの各機能(UDP、TCP、Socket、Room、P2P、MatchMaker、Runtimeなど)ごとに設定できます。
Baseクラスで設定したログについては、Runtimeで出力レベルを指定することができます。
例えば、DiarkisLoggerSeverity::Warningを設定すると、以下の順番でWarning以下の出力が得られます。
FieldWalker/ソース/FieldWalker
: FieldWalkerGameMode.h / FieldWalkerGameMode.cpp
FieldWalkerGameMode.h / FieldWalkerGameMode.cpp
: ゲームを管理するメインクラス ( AGameModeBase )
FieldWalkerCharacter.h / FieldWalkerCharacter.cpp
: キャラクタのクラス ( ADiakisCharacter )
FieldWalker/Source/FieldWalkerDiarkis
.
DiarkisPluginBase.h / DiarkisPluginBase.cpp
: Diarkisプラグインを使用するためのベースクラス
DiarkisPluginInterface.h / DiarkisPluginInterface.cpp
: Diarkis Pluginを使用するためのインターフェースクラス
DiarkisPluginSample.h / DiarkisPluginBase.cpp
: Diarkis Pluginを使用するサンプルクラス
クライアント
Diarkisライブラリを制御するインターフェースの親クラス
拡張
Diarkisライブラリを制御するインターフェースの子クラス群
DiarkisNetwork
Diarkisプラグインのインターフェースクラス
libDiarkis
Diarkis ライブラリ
役割の概要
Diarkisライブラリを制御するインターフェースの親クラス
コードの場所
FieldWalker/Plugins/Diarkis/ソース/Diarkis/クライアント
各クラス
DiarkisInterfaceBase.h / DiarkisInterfaceBase.cpp
: UEからDiarkisを制御するためのインターフェースクラス(libDiarkisを制御します。)
DiarkisRoomBase.h / DiarkisRoomBase.cpp
: ルーム機能の親クラス(コントロール libDiarkis)
DiarkisGroupBase.h / DiarkisGroupBase.cpp
: グループ機能の親クラス (controls libDiarkis)
DiarkisFieldBase.h / DiarkisFieldBase.cpp
: フィールド機能の親クラス(libDiarkis を制御)
DiarkisTcpBase.h / DiarkisTcpBase.cpp
: TCP 機能の親クラス (libDiarkis を制御)
DiarkisUdpBase.h / DiarkisUdpBase.cpp
: UDP 機能の親クラス(libDiarkis を制御)
DiarkisP2PBase.h / DiarkisP2PBase.cpp
: P2P 機能の親クラス(libDiarkis を制御)
DiarkisMatchMakerBase.h / DiarkisMatchMakerBase.cpp
: MatchMaker 機能の親クラス(libDiarkis を制御)
DiarkisRPCBase.h / DiarkisRPCBase.cpp
: RPC 機能の親クラス(libDiarkis を制御)
役割の概要
Diarkisライブラリを制御するインターフェースの子クラス群
コードの場所
FieldWalker/プラグイン/Diarkis/ソース/Diarkis/Extension
各クラス
Character`(文字データ同期クラス)
DiarkisCharacter.h / DiarkisCharacter.cpp
: Diarkisのキャラクタ同期用のクラス。
Component` (位置同期用の Diarkis コンポーネントクラス)
DiarkisSyncComponent.h / DiarkisSyncComponent.cpp
: Diarkis位置同期コンポーネントクラス
DiarkisCharacterSyncComponent.h / DiarkisCharacterSyncComponent.cpp
: アクタの作成時にカスタムデータを送受信するためのサンプル実装コンポーネントクラス
Movement`(Diarkisの位置同期クラス)
DiarkisMovementController.h
: 位置同期コンポーネントのインターフェースクラス
DiarkisLocalMovementSync.h / DiarkisLocalMovementSync.cpp
: ローカル用の位置同期コンポーネントクラス。
DiarkisRemoteMovementSync.h / DiarkisRemoteMovementSync.cpp
: リモート用のロケーション同期コンポーネントクラス。
Diarkis/Utils` (ユーティリティクラス)
DiarkisUtils.h / DiarkisUtils.cpp
: ライブラリを制御するためのインターフェースクラス
ライブラリを制御するためのインターフェースクラス(XXXBaseから派生)
DiarkisInterface.h / DiarkisInterface.cpp
(XXXBase から派生したクラス)
DiarkisRoom.h / DiarkisRoom.cpp
: ルーム機能を制御するためのクラス
DiarkisGroup.h / DiarkisGroup.cpp
: グループ機能を制御するクラス
DiarkisField.h / DiarkisField.cpp
: フィールド機能を制御するクラス
DiarkisTcp.h / DiarkisTcp.cpp
: TCP 機能を制御するクラス
DiarkisUdp.h / DiarkisUdp.cpp
: UDP 関数を制御するクラス
DiarkisP2P.h / DiarkisP2P.cpp
: P2P 機能を制御するクラス
DiarkisMatchMaker.h / DiarkisMatchMaker.cpp
: MatchMaker機能を制御するクラス
DiarkisRPC.h / DiarkisRPC.cpp
: RPC機能を制御するクラス
DiarkisSyncData.h / DiarkisSyncData.cpp
: Diarkisのロケーション同期を処理するクラス
DiarkisReplication.h / DiarkisReplication.cpp
: 部屋のプロパティを使用した変数のレプリケーションを行うクラス
DiarkisActorManagement.h / DiarkisActorManagement.cpp
: Diarkisが管理するアクターを識別するID
役割の概要
Diarkisプラグインのインターフェースクラス群
コードの場所
FieldWalker/Plugins/Diarkis/ソース/Diarkis/DiarkisNetwork
各クラス
Event/Interfaces`(Diarkis PluginのRoom機能のコールバックを受け取るインターフェースクラス)
DiarkisNetworkCoreEvent.h
: Diarkis PluginのCoreイベントを表すインターフェース。
DiarkisNetworkRoomEvent.h
: Diarkis Plugin の Room イベントを表すインターフェース。
DiarkisNetworkGroupEvent.h
: Diarkis Plugin の Group イベントを表すインターフェース
DiarkisNetworkFieldEvent.h
: Diarkis PluginのField関数のコールバックを受け取るクラス。
DiarkisNetworkP2PEvent.h
: Diarkis Plugin の P2P イベント用のインターフェース
DiarkisNetworkMatchMakerEvent.h
: Diarkis Plugin の MatchMaker イベント用のインターフェース
イベントエミッター`(Diarkisルームイベントをキューイングするクラス)
DiarkisNetworkCoreEventEmitter.h / DiarkisNetworkCoreEventEmitter.cpp
: Diarkis Coreイベントをキューイングするためのクラス。
DiarkisNetworkEventEmitterBase.h / DiarkisNetworkEventEmitterBase.cpp
: 様々なイベントを生成するためのベースクラス。
DiarkisNetworkRoomEventEmitter.h / DiarkisNetworkRoomEventEmitter.cpp
: Diarkis Room イベントをキューイングするクラスです。
DiarkisNetworkGroupEventEmitter.h / DiarkisNetworkGroupEventEmitter.cpp
: Diarkis Groupイベントのキューイング用クラス
DiarkisNetworkFieldEventEmitter.h / DiarkisNetworkFieldEventEmitter.cpp
: Diarkisフィールドイベントのキューイング用クラス
DiarkisNetworkP2PEventEmitter.h / DiarkisNetworkP2PEventEmitter.cpp
: Diarkis P2Pイベントをキューイングするクラス
DiarkisNetworkMatchMakerEventEmitter.h / DiarkisNetworkMatchMakerEventEmitter.cpp
: Diarkis MatchMakerイベントをキューイングするクラス
Modules`(DiarkisのRoom機能の状態をチェックし、コールバックイベントをキューに入れるクラス)
DiarkisNetworkModuleBase.h / DiarkisNetworkModuleBase.cpp
: DiarkisのMatchMakerイベントをキューイングするクラス
DiarkisNetworkRoom.h / DiarkisNetworkRoom.cpp
: DiarkisのRoom関数のステータスをチェックし、コールバックイベントをキューに入れるクラス。
DiarkisNetworkGroup.h / DiarkisNetworkGroup.cpp
: DiarkisのGroup関数のステータスをチェックし、コールバックイベントをキューに入れるクラス。
DiarkisNetworkField.h / DiarkisNetworkField.cpp
: DiarkisのField関数のステータスをチェックし、コールバックイベントをキューに入れるクラス。
DiarkisNetworkP2P.h / DiarkisNetworkP2P.cpp
: DiarkisのP2P関数のステータスをチェックし、コールバックイベントをキューに入れるクラス。
DiarkisNetworkMatchMaker.h / DiarkisNetworkMatchMaker.cpp
: DiarkisのMatchMaker関数の状態をチェックし、コールバックイベントをキューに入れるクラス。
DiarkisNetworkBlueprintLibrary.h / DiarkisNetworkBlueprintLibrary.cpp
: ブループリント関数としてDiarkisプラグインのコールバックイベントを登録するクラス。
DiarkisNetworkManager.h / DiarkisNetworkManager.cpp
: Diarkis Pluginを管理するクラス
DiarkisNetworkSubsystem.h / DiarkisNetworkSubsystem.cpp
: UDiarkisNetworkManagerインスタンスを保持するクラス
役割の概要
Diarkis C++ライブラリ
コードの場所
FieldWalker/Plugins/Diarkis/Source/ThirdParty/libDiarkis/prebuilt
各ライブラリのファイル
win-x64で使用されるライブラリ (win-x64\bin\diarkis.dll)
macos-x64で使用されるライブラリ (macos-x64\lib\diarkis.dylib)
android で使用されるライブラリ (android\libs\arm64-v8a\diarkis.so)
iosで使用されるライブラリ (iOS\lib_static\libdiarkis.lib)
switch で使用されるライブラリ (nx64\Libraries\NX-NXFP2-a64\Release\libdiarkis.a)
ps4で使用されるライブラリ (ps4\lib_staic\libdiarkis.a)
ps5 で使用されるライブラリ (ps5\lib_staic\libdiarkis.a)
Diarkisプラグインのクラス図
Diarkis Pluginをカスタマイズするには
Diarkisライブラリを制御するインターフェースクラス(図の上段赤枠)から派生したクラスを用意し、その処理をカスタマイズする。
ADiarkisPluginSample
を参考にカスタマイズしてください。
文字同期に関連するクラス図
同期方法をカスタマイズする
DiarkisLocalMovementSync
、DiarkisRemoteMovementSync
から派生したクラスを用意して処理をカスタマイズするか、ADiarkisCharcter
から派生したクラスを用意して処理をカスタマイズする。
Field Walkerのサンプルには、Diarkis Pluginを使って同期できる以下の機能のサンプルが含まれています。
アクターインスタンス管理
アクターロケーション同期
変数のレプリケーション
RPC
これらの機能は、標準的なUEの通信処理とは異なる実装となっているため、通常の通信処理とは別に設定・実装する必要があります。また、Diarkis Room機能を用いて同期を実装するため、Roomを用いた通信が可能な状態である必要がある。
DiarkisySyncComponent
を持つアクターがローカルで作成または削除されると、アクターインスタンス管理のための情報がリモートに送信され、各ホスト上に同じアクターインスタンスが存在するように同期されます。マップ上に最初に配置されたアクタは、既に作成されたインスタンスから再利用され、動的に作成されたアクタはリモート上で動的に生成されます。
DiarkisySyncComponent
は、Diarkisネットワーク上のアクタを識別するために使用されるDiarkisアクタID
を持っています。また、DiarkisySyncComponent
のオーナーかどうかを判断し、この情報を使ってローカルとリモートの動作を切り替えることができる。例えば、ThirdPerson_AnimSyncBP
はこのフラグを使用して、ローカルの CharacterMovement
から情報を取得するか、通信によって取得した情報を使用するかを切り替える。
俳優ID
と所有者フラグは、Diarkisネットワークに接続して必要な情報が利用可能になった後に利用可能になる。DiarkisSyncComponent
には OnDiarkisActorIDDecided
イベントがあり、このイベントが発生すると知ることができます。例えば、ThirdPersonCharacter
のBegin Play
はこのイベントを使用して、オーナーが決定した後にレプリケーションとRPC登録処理を行います。
リモートアクターの作成時にカスタムデータを追加することも可能です。UDiarkisCharacterSyncComponent::SerializeSpawnActorCustomPayload()
でリモートアクター作成データにカスタムデータを追加し、UDiarkisCharacterSyncComponent::DeserializeSpawnActorCustomPayload()
を呼び出して受信データから必要な情報を取得します。
アクターに DiarkisSyncComponent
を追加することで、これらの機能が有効になります。同じRoomに接続されている他のホストにも同じActorが自動的に作成されます。リモートの ThirdPersonCharacter
は位置、姿勢、ジャンプ状態などを自動的に同期します。リモートホストが Room を離れると、ローカルに存在するリモートアクターも自動的に削除されます。
アクターが持つ変数をネットワーク経由で同期します。対象となる変数には UPROPERTY()
を指定する必要があります。Register Replicated Variable
で対象のActorと変数名を登録し、Send Replicated Variable
で必要なタイミングでデータを送信します。ただし、送信間隔は DiarkisReplication::replicationMinimumInterval
が最も短いタイミングとなる。サンプルでは、ThirdPersonCharacter
ブループリントの Register Replicated Variables
と Send Replicated Variable
に実装があります。
RPCはネットワーク経由でActorの関数を呼び出す関数です。対象の関数には UFUNCTION()
を指定する必要があります。RegisterRpcUEFuncName
で対象のActorと変数名を指定して関数を登録し、SendRpcUEFuncAll
などで送信します。リモート側で RPC を受信すると、同じ Actor ID を持つ Actor の指定した名前のメソッドを呼び出します。サンプルでは ThirdPersonCharacter
のブループリントの RPC
を登録し、AFieldWalkerCharacter::HandleFire()
で RPC
を送信しています。
本サンプルでは、上記の関数を用いて以下の処理を実装しています。
ローカルでThirdPersonCharacter
を作成すると、同じRoomに接続している他のホストでも自動的に同じアクターが作成されます。リモートの ThirdPersonCharacter
は位置、姿勢、ジャンプ状態などを自動的に同期します。リモートホストが Room を離れると、ローカルに存在するリモートアクターも自動的に削除されます。また、リモートのプレイヤーキャラクターを作成する際には、オーナーが決定したアクターの色が初期データとして渡され、すべてのホストで同じ外見を再現します。
AIは特定のホストでのみ実行され、他のホストでは位置情報が同期されます。このサンプルでは、AIキャラクターはルームオーナーであるホスト上で実行され、その結果は通常のアクターの位置情報と同期されます。ルームオーナーが退室すると、新しいルームオーナーにAIキャラクターを扱う権限が委譲されます。緑色の2人のキャラクターがAIキャラクターになります。
弾の発射処理はリモートホスト側で RPC
によって呼び出されます。ローカルで弾を発射する場合、あなたがプレイヤーキャラクターのオーナーであれば、 RPC
コールがルームに参加している他のホストに送られます。このRPC
呼び出しによって、リモートホストも同じ弾の発射処理を行います。弾丸の衝突とダメージ処理は、アクタのオーナーであるホストによって決定されます。
ThirdPersonCharacter
の変数 Health
はレプリケーションによって同期されます。ThirdPersonCharacter
の所有者であるホストで被弾時に Health
が減少すると、自動的にリモート側の ThirdPersonCharacter
の Health
変数に同期される。また、Recovery
ボタンによってHealth
が回復すると、その変化は自動的にリモート側のThirdPersonCharacter
に反映される。
対応プラットフォーム
Windows 10
Mac OS X
アンドロイド iOS
iOS
ニンテンドースイッチ
PS4 / PS5
Xbox シリーズ X|S
UnrealEngineバージョン
5.3.2
VisualStudio 2022
WindowsSDK バージョン 10.0.19041.0
アンドロイド環境
android-studio-2020.3.1.22-windows.exe
Android NDK 22.1.7171670
Android 6.0 (APIレベル23)
Mac/iOS環境
XCode 13.3
UE 5.0.2
PS4 環境
UE5 ベースコード
「git@github.com:Diarkis/UnrealEngine.git」リポジトリ
5.0.2 リリース タグ
コミット: d11782b9046e9d0b130309591e4efc57f4b8b037
UE PS4 プラットフォーム用パッケージ
EpicGamesが別途提供するポータルサイトから、コンソールPS4用のコードを入手してください。
PS4_5.0.2-release.zipパッケージを使用してください。
PS4 SDK バージョン 9.508.001
PS4システムソフトウェア 9.600.011
PS5環境
UE5ベースコード
「git@github.com:Diarkis/UnrealEngine.git」リポジトリ
5.0.2 リリース タグ
コミット: d11782b9046e9d0b130309591e4efc57f4b8b037
UE PS5 プラットフォーム用パッケージ
EpicGames が別途提供するポータルサイトから、Console PS5 のコードを入手してください。
PS5_5.0.2-release.zip パッケージを使用してください。
PS5 SDK バージョン 5.000.00.41
PS5システムソフトウェア 5.50.00.08
Xbox シリーズ X|S 環境
UE5ベースコード
「git@github.com:Diarkis/UnrealEngine.git」リポジトリ
5.0.2 リリース タグ
コミット: d11782b9046e9d0b130309591e4efc57f4b8b037
UE Xbox Series X|S プラットフォーム用パッケージ
EpicGamesが別途提供するポータルサイトから、Console Xbox [GDK]のコードを入手してください。
GDK_5.0.2-release.zipパッケージを使用してください。
GDK: 211001 2021年10月アップデート 1
Edit
メニュー => Package Project
=> Windows 10 (64bit)
を選択する。
パッケージの出力先フォルダを指定する。3.
ビルドに成功したら、出力先に指定したフォルダから FiledWalker.exe を起動する。
UnrealEditorのタスクバーから、設定
⇒プロジェクト設定
をクリックします。
Platformの項目で、Android
をクリックします。
APKパッケージ
Androidパッケージ
最小SDKバージョン
ターゲットSDKバージョン
ビルド
armv7サポートのチェックを外す(armv7は順次サポートされます)
arm64のサポートをチェックする
Platformの項目で 「Android SDK 」にチェックを入れる
以上の各項目を環境に合わせて設定してください。
Android dev kitデバイスを接続し、Androidプラットフォーム用にプロジェクトをパッケージ化する。
コマンドプロンプトで 「adb start-server 」コマンドを使ってadbサーバーを実行する。
androidプロジェクトの出力ディレクトリにあるインストールファイルをダブルクリックします。
インストールが完了すると、開発キットのアプリ一覧の最後のページにアプリが表示されます。
アプリを起動すると、最終的にメインメニューが表示されます。
UrealEditorのタスクバーから、Settings
=> Project Settings
を押します。
プラットフォーム項目の iOS
プロビジョニングプロファイル`設定
証明書`の設定
バンドル表示名`の設定
バンドル名`の設定
バンドル識別子`の設定
iPhoneデバイスを接続し、ツールバー右▽の「Launch」からiPhoneデバイスを選択する。
パッケージのビルドが完了すると、パッケージがアプリに転送されます。
EpicGamesとEpic Games Console NDA
を締結し、Switch用のPlatformコードを入手する。
UE 4.27.2のプロジェクトコードを入手する。
NintendoSDK 12.3.2をインストールする。
UE 4.27.2の最新サポートはNintendoSDK 12.3.2だからです。
VisualStudio2019 Buildを選択します: Terminal: Development
を選択します: SwitchProject:
FieldWalker` を選択してビルドする。
ビルドには数時間かかります。ビルドしたら、実行してください。
MainMenu画面のMatchMakerボタンをクリックすると、MatchMaker画面に遷移し、MatchMakerでマッチングした相手とInGame(Room)に参加することができます。