このページは5.2.2のGameSDKを対象としています。
更新履歴
次のページから必要なファイルをダウンロードして下さい。 CRYENGINE | GameSDK 5.2 Dedicated Server
※ドキュメントではチルダキーでコンソール画面を呼出し、 connectコマンドを使ってサーバーに接続する方法しか紹介されていません。 しかし日本語キーボードにはチルダキーがありません。 それに近いのは、Debug:ExecuteStringノードでconnectコマンドを使う方法と思われます。 以下ではUI:Functions:MP:ConnectToServerノードを使っています。 これはは試行錯誤で見つけた方法なので間違っているかもしれません。
メインメニューからサーバーへ接続するには、 「UI Actions -> MM_PagesMain -> mm_main」でボタンを追加し、 「UI:Functions:MP:ConnectToServer」ノードを使って接続します。 以下はServerData.xmlというファイルからIPアドレスとポート番号を読み込み接続する例です。
ServerData.xmlにはサーバーのIPとポート番号を設定します。 同一PC上でテストする場合次のように設定します。
<ServerData> <IP>localhost</IP> <Port>64090</Port> </ServerData>
サーバーとの接続を切断するには、 「Debug:ExecuteString」ノードで、 String=disconnect、NextFrame=1でSetします。
通信するには、 Multiplayer:MsgSenderノードとMultiplayer:MsgListenerノードを使います。 FGをクライアントとサーバーに分けて、 MultiPlayerOptionsでそれぞれClientOnlyとServerOnlyを指定し、 クライアント→サーバー、 サーバー→クライアントで2組のノードを使うのがポイントです。
※Multiplayer:MsgListenerノードについてバグがあります。 具体的には複数のメッセージを同時に受信した際、 リンクした他のノードの入力ポートが2回までしかアクティベートされません。
プレイヤーが同じでもEntityIdが違う問題があります。 配置されたエンティティは同じEntityIdです。 プレイヤーは名前で区別する必要がありそうです。
最後の一人になると、サーバーがダウンしてしまう問題があります。 ゲームルールはデフォルトでInstantActionです。 ダミーのキャラクターをログインさせることで、この問題は一応解決しました。
ゲームルールをSinglePlayerに設定すると、 サーバーダウンの問題は解決しますが、 画面がセピアカラーになってしまいます。 フォーラム
※以下ではゲームルールにSinglePlayerを使っています。 TeamInstantActionでは誰かがログアウトするとサーバーが落ちてしまい、再びログインできなかったりする不具合があります。 SinglePlayerではそれらの不具合は発生しないようです。 ただし画面が暗転する不具合があります。 これはゲームが正常に開始されていないのかもしれません。 ゲームルールを修正することで解消するかもしれません。
スポーン、ダメージのなどを設定するものをゲームルールといいます。 ゲームルールはGameSDK\Scripts.pak\Scripts\GameRules\にあります。 ゲームルールにはSinglePlayer、InstantAction、TeamInstantActionなどがあります。 MMORPGではSinglePlayerに設定するのがよさそうです。 ゲームルールはサーバーのコマンドsv_gamerulesで設定できるように見えますが、それでは正常に適用されません。 レベルのフォルダにレベル名.xmlという以下の内容のファイルを作成すると適用できます。
<MetaData> <Gamerules value="SinglePlayer" /> </MetaData>またコンソール変数もいろいろ設定するのがよさそうです。 レベルのフォルダにlevel.cfgという以下の内容のファイルを作成すると設定できます。
g_minPlayersForRankedGame = 0 g_minplayerlimit = 0 g_roundlimit = 0 g_scoreLimit = 0 g_revivetime = 5 g_timelimit = 0 g_useNetSyncToSpeedUpRMIs = 1
ルーターの設定で、64090,64091のTCP,UDPのポートを解放する。 LAN上でテストする場合は必要ありません。 ポート解放の仕方については各ルーターのマニュアルを参照してください。
Windowsのファイアウォールの設定で、 GameSDK_Server.exeを許可されたアプリ(プライベート、パブリック両方)に指定する。 LAN上でテストする場合はプライベートのみ。
正確にはまだわかりませんが、このページにあるファイルは同じである必要があるかもしれません。
DedicatedServer.batを起動し、コマンドで「map ロードするレベル名」と入力する。これでサーバーの準備は完了です。
GameSDK.cryprojectを右クリックししLaunch Gameでクライアントを起動したら、 上で設定したボタンをクリックでサーバーに接続します。