陽だまりの中で

~香川フリーランスのぼやき~

UE4アセット MMOスターターキット解説書

f:id:hidamarinonakade:20160103220144p:plain

はじめに

お久しぶりです。
かなたです。

今回は私がMMOを作成するにあたって使用させていただいている「MMO Starter Kit」のオンラインドキュメントの翻訳を紹介したいと思います。
翻訳を掲載するにあたり、作者様からの承諾も得ました。
また、私の翻訳は完璧ではありません。
もし「ここの翻訳はこういう風に訳したほうが自然だよ。」などと言った助言等ありましたら、是非是非お願いいたします。
この翻訳を通じて、少しでもこのアセットの日本人の利用者が増え、開発者の同志が集い情報交換が活発になれば・・・と願います。
その時は是非私と一緒にMMOを作りましょう!←



「MMO Starter Kit ver.1.4」

MMOスターターキット1.4説明書 by CodeSpartan
原文はこちら
MMO Starter Kit Documentation 1.4

目次

MMOスターターキット1.4説明書
目次
謝辞
始めましょう
エディーター
プロジェクトを開く
データベースをセットアップする
初めての作業
エディターで2人のプレイヤーでテストする
全設定
UE4を初めて使いますか?
ブループリントの位置
自分のマップを使う
アセットを他のプロジェクトから移動する
プレイヤーキャラクターをカスタマイズする
メッシュとアニメーション
インベントーリードールをセットアップする
素材とハイライト
キャラクターの音
NPCをカスタマイズする
アイテム、クエスト、アビリティーを作成する
自分のアイテムタイプを作成する
アイテムクオリティーティアをカスタマイズする
複数のアセットを編集する
自分のpersitent statを追加する
自分のドラッグ出来るウィンドーを作成する
自分のローカルコンピューターでサーバーを走行する
専門サーバーとパッケージ
サーバーIPとクライアント
プレイヤーの人数制限を取り除く
VPS上で専門サーバーをセットアップする
クラッシュした場合にサーバーアプリケーションを自動的に再起動させる
ランチャーとパッチシステム
デモコンテントを削除する
トラブルシューティングとよくある質問
よくある質問(問題ではない)
PHPから欠陥を除く
クラッシュ、ゲームが起動しない
他の問題



謝辞

以下の人達にお礼を言います:
VaRest Plugin - Vladimir Alyamkin (Ufna)

デモで使われたグラフィックの作者:

Sword Girl model (used only on the demo server, not distributed) - Bunt Games
Inventory icons - Ravenmore, Flare icons
Icons for abilities and empty slots - game-icons.net
Inventory sounds - qubodup, Akeroyc
Healing spell sound - qubodup
Spell particles, fire spell sounds - official UE4 demos (ContentExamples and FeaturesTour2014)
Female voices - AderuMoro, MadamVicious
Male voices - Michel Baradari


始めましょう

エディター

MMOスターターキットをご使用になるには、VisualStudio2015(UE4はもうVisualStudio2013をサポートしません)とUE4ビルドバージョン(ソース版UE4)が必要です。まだお持ちでない場合はこちらの指示に従って下さい−https://www.unrealengine.com/ue4-on-github
www.unrealengine.com

重要—相互が一番良いのでリリースブランチをダウンロードして下さい。これはUE4バージョン4.10の為の説明書です。

プロジェクトを開く

エディターを制作したら、 MMOStarterKit-1.4/ folder のフォルダーにある青い.uprojectをクリックして自分のプロジェクトを開く事が出来ます。
uproject.pnghttps://lh6.googleusercontent.com/KOIF5yvELcpONhZl9gEokTG5ptvTjWHl6IXbhFThbxCAU6h9_TfX_enEwr7XqgIYYrQ9LlxlZVCZRmIdPpOWB_vnn4qzK3Bgfr_nTETe4EhgQwpm9c-LoDSZkDZFJsrByHwHT51e

エディターは、開いたプロジェクトが他のバージョンで組み立てられたと言ってきます。そうしたら“イエス”をクリックして下さい。
https://lh4.googleusercontent.com/dgqnwPDpKX37kuSYWtOnjI0eWawRrYSikymJYwPaVQph2Q8p3JRWPpJdFjWUCRCXBU59OodOa-JNbZiTXORSmOU-VVX0f6nbCCLP-Fep8KvqUePYCbCjKq5D1_t7Em2E4gDWEzdH

—変換に失敗したら、フォルダーの中の青い.uprojectのアイコンを右クリックし、自分のビルドエンジンを選んでから右クリックして"Generate Visual Studio project files"を選んで下さい。
switchversion.pnghttps://lh6.googleusercontent.com/U-iCInef47eVa9XYJKGj4yn0ySX0E5vJN4Jy1w88RZvLtQZPH5IXII8lB4Ba63qxJKmKHPk-3Y9_PxfMbm9xw3C_H1Ik2lppIJL98MVuDRWYxa8qsAxYMudtA6QvXAITC20ef6I8

データベースをセットアップ

PHP 5.5+ と mysqlが付いたウェブサーバーが必要です。そのウェブサーバーは、自分のウェブサイトを提供しているのと同じサーバーである事もあります。もう、ホスティングプロバイダーを所有していたら、 PHP 5.5+ と mysqlが付いているか説明書又は、コントロールパネルで確認して下さい。

以下のホスティングプロバイダーは、 PHP 5.5+を提供していると報告されています。しかし、このリストの正確さは保証出来ません。
one.com
godaddy.com (cPanelからPHPのバージョンを変更する必要有り)
binero.se (スエーデン語)
spaceweb.ru (ロシア語)

MMOキットで作業する為に有料のドメイン名は必要ありません。

—新しい暗号化方法の為に PHP 5.5+が必要です。もし、本当に古いバージョンのPHPを使いたい場合は、 mmoregistration.php と mmologin.phpでパスワードのハッシングを変更する事が出来ますが、この方法はお勧めしていません。

以下は、ユーザーがもう既にホスティングプロバイダーを持っていると仮定して解説されています。
1. mysqlを作成して、構造を作り出す為に dbstructure.sqlファイルを取り込む。

2. PHPフォルダーの中のmmoconnection.phpスクリプトで、mysql接続設定を行なう。
https://lh5.googleusercontent.com/p6hiIjkvfFz5d4QU8MXxGa_oPfkVNuNIqkho3h2EDH6CESk_30FthzwXqGwVvRZqCzV3z3rV-RiKOR5OPGYHMJQhXCL330pqNlZQ2em2Q9WdpCVwAz9lPbihIg58EyaCDGUBJQZE
—殆どのホスティングプロバイダーは、データベースとPHPに同じサーバーを使用している為、本当にサーバーが機能していないと確信する迄、ローカルホストを交換しないで下さい。

3. PHPフォルダーのコンテンツをご使用のウェブサーバーにアップロードする。

4. お使いのブラウザーで以下のアドレスに行って下さいーhttp://yoursite/somefolder/myphpversion.php
其処でバージョン5.5+が付いていると判明したら、次ぎのステップに行って下さい。

5. そうしたら、以下のアドレスに行ってPHPスクリプトをテストして下さいーhttp://yoursite/somefolder/mmologin.php
其処でテストをして、"status":"Login information is incorrect. Check your username and password."と出て来たら貴方のスクリプトは正常に機能しています。
Connection failedAccess deniedと出て来たらステップ2で記入したデータベース接続情報をもう一回確認して下さい。
こうしたメッセージの代わりに只のPHPコード(<?の様な記号)が現れたら、貴方のPHPスクリプトはお使いのウェブサーバーで正常に機能していません。

6. MMOInstanceのブループリント
(Content/MMO/Blueprints/GameModes/の中に配置されています)のDefaultValueのHostnameにスクリプトの置かれているURLのパスを記入してください。 例-http://mysite.com/mmo/
https://lh5.googleusercontent.com/N54Gtv5RCc6cLOm6YsGw5ndWCYsc7u8PpLMm3vKdv6C3uHzKdYzamt0K7ziTyFXiRRu6GNJURMQoSag66QdlEX4gc9W4XurD_1HrW4kldwMUYOK2MRWloqis2Xs1HXS_ed_NzYTR

初めての作業

1.(任意)チャットサーバー( Chat\Server.exe)を起動しましょう。ゲームをテストしている時にだけ、これが必要です。ゲームサーバーの前に起動しなければいけません。

2.ゲーム/マップに配置されているスタートマップを開いて下さい。

3.プレイをクリックしてキャラクターの登録と作製を行なって下さい。エディター上ではスタートマップからゲームマップに移行する事が出来ませんので、ワールドを入力しようとしないで下さい。

4.ストップをクリックして自分の mysqlデータベースに行って下さい。‘characters’ の目録に新しいキャラクターがあるのを確認して、そのIDが0でなかった場合は0に変更して下さい。
—上のステップは一回だけ行なって下さい。この作業が必要である理由は、エディター上でゲームをプレイしている際に、ゲームは貴方がID0でログインしたと仮定して位置とステータスのsaving/loading状況やインヴェントリー項目等、全てをテストさせてくれるからです。
https://lh4.googleusercontent.com/PyDXn_aCsTzVBI2owWfTo_5d8LOmw1DOVDS3dO4tZ6ZZHVOTrrxnySVPQA5teJc_1Uj2wp6bRIB9mKnYvEgOxhzQIY5QeoLk6kGEfOkJz_MAByYPCPhD9KRV2GMbgTdztgKlv41w

5.DesertRallyRaceマップを開きます。サーバーを背景で起動させる為にプレイの選択肢から Dedicated server を選択します。それからプレイをクリックして下さい。

エディター上で二人のプレーヤーでテストする

エディター上で二人のプレーヤーとしてゲームプレイする事が出来ます。 MySQLデータベースにIDが0と1のキャラクターがある事を確認して、プレーヤーの数を2に設定して下さい。
https://lh4.googleusercontent.com/OyvWz2R0U9I00XbZC1HpMYcLf1I7tqUsU_tUHg-Vj73qEtSI-prQPBpuQanKCMQJscQ4C-ESpWNo0SN5r8nedUdwltAFRPAfThZJu5h7CF_DmEhcpdJ2hS9VJkZylRtwGTg80PAN

全設定

初めにカスタマイズとゲームプレイに専念したい場合は、今だけこのステップを飛ばす事が出来ます。

MMO Starter Kitのデモ環境を全部(ランチャー/パッチャー、 Softlayer 上の dedicated server 又は、他のVPS)を設定する場合は以下のステップに従って下さいー

1.dedicated server を組み立ててローカルにテストする。

2.バーチャルサーバーを注文して、設定する。

3.patch system を設定してランチャーを自分のユーザー達に配布する。


UE4を初めて使いますか?

UE4を初めて使用する場合は、公式ウェブサイトに沢山のチュートリアルが用意してありますので、それに従って下さい。
https://docs.unrealengine.com/latest/INT/docs.unrealengine.com

以下のチュートリアルは、ネットワーキングやUMGを扱ったMMOキットの中でもとても頻繁に使われているUE4のパーツの解説ビデオです。
ブループリントネットワーキング: https://www.unrealengine.com/blog/blueprint-networking-tutorials
www.unrealengine.com
UMG (ユーザーインターフェースの制作): https://docs.unrealengine.com/latest/INT/Engine/UMG/QuickStart/index.html
docs.unrealengine.com


ブループリントの位置

これは、もっと重要なブループリントの早見表です。夫々の色は、ノードブロックの色と合致しています。
https://lh3.googleusercontent.com/wRGJq_Mp3EhPqjvxbAGvs6lG0L96hb8wSCS8FQyQtQymEF5fO-CULKJCgvLH-N_KvsvshJZSY6O6j3RptHz8hKmg8sbV8r5z9TWDHzRfVto9ALpQrmF5gzJrXoIhuzPJ1dtqnOge

自分のマップを使う

1. A. 他のプロジェクトのマップを使いたい場合は− the project with the mapで、使いたいマップを右クリックし、Migrateを選択します。そして、MMOプロジェクトの Contentフォルダーを選択すると、従属関係にある物のリストが出て来ますのでOKをクリックして下さい。
  B. 最初からマップを作りたい場合は、普段何時もやっている様にマップを作製して下さい。

2. Settings > Project Settings > Maps & Modesの順に行って Editor Startup Map と Server Default Mapを自分の新しいマップに変更して下さい。ゲームデフォルトマップは変更しないで下さい。ゲームは此所では未だメインメニューから始める必要があります。

3.プレイヤーが死んだ後、再生する所で使う為にマップの何処かにPlayer Startアクタがある事を確認して下さい。

4. Window - Levels に行って Levels - Add Existing をクリックし、“DollMap”を選択して下さい。これは、キャラクタードールを設備ウィンドウの中で正しく動かす為に必要です。
https://lh5.googleusercontent.com/2X9Q9posv6926N6_aZwycikiyZL8zIu1ZOnJVhjXmi4sWDAq-nZu62-Tnz8gh-21I5SqIfBMbNXteylAAcdjBqr9sripjWU93KR57DBFYONl4FEdYg7Ls6xsuuqD-BaqBXfNnsBy

5.もしこれが新しいキャラクターが mmocreatecharacter.phpで動き出すマップであるなら、開始時のコーディネートとローテーションを正しく調整して下さい(ヨー)。

6.もしこのマップに経路探索が付いたNPCがあれば、Nav Mesh Bounds Volumeを必ず入れましょう。
−もしエディター上でプレイしている時に自分のキャラクターが、地面を突き抜けて落ちてしまったら、/unstuckのチャットコマンドを使いましょう。


アセットを他のプロジェクトから移動する

1.移動させたいアセットの上で右クリックして、Asset   Actions > Migrateを選択して下さい。
https://lh3.googleusercontent.com/0q2fJvsPzETSQhE6hui1t73L8EB6rnxrKBuV4TJy4sQuQXJtqzPwfOw1IAifVeV4uPGvWGV6Gp5zoE478vE9q6ZMQAPF0M6JPARBPKqhr26ubPasx_Fq7I-dgNiKNuoaWTtLi4Rz

2.従属関係リストが現れるのでOKをクリックし、MMOプロジェクトの Contentフォルダーを選択して下さい。

プレイヤーキャラクターをカスタマイズする

メッシュとアニメーション

此所の解説は貴方がもう既に自分のモデル用に以下のアニメーション機能を持っている事を仮定して書かれています−
アイドルウォーク、ウォーク、ジャンプスタート、ジャンプエンド、ジャンプループ、コンバットアイドル、アタック、デス。この全ての機能を持っていなくても全部上手く行きますが、特定しないクリップの位置にtポーズが表示されます。
−アニメーションは、ルートモーション無しでなくてはいけません。

1.骨格メッシュと希望するアニメーションを取り込む若しくは、アセットを他のUnrealプロジェクトから移動する。

2. MMOブループリントに配置されている ModularPlayerCharacter の上を右クリックし、 Create a blueprint based on this を選択して新しいブループリントに正しい名前を付けて下さい。この後の全てのステップに於いてこの新しいブループリントで作業をする事になります。

3. GuyAnimアニメーションを見付けて下さい(MMO/NewCharacter/)。その上で右クリックをし、Retarget Anim Blueprints > Duplicate Anim Blueprints and retargetの順で選択してから、自分のキャラクターの骨格を選んで下さい。恐らくShow only compatible skeletonsからXマークを外さなくてはならないでしょう。

4.新しく作成したアニメーションのブループリントを見付けて下さい。新しいブループリントは、新しいキャラクターの骨格と同じフォルダーにある筈で、そのアイコンの底辺に濃いオレンジ色の線が入っています。それの Anim Graph を開いて最初のノード(State Machine)をクリックして下さい。ステートマシーンで Idle/Runステートを開き、中央にあるBlendspaceノード(それには「IdleRun_TPP_Copy」の様な名前が付きます )を選択してから、その上をダブルクリックして Blendspaceを開きます。
https://lh4.googleusercontent.com/aYJrKEf8t6R-7UTZAT2cfnQmrumaSuOQcEeQZlZnIsV4qIQwF0QW78l8e6YwJEXXlebIbYYnzE4nURtq3H-g2KW4DWeZhOSkqjT9XEEsQygoIUMtKWbw2-QlEtxuJguVwR9QSgpt

5.自分のラン、ウォーク、アイドルのアニメーションを丸で囲まれた3カ所に上から下へとドラッグアンドドロップします。
https://lh4.googleusercontent.com/KshpKl7261gpOpTq7h5CDD8B-YOnX-7N3G-kb1jQ2MvY70A_dvNrG2wEFjwDmNLI-X7yrWThBC2QeJN52bCWfyhqEA-jif_q0NyOjlwBf3DofvbVVjV_qvutbG-5pjdKzEMCPFsN

6. CombatIdleRunノードの為にステップ4と5を繰り返して下さい。

7.ステートマシーンに帰り、 JumpStartノードをダブルクリックし、其処の Playノードをクリック。そして自分のモデルのジャンプスタートアニメーションのシーケンスを変更して下さい。

8.ジャンプエンド、ジャンプループ、デッドノードにも前出のステップを繰り返して下さい。

9.新しいアニメーションブループリントを作製し終わった時、「_Copy 」で終わる名前と黒に近い色をしたサムネイルが付き、且つ再修正された幾つかのアニメーションが自分のキャラクターの骨格と一緒にフォルダーに残ります。この段階でそのアニメーションを削除出来ますが、リファレンスが残った物を消去しない様に気をつけましょう。

10.自分が作成したキャラクターブループリントを開きましょう。そしてデフォルトの骨格メッシュとアニメーションブループリントを新しく作成したメッシュとアニメーションブループリントに設定します。キャラクターがモジューラ方式である場合は、それぞれの身体の部位の骨格メッシュを操作しなければいけないところですが、胸部メッシュのアニメーションブループリントの操作だけで良く、他の部位は自動的に胸部の設定に従います。

11.自分のアタックアニメーションの上で右クリックし、Create > Create AnimMontageの順に行って、作成したモンタージュを保存します。
https://lh5.googleusercontent.com/JVNmHT7GAGnUsVhhH4fwvsAvE6VrB1jwTf61O3t5nY4CBoCyQ7sCYWvW8CcKshZpwBWiLNKvjN-8cDRSdP66w4ujS4wxh5XGwCg_5d5ahnspWIpHE79uEWMCxN3buooOskXv1nQq

12.自分の新しいキャラクターブループリントの中に図にある様な Play Anim Montageノードを見付けてから、AnimMontageを自分の新しいモンタージュに変更します。

13.MMO\Blueprints\GameModes に配置してあるゲームモード「MMOGame 」を開き、デフォルトに行ってから Default Pawn Class を自分の新しいキャラクターに設定して下さい。
−骨格メッシュの Physics Asset を必ず特定して下さい。死んだキャラクター上でクリックが出来なければいけません。Skeletal Mesh 上でダブルクリックをし、Create > Physics Assetの順で選択する事で Physics Assetを作製出来ます。

インベントーリードールを設定する

此所では、貴方がもうプレイヤーキャラクターを上手く変更していて、それに応じてインベントーリードールの変更を望んでいると仮定して解説していきます。

1. ModularDoll ブループリント (MMO/Blueprints) を開いて Body (足、頭、手…)に付いているコンポーネントの骨格メッシュを変更します。

2.同じブループリントの Event グラフで Set Skeletal Meshのノードを見付け、そこで胸部メッシュの設定をして下さい。

3.身体の部位をModularPlayerCharacterに追加した場合は、Eventグラフで新しい部位をSet Master Pose Componentにプラグインして下さい。

素材とハイライト

マウスポインターでキャラクターにハイライトを付けたい場合は、自分のキャラクターのメッシュの素材にスカラパラメーター、「 Highlight Amount」を付ける必要があります。ハイライト効果は、(例えば発色を加えると云った)自分の好みに合った変更が出来ます。この事についての詳細は、MMO\NewCharacter に配置されているGuyMaterialで閲覧する事が出来ます。プレイヤー自身のキャラクターはマウスポインターでハイライトされず、他のプレイヤーと NPC だけハイライトされる事に留意して下さい。

キャラクターの音

1.キャラクターの音は、 Mesh and animationのチュートリアルで制作した キャラクターブループリントへナビゲートして下さい。

2.「Sounds」カテゴリー下のデフォルトタブで、ペイン、アタック、デス、三つの項目が見付かります。夫々の項目に自分が好きなだけ音を加える事が出来、その音は任意で選択されます。

音の確率 ペインとアタックの音がどの程度の頻度で鳴るかは、可変式に決められます(デスの音は常に鳴ります)。
https://lh3.googleusercontent.com/9gZjLCkCOSgbLzsIMFkFHU23YAD5G-OhlgI3P8JA2CqaFXVzfTmBJVDQA0miEnLY-YGddhffDPepGcDO8grLvYT4Ui9eMkPNQiftDoCf9Ev6PMx5PXdjihTjte3u2cTPkmZCwgBD


NPCをカスタマイズする

NPCをカスタマイズするには、前の方でプレイヤーキャラクターのカスタマイズを学習した時と同じやり方に従います。只、その時の方法と違うのは、 ModularPlayerCharacterブループリントから引き継ぐ代わりに MMO/AI/Roamingに配置された RoamingCharacterブループリントから引き継ぐ所だけでしょう。

新しいNCPを作製した後、マップにそれを配置すれば、ゲームにそれが現れます。


アイテム、クエスト、アビリティーを作成する

1. MMO/Blueprints/Inventoryと MMO/Quests and MMO/Abilitiesのフォルダーで、アイテム、クエスト、アビリティー(マゼンタアセット)のデモを見付けられます。それを複写する事もできますが、 right-click > Miscellaneous > Data Asset > ItemData / Quest / Abilityの順に従って行ってアセットを初めから創作する事も出来ます。
https://lh5.googleusercontent.com/c3BkNfJs9Ei_9AEH_dCkE_8JSL5Y5vRFU8E_K2bYZug2tJ75Bx49rXvimMKiAUqfWQ2GElhnMJKeOv0UnGJGrbSBIPhNkIIBu4a-vy5WplVvnkqrhoGXjEjHvg201WUvNxXNRvI0

2.新しいアセットを開いて詳細をカスタマイズして下さい。アセットを開いてその詳細が出て来なければ、Windowメニュー上をクリックしてDetailsの横にXマークを入れて下さい。
https://lh4.googleusercontent.com/pnIfA4iPK2i7CJAiEGdOeQ8yJlZTuQDJwuNALOJtnsrrdHucdVP0rJg21_9pStoUmRlk4sSB-GzWZwXVBvFeaQlZ_Zh_CSkI2RoynU4R-lFHWO8QzKwFfWnHSx3J_6UpQdGpwY8k

自分のアイテムタイプを作成する

この例では、通常アイテム(ItemData)クラスから引き出された Bookと呼ばれるアイテムタイプを作成します。ブックのテキストを保存するのに別枠のフィールドが1つ使われます。

1.自分のプロジェクトを保存する。

2.エディターで、 File - Add Code to Projectをクリックする。

3. Show all classesにXマークを付ける。

4. ItemDataを選択し、Nextをクリックする。

5.新しいクラスの名前(例えば、Book)を入力して Create Class をクリック。

6.ビジュアルスタジオが読み込むのを待って、自分の新しい Book.hファイルと ItemData.hファイルを開く。

7. ItemData.hからフィールドをコピーする。例えば私は、この FTextのフィールドをコピーします−
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Item)FText Description;

8.それをGENERATED_BODY()の後のBook.hにペースト。

9. GENERATED_BODY()の直ぐ後に、「public:」と云う言葉を入れます。

10.そうしたら後は、新しいフィールドに名前をつけて、(もし必要であれば)そのタイプとカテゴリーを変更します。
私は、この様に名前を変更します−
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Book)FText BookText;

11. UE4で Compileをクリックして、「コンパイルサクセス」と言ってくる迄待ち、直ぐにUE4を閉めてから(そうしろと催促されない限り何も保存しないで下さい)又、開きます。これで出来上がり!
https://lh5.googleusercontent.com/ze7zGllaEHwbiy6fPVbGJyNOy3luoYM3DWFb-3x2OGxbY4uGyotbWOfgHl6EAfdtWRqFaa7DER7Xq2uC1TFt00TFzINFyiS9R29oOR1llITdgLw5SZpF2XGv_x05TLIX8q5SGCHU
その後は、別枠のフィールド1つで Bookアセットが作製出来る様になるでしょう。

アイテムクオリティーティアをカスタマイズする

1. Content Browserで、 C++ Classes/CleanThirdPerson/ItemData
 へナビゲートし、その上でダブルクリックをしてビジュアルスタジオを開きます。
https://lh4.googleusercontent.com/ouPzco5q3ggL3HS5ldDWCB5zjixkRip2iMsda1KDigwRqv79CUN3Hdk5tVEHT8Eb9h0pT1eLB-5kIGI6LVfQqJvFjflI20n9Yenqv9PKtCA_9RXxS713GRXQByIRbQTTMY-en-ge
https://lh4.googleusercontent.com/kVGPoosQmW982Pvnq9bATSktn62_sC7IGPZ82-01BZ5WY_SLl4wJA8c8Hvpi8VOmeoJbd2HEyeeDdwhttDh07P89hz9xOvsL0iX_blV7lsc8BcTV_jhpqTRfHJ9ZsSjvcy-W37Ra

2.アイテムクオリティーティアを追加又は、削除します。


複数のアセットを編集する

一度に複数のNPCやアイテム若しくは、それらを単独で編集したいけれども沢山ある場合は、プロパティーマトリックスを使いましょう−

1.自分が編集したいアセットを選び、right-click > Asset Actions > Property Matrixの順で行って下さい。
https://lh5.googleusercontent.com/YWArdcnYNMVnbwt1WHtoENPUu36DqLDFEpGqTAukgiTmU7Nux3fbMtn37qAgr9-yP2jycFHQvLG7WKUNtPGFmDAxrK58LkM8BwBoYAtjrInsvvXg1ASijFhgl7Eh9giQC4Pwtz-j

2.其処で現れたウィンドーで、1つだけアセットを選択して、そのプロパティーを編集出来ます(右手)。

3.複数のアセットを一度に編集するには、シフトキーで自分が変更したいアセットを選択し、1つだけ編集する時と同じ様にプロパティーに変更を加えて下さい。
−プロパティーマトリックスでは、どんなプロパティーマウスポインターを固定する事で選択出来ます。固定すると目録が出て来るので、プロパティーの名前をクリックします。

自分のpersistent statを追加する

persistent statsは、キャラクターがログアウトする毎にMySQLデータベースに保存され、ログインするとサーバーによって引き出されます。デモの中にもう既に含まれているPersistent statsの例は、キャラクターの名前、健康状態、地位、装備されたヘルメットです。キャラクターのヘアースタイル、肌の色、所持金等のstatを加える事も出来ます。そして、こちらがその方法です−

1.出来れば、データベースのキャラクター目録の列の一番最後に新しいフィールドを追加して下さい。もし中段に追加するならステップ4の全てのフィールドの順番が正しい事を必ず確認して下さい。
https://lh3.googleusercontent.com/_bEG5wmaAVwUG-bN6_f3abfTX5w0KYXOnZ1MCllp0EE-85G2Bt8eF7GT7dHQ8NAfPbTllj8Kvtme0VejloYJldUuxmd1ZILPMm_eu9UWDMd5g3GGDXZGAxIwdFS6qq6-O_nQZFiN

2.自分のキャラクターブループリントに新しいフィールドを追加して下さい(それか、もし敵/NPCにも必要であれば、 MMOキャラクターにも)。

3. MMOPlayerStateで、CreateSaveCharacterRequest と OnResponseGetCharacterに新しいフィールドを追加して下さい(後者を OnResponseGetCharacterS と混同しないで!)。其処で他のフィールドがどの様に扱われているか見て同じ事をして下さい。
https://lh5.googleusercontent.com/MjlDybzdh60X2gk-pd_9slrCempEIonhLPN0w8v841em3lfYUBmPLnelqhJoycQ9lGECgk_b-Q1DTEV-3XoS2Z8cHP_Ze93taLCxgtNSkZ2Nk_bq1v3J7k8VT-MTRxLSyyGRuXd1

4. mmosavecharacter.php、 mmogetcharacter.php、 mmocreatecharacter.phpスクリプトに新しいフィールドを追加して下さい。其処で他のフィールドがどの様に扱われているかを見て、同じ事をして下さい。例えば、「health」の検索をし、そのstatがどの様に扱われているかを見て、自分のstatにも同じ事をして下さい。
−サーバーがstatをデータベースに送るので、statを変更する際は必ずサーバー上で行なって下さい。


ドラッグ出来る自分のウィンドーを作製する

此所ではデモの中の Inventory/Equipmentウィンドーの様に他の物の上に現れて集中し易くしてくれる 自分専用のドラッグ可能なウィンドーの作製方法を解説していきます。
−私は、これを将来もっと簡素化しますが、現在のバージョンの解説をする事に決めました。

1.新しいUMGウィジェット(何かのフォルダーの中で右クリック - User Interface - Widget Blueprint) を作成してそれを開いて下さい。

2. User Createdカテゴリーで Draggable Window を見付けて、それをHierarchyにあるCanvasPanelに引っ張って来ます。C_1テキストを削除する為にそれの名前を付け直して下さい(“DraggableWindow”とだけ)。

3. Designer ヴューで新しいウィンドーを選択し、大きさをお好みのサイズに調節して下さい。

4. DetailのタブでDefault - Window Titleの所に好きな名前を入力して下さい。(この変更はDesignerに現れませんが、それでも“Window Title”と呼ばれます。これは正常な事です)。
https://lh3.googleusercontent.com/GNybgDxIHQLSyGTf0-5B8PMT5bMzhvDc68zvLdMKkfB8HNHIMdfscgDLG-jh3d4TrP8amK6H-nqZEBMjB0vgHNX5r9bgkWcu-0F9VUf_VixiwMoY1ZoNDAtsuathu3u-SKovdLwj

5.何のコンテントでも良いので自分の好きな物をHierarchyのウィンドーにあるContentSlotに引っ張って来て下さい。此所で私は、Horizontal Boxを引っ張って来てから二つのボタンを持って来ています。

6. Graphヴューに行って、Ownerと云う名のタイプ UserWidgetの新しいVariableを作成して下さい。そして、それのEditableの所にXマークを入れて下さい。

7. Class Settingsに行って Interfacesの下にDraggable Window Interfaceを追加して下さい。そして、Compile。

8.この様に新しいEvent Focus イベントを追加して下さい。
https://lh3.googleusercontent.com/x1Kb-PEPCcuXiqoSt9Dqo9viOtmGq3j9z5ykHBhWsBNp9om7tgQ-YVjuoZNbeG_PkbHjSZjkoddHj4F16W2lJGGU3deuAuLbg7oHyRZqVaEW737qFEXbxIb0vtw43Qi5BECZY7pe

9.それから、この様にEvent Constructを加えて下さい。
https://lh5.googleusercontent.com/fPoRVOWu0E29uKhYT7exs7AlzBVF1SXuDyDII-ZSotYOWbDg7fAMCtP6_5qcpiuEh-PPMjydXVziZQTtaG_5fh3xLFayCak11_3juJNYGVBwUAL2z6l3UF3ePxTkirMMq1VdJAqo

10.ウィジェットを保存して、それを閉めます。

11.そうしたらMMO/Blueprints/UserInterfaceに配置されているFullUIウィジェットを開きます。

12. User Created カテゴリーで新しく作成されたウィジェットを見付け、それをHierarchyにあるCanvasパネルまで引っ張って来ます。そして、C_1テキストを削除する為に、その名前を付け直します。

13. Detailsで、右手下にあるアンカーを選択します。
https://lh5.googleusercontent.com/bfeH4Oh7N83uoqFruMF54sAAyHPglUlSanpOxZDuIODxjD3XCYmRLGSLFDvk3U0ij-0CYQ9hfPfmRefoGQ3deOhQgLGN5rLy3yH0l5q714y2BU1sR4xZsFPWD3h-vsUcWDVy7IRG

14.全てのOffsetsを0に設定します。これでウィジェットは、使えるスペース全部を利用する筈です。

15. Graphヴューに行きます。丁度Inventory/Equipmentウィンドーでした様にEvent Constructの最初で自分の新しいウィンドーのOwner variableをSelfに設定します。
https://lh5.googleusercontent.com/lvJtRvEwezaV1bSaoyxVhAZ1hzdgVivrmenFfw1Kn-GVwRflgsu0jpzxTRzDQCTV3O4icyX49mqS7nnfrG_x7a6o8Aq8oQxPfph4cJxeHAiY91Y4ztQ8U3LRfChx0GHbdNgnFVbK

16. Event Constructの最後でMake Arrayノードに暗証番号を入れ、其処で自分の新しいウィンドーに接続を追加して下さい。

17. (自分のウィンドーがホットキーを使って開ける必要がなかったらこのステップは飛ばして下さい) そうしたら自分の新しいウィンドーをオンとオフに切り替える為、幾つかのキーを割当てます。MMO/BlueprintsにあるMMOPlayerControllerを開いて、"C key: toggle equipment"と云う黄色のコメント欄を見付けて下さい。自分が選んだキーを使って似た様な物を作って下さい。                   

18.(任意)ゲームが始まった時にウィンドーを開く必要が無い場合、自分の新しいウィンドーのDesignerタブで DraggableWindowウィジェットの可視性をHiddenに設定して下さい。

Q:ドラッグ出来るウィンドーの基礎にウィンドー自体の代わりに Canvasパネルを使用するのは何故ですか?
A:−そうする事に依りウィンドー自体の縁を越えたポップアップが使えるからです。



自分のローカルコンピューターでサーバーを走行する

−年中無休のサーバーをセットアップしたい場合は、 ordering a virtual server を閲覧して下さい。

専用サーバーとパッケージ

ヴァーチャル/ bare metalサーバーで自分のゲームを放映する為にコンソール専門サーバー(例えば、Softlayer とかAmazon)が必要です。こう云ったサーバーは通常ビデオカードを持たず、ゲームの 性能を最大限に引き出せます。

1.ビジュアルスタジオを開き(File > Open Visual Studio)、 Development Server 設定を選択します。
https://lh3.googleusercontent.com/IZ2RlUw3POpO9mmx2ggN0z_9Vl-u2TvjAP-Il7l6WzTDRLbsPXcz8EihwybfMmAQ-z32BDu9I_UYexOUA5G9JbRovxwsTQf1LpzAC6q0FESPT6L1RPKb98NeS3muAD7I8mzgxYgG
-この選択肢が無い場合は、必ずアンリアルのビルドバージョンを使用している事を確認して下さい。

2. Solution Explorerで、自分のプロジェクト(Games/CleanThirdPerson) の上でクリックし、Buildを選択して下さい。
https://lh5.googleusercontent.com/uBsJK1QP-4O7EmGtpS0WnD_k8rSAb6m4DVbcjdX-QkGjOXADakkl1WZ6z2eZLStfMIolIXbMtDS99AaEbOs0z-VqscPn5GM3ehYwuZ6KeWtXeKkqN3g85gkGYRbN1RfXRgLNf7lU

3.持っている機械にも依りますが、これに30分から2時間かかります。アンリアル1バージョンにつき一回それをするか、エンジンかゲームコードの何かを変更する迄それをし続ける必要があります。

4.それが終わったら、設定をDevelopment Serverから Developmentに戻して、ビジュアルスタジオを閉めて下さい。

5.さあ、ここで自分のゲームをパッケージしましょう。専門サーバーは、パッケージゲームしか取り扱いません。最初に File > Package Project > Packaging settings の順に行って、 Full RebuildにXマークを付けましょう。次のゲームをパッケージする時にこの設定からXマークを外せば、パッケージする時間が約2分と大変短くなります。

6. Use Pak fileからXマークが外されている事を確認しましょう。
https://lh5.googleusercontent.com/u-WIxcmXepaGN0TBedhZReJ0cCELmx5yyiWpg452vEYlUH2a1DCg8TrBjdYgoEHDP6rwVFPqktEJU4d0FgG-YP0jKffOF6QYjlZAzeDFi8I7a5BoVPGYMq9rC22Bh5uF0vhEAgSi

7. File > Package Projectの順に行って、対象となるハードウェアとパッケージしたゲームの為の空のフォルダーを選択します。例− C:\MmoPackaged\ この為にエンジンフォルダーは使わないで下さい!使うとパッケージの工程に一時間近くかかります。
https://lh3.googleusercontent.com/N-OKnBnTed8RJI6GTKbVwUP1xp8tiLXGNfWDyYgjoRHLWEINPxYrSQUmMUNha_qKeXSpyRa1sSkDeXwqckc38AZ51LIr20wKtGSzHAcXQR2M5fOarObceKrV4mWRcdfQFHbxjNLd

8.パッケージが終わったら、選択したフォルダーに行って何かが入っているか調べて下さい。もし空だったら、パッケージの工程でエラーが発生したと云う事です。 Window > Developer Tools > Output Log の順に行ってエラーの原因を調査出来ます。

9.パッケージングが成功した場合、自分のプロジェクトフォルダーに行って、パッケージしたゲームの \Binaries\Win64 フォルダーに Binaries\Win64\Server.exe をコピーして下さい

10.(任意)チャットサーバーを起動。

11.前のステップでコピーしたファイルにショートカットを作り、パラメーター“-log -local”を加えます。そのショートカットを走行します。コンソールウィンドーが現れますが、それが専門のサーバーです。

12.同じフォルダーに配置されているclient .exe にショートカットを作り、“-local” パラメーターを加えます。ショートカットを走行してから専門サーバーに接続して、プレイ出来るか試して見ましょう。

13.他の人達にこのサーバーに接続して欲しければ、この指示に従って下さい。

サーバーIPとクライアント

クライアントに自分の専門サーバーに接続してもらうには、 mmogetserver.php でサーバーIPアドレスを明確にする必要があります。このテキスト“'address'=>”を見付け、其処で自分のIPアドレスを明確にしましょう。
−遠隔地から接続する場合には、クライアントかサーバーショートカットに local パラメーターがあってはいけません(と云う訳でmmogetserver.php からのアドレスが使われます)。

プレイヤーの人数制限を取り除く

デフォルトのプレイヤーの人数の制限を取り除くには、自分のゲームのフォルダーで Engine\Config\BaseGame.iniファイルを開け、“MaxPlayers=”を見付けて下さい。そしてそれをお好みの数字に設定して下さい。


VPS上に専門サーバーをセットアップする

或る時点で、自分のコンピューター上の他の活動に支障を来さない様に、年中無休のサーバーが必要になってきます。ゲーム専用の機械を自分で買って専門サーバーを其処にキープする事も出来ますが、自分が選んだホストプロバイダーからも購入出来ます。此所では、 MMO Starter Kit デモサーバーがホストされているSoftlayerでバーチャルサーバーを発注してセットアップする方法を解説します。
− MMO Starter Kitは、Softlayerにホストされてはいますが、それは一番安いホストプロバイダーではありません。新しいユーザーにそれを勧めたのは、年中無休のチャットヘルプと非常に速いディプロイ時間の為です。私個人は、違うプロバイダーを使っており、それは ipserverで、i7 4790kの容量で一ヶ月79米ドルです。

パッケージされたゲームも無く、実行可能なサーバーの用意も出来ていない場合は、初めにこの指示に従って下さい。
1. 全てが正常に機能している事を確認し、アーカイブにして以下の自分が好きなクラウドにアップロードします−
​パッケージゲーム(.zipで)
​チャットサーバー (.zipで)
もし自分の機械のアップロードのスピードが余り良くなかったら、ステップ2に進む前にファイルがきちんとアップロードされる迄待ちましょう。

2. (Softlayer使っていなかったらステップ2−4は飛ばして下さい)www.softlayer.comでWindowsサーバーOSを注文して下さい。初めは一時間毎の購入にして、もし全部上手く行ったら月極で購入のオーダーが入れられます。
−UE4専門サーバーは Linuxで機能しますが、現在私は Linuxへのサポートを提供していません。 Linuxを専門サーバーに選んだ場合は、ゲームをパッケージする度に2回パッケージングをしないといけない事を心に留めておいて下さい。

小規模のテストなら一番低いバーチャルサーバー設定で十分ですが、ディスクスペースを広げた方が良いかも知れません。新しいWindowsのインストールなら25GBのハードドライブで約2•5gbしか空きスペースがありません。

どのデータセンターを使うか決める時、ユーザーがヨーロッパの人ならAmsterdamが、アメリカの人であれば Dallasが使えるでしょう。 MMO Starter Kitデモサーバーは、ヨーロッパと合衆国で適切なPingを提供する為にワシントンのデータセンターにホストされています。

もしクレジットカードの代わりにペイパルのアカウントがあれば、発注が即座に処理されます。クレジットカードだと長い時間が掛り、ヨーロッパに住んでいる人だと取引に失敗する事もあったり、銀行が特別な照合を要求してきたりします。ウェブサイトは、オーダーは15分以内に処理されると言ってきます。 Softlayerから15−30分以内にEメールを受け取らなかったら、ライブチャットと直接連絡を取れます。通常、彼所のウェブサイトは、年中無休で直ぐに応答してくれます。

3. オーダーが処理されると貴方の所にログインの情報と臨時パスワードが送られて来ます。そうしたら、ログインをしてパスワードを常時使うものに変更して下さい。

4. サーバーが提供され、使用する用意が出来たと知らせるEメールが来るまで待ちましょう。

5. Windowsでは、Run > Remote Desktop Connectionの順で行って下さい。 Softlayerのコントロールパネルでは Devicesに行き、自分のサーバーをダブルクリックして、 其処からiPアドレス、ユーザーネーム、パスワードを使って遠隔接続に入って下さい。
VPSサーバーをオーダーした後、Control Panel - System and Security - Power Optionsにある計画を何時も High Performanceに設定しておく事をお勧めします。さもなければ、プロセッサー(例えば、i74790k)に依っては、アンダークロックされたCPUに陥りかねません。

6. 自分のサーバーでインターネットエクスプローラーを開き、ステップ1でファイルをアップロードしたクラウドに行きます。其処からファイルを全部ダウンロードして下さい。

7. 自分の新しいサーバーで、自分のゲームフォルダー Engine\Extras\Redist\en-usに配置された必須なものをインストールします。チャットと専門サーバーを始動させます。 Devicesのページからmmogetserver.php スクリプトに自分のサーバーのiPをコピーします。クライアントとしてゲームをしてみて(パッケージゲームフォルダーからの.exeを使って) 、新しいサーバーに接続するか試してみましょう。

クラッシュした場合にサーバーアプリケーションを自動的に再起動させる

年中無休の自分のサーバーを取得した後、サーバーがクラッシュした場合に自動的に再起動する様にしておいた方が良いかも知れません−AAAゲームサーバーでさえ時々クラッシュするんですよ!この問題にはRestartOnCrashと言う無料のアプリケションが非常に便利で、インストールの必要無し。その上、2.5MBしか場所を取らずログファイルを含めた私が必要とする物が全部揃っているんです。


ランチャーとパッチシステム

Launcher/Patcherniに関する別個の説明書は此所にあります。

デモコンテントを削除する

重要!自分の作業がちゃんとバックアップされているか又は、バージョンコントロールを使っているか必ず此所から先に行く前に確認して下さい。

自分のプロジェクト中の“desert map”のデモがもう要らないと思ったら、それを削除してプロジェクトのサイズを縮める事が出来ます。
1) マップその物を消去してしまう、 Maps/DesertRallyRace
2) Start Mapからメッシュとエフェクトを皆消去してしまう。
3) DesertRallyAssets/ と StarterContent/ファイルを消去してしまう。


トラブルシューティングとよくある質問

よくある質問(問題ではない)

Q: どうしてエンジンはソースから組み立てられなければならないのですか?
A: UE4のビルドバージョンを使うときだけ専門サーバーを組み立てられます。それは MMO Starter Kitに限った事ではなくて、UE4のプロジェクト全部でそうなっています。

Q: サーバーは、どのポートを使用しているのですか?
A: ゲームサーバーは、デフォルトアンリアル7777ポート(UDP)で、チャットサーバーはポート3457(TCP)を使用しています。

Q: デモで使っている女の子のモデルをリリースする予定は?
A: 少女剣士のモデルは私の作ではなくて、 Bunt Gamesの物です。Unity Asset Storeで見付かります。

Q: 将来出るアップデートは無料になりますか?どうやって手に入れるのですか?
A:はい、全てのアップデートは無料になります。全顧客が自動ダウンロード出来ます。

Q: お勧めのバージョンコントロールシステムは何ですか?
A:私は、総合機能が無いGitを使っています。普通のGit、SourceTreeそれと、自己ホストされたGitLabです。100MBよりも大きい物は Dropboxで共有しています。1−4人での作業にはそれが一番だと思っています。3人以上でバイナリーアセットに取り組む場合は Perforceか、それと同等の物を考えた方が良いですね。私にはそう云った経験は無いですが。

Q:どうしたらプロジェクトの名前が付け直せますか?
A:私自身、プロジェクトの名前の付け替えをした事は無いんです。UE4のコードプロジェクトでは、疎かにしてはいけない事ですよね。これがUE4のスタッフによって書かれた解説です−
https://answers.unrealengine.com/questions/242407/renaming-a-c-project.htmlRenaming a C++ project - UE4 AnswerHub


Q:どうすれば違う鎧メッシュや、異なる性別/クラス/人種用のアニメーションを手に入れる事が出来ますか?
A: Project Genomで、私は bool isMaleを作りました。それは RepNotifyに設定されています。OnRep機能に於いて、それは全ての装備に影響して SetSkeletalMeshノードで正しいバージョンに変更してしまいます。 CanExecuteCosmeticEventsノードは、クライアントにそれをしてあげる為だけに使用されます。 そして又、私はEquipmentクラスに女性メッシュ 用に別個のフィールドを追加しました。1つのアイテムが装備されると、 Select node + IsMaleを使ってそれが女性メッシュか男性メッシュかを決めます。

キャラクターの異なったクラスや人種にも同じ原理を用います。boolの代わりに唯、 enumを用います。 SetAnimInstanceClassノードを使ってアニメーションブループリントも変えられます。

Q: どうやったらプレイヤーを出入り禁止に出来ますか?
A:その問題はphpで全部対処出来ます−‘users’の目録に新しいコラム、 bool “isBanned”を作成して下さい。 mmologin.phpを変更すれば、isBanned == true to loginが付いたユーザーは入って来れません。

−新しいユーザーを作成するmmoregistration.php のINSERTクエリも変更しなくてはなりません。なぜなら'users'のコラムの総計が変更されてしまったからです。

Q: 特定のアカウントだけ(クローズドベータ試験者やゲームを購入してくれた人)をゲームに入れるにはどうしたら良いのですか?

2つのオプションのうちどれか1つを使って下さい。
A)ゲームのキーを配布して下さい。登録の際にユーザーネーム/Eメールと一緒にキーも入力させて、それが有効かどうかを見ましょう。例えば、新しい“keys”目録を自分のMySQLのデータベースを作ります。其処に夫々id、 key(varchar)、 activated(bool)の項目のフィールドを設けます。それに手作業かインポートを使ってキーを追加します。 Mmoregistration.php がユーザーの提出したキーが“keys”目録の中に登録されて有効であるかを調べます。ユーザーがキーを使って登録を済ませたら、そのキーは“activated” = ‘true’に設定して下さい。

B)Steamで Greenlitを取得出来ます。 Greenlitを通じて配布/認可を行なえます。 Greenlitを持っていたら(未だ Early Accessの段階に入ってはいませんが)、Steam を通じてクローズドベータ試験者にゲームを配給出来ます。

Q: キャラクターブループリントが幾つかあるのは何故ですか?
A:MMOCharacterは、AIキャラクターとプレイヤーの元になっている基礎ブループリントです。貴方のゲームにモジュラ式装備の必要が無ければ、モジュラ式キャラクターブループリント(ModularPlayerCharacter) は必要ではありません。そして、 MyCharacter は基礎のムーブメントで、カメラブループリントには殆どMMO機能は備わっていません。

Q: プレイヤーストラクチャーなんかのワールドデータを絶えず保存するにはどうしたら良いのですか?
A:キャラクターデータを保存するのと同じやり方でワールドデータも MySQLデータベースに保存出来ます。 savecharacter.phpに似た新しいphpスクリプトを作成し、 MMOPlayerStateブループリントでリクエストを送信に対応しなければいけないでしょう。 MMOGameや他の設定可能なサーバーブループリントでは、 5分置位にリクエストを送信する Set Timer Delegateを使って下さい。

Q: ログアウトした途端にプレイヤーのキャラクターが崩壊して欲しくありません。どうやったらアーカイブ出来ますか?
A:
1. APlayerControllerを元にしたC++クラスを追加。
2.この新しいクラスにPawnLeavingGame()を上書きします。原版はこんな感じに見えます−

if (GetPawn() != NULL)
{
GetPawn()->Destroy();
SetPawn(NULL);
}

そうしたら、それを唯コピーして destroy lineをコメントアウト出来ます。
3.エディターでMMOPlayerControllerの元を自分の新しいクラスに変更します。

Q: ゾーンの間を移動する機能はどうやったらインプリメント出来ますか?
A:私が取り掛かっているゲームではこんなシステムを使っています−夫々の実質的なサーバーでは幾つかのmmoキット専門サーバーの処理が走行しています。夫々のゾーンに其れが1つずつ有り、夫々が決まったポートを持っています−7777、7778、7779等。

例えば、こんなパラメーターの付いたショートカットを取得出来ます−“PlainsMap -log -port=7777” や “ForestMap -log -port=7778”.

プレイヤーがトリガーボリュームに歩いて入って来た時、 クライアントに正しいゾーンipとポートと供にOpenLevelブループリントノードが要求されます。例−
https://lh3.googleusercontent.com/goM3G_-lG74KXksEt_atGfaqEWwqKgA15sHdthb7Mo9kA7aiz1TrHObdPI7c1QRTjQs0kgWp0qYooQAtChdqkfRBcvxssCpsSHyARqtEqtHmLKh2Al3Kinev9H3DpBUkQ2jdEafd


Q: インスタンスゾーンはどうですか(インスタンス地下牢や、戦場)?
A:同じ原理がインスタンスゾーンにも使えますが、サーバーインスタンスをダイナミックに起動しましょう(それをするのにC#チャットソケットサーバーソースコードを拡張出来ます)。ゲームサーバーは、ソケットサーバーに要求を送信出来、且つソケットサーバーは必要なマップパラメーターと次の入手可能なポートパラメーターでサーバー処理を起動して、ポート番号を返信して来るでしょう。そうしたら、ブループリント経由でポート番号がプレイヤー達に送られて、プレイヤー達は新しいインスタンスに接続出来ます。

Q: ゾーン毎に異なった PvPルールを設けるにはどうしたら良いですか?
A:それは確かに可能です。追加しなければならない(ブループリントで)物が2つあります−

1. マップ毎の異なった PvPルール− 一番簡単な方法は、主要な GameModeにbool か enum "PvPMode"を作成してデフォルトの値を設定します。例えば、"Safe Zone"に設定してから主要な GameModeを元にしたゲームモードを作成します。そして其処にあるPvPModeを"Enabled"の様な何か異なった物に設定します。 GameModeは、サーバー上にだけ存在しますが、その情報がクライアントと視覚効果の為に必要になるだろうと云う事を心に留めておいて下さい。その為に貴方はクライアントがマップに参加する際、サーバーからクライアントにPvPModeの数値を送信する事が出来ます。
2. Zone travel-上のゾーン間移動に関する質問を参照。

Q: ターゲットしないコンバットシステムはどうやったらインプリメント出来ますか?
A:もし no-targetコンバットシステムをUE4単独プレイヤープロジェクトで作るやり方を知っていたら、デフォルトシステムの所にあるMMOキットにそれを追加するのは其れ程難しい事ではないでしょう。十字線を使う武器にはLine Trace For Objects が使え(線は画面の中央から始まり、カメラ方向に前進し、その長さは銃の射程距離です)、十字線を使わない武器にはSphere Overlap Actors が使えます。UE4で作れる簡単なFPSセットアップのやり方のチュートリアルがウェブ/YOUチューブで見れます。自分のシステム作業を簡潔なTPP/FTPで作ってからMMOキットに取り込む事をお勧めします。

変えた方が良いブループリント−
MMOPlayerController - Right-Mouse Buttonイベントは、自動攻撃を始めます。
MMOCharacter – 自動攻撃イベント

PHPから欠陥を除く

Q: 私のPHPスクリプトの1つが機能しません、どうやったら問題が見付けられますか?
A:夫々のVaRESTリクエストの後、その応答はUE4のOutput Logに記されます(Window - Developer tools - Output log)。
https://lh6.googleusercontent.com/oJ7e2MvSeZ3BKSo1w9r8nUdzqIcb8plRbnYGfj6bZRcL20jwEdEctsj9pel0Q7BeIhycgzlhMkng6LFSNjOoSjY0ezBMXtk-nZvjqmTVAM2Acp6Jc7F_2rnrMGzYH5q2utz9G0oJ

A)応答コードが200であれば、PHPスクリプトは正常に機能しています。

B)応答コードが200でなかった場合は普通、PHPのバージョンを羅列します。もしPHPのバージョンが5.5より低かったら、PHPサーバーをアップグレードする必要があります。

C)もし応答コードが200でなくPHPバージョンが5.5以上であったらyour php server logsを見付けて下さい−ホストに依ってこれが見付かる場所は様々です。コントロールパネルからこれにアクセスさせるホストプロバイダーも有れば、FTPアクセスさせる所も在ります。

自分で新しいPHPスクリプトを自分で書いたら、オンラインのPHPチェッカーで構文の間違いをチェックする事が出来ます。

クラッシュ、ゲームが起動しない

Q: パッケージしたゲームを他の機械で実行しようとしたのですが、起動しません。
A:先ず始めに、パッケージゲームの全フォルダーを移動したか確認して下さい(WindowsNoEditor/)。

UE4ゲームを実行可能にするには、パッケージゲームのEngine/Extras/ フォルダーにあるUE4の必須条件である物を初めにインストールしておかなければなりません。

Q: エィディターでゲーム走行中、キャラクターを選んだりワールドを入力しようとしたりした後にクラッシュしてしまいます。
A:エディターの走行中は、スタートメニューからワールドは入力出来ません。満足いくテストをする為にローカルにゲームをパッケージ出来ますが、通常私は新しいパッチを末端使用者にリリースする前にパッケージします。

Q: 貴方のプロジェクトをアンリアルバージョン*.xxで開くとクラッシュしてしまいます。
A:最新の安定したバージョンを使っていますか?「スニークピーク」バージョンとブランチは安定していません。最新版の安定したUnreal Engineを使って下さい。

Q: レベルを変える時、ゲームが“X not cleaned up by garbage collection!”と云うエラーメッセージと供にクラッシュしてしまいます。
A:デモプロジェクトで何も変更していない場合はこのセクションの初めの質問を参照して下さい。 GameInstance(MMOInstance)の様なパーシステントクラスが前のレベルのアクタに対し何のリファレンスも持っていない事を必ず確認しましょう。どのクラスを探したら良いのか調べるにはログを確認して下さい。リファレンスを設定し、そして設定されたノードに何も添付しない事でリファレンスを奇麗に出来ます。そして又、UMGウィジェットを作成する時は、ウィジェットを配列に加えてから新しいレベルをロードする前にそのウィジェットを破壊して下さい。

Q: BSOD/systemリブートと供にゲームがクラッシュしてしまいます。どうしたら良いですか?
A:それはハードウェアのエラーですね。多分、ビデオカードが熱くなり過ぎています。ショートカットパラメーターを付けてゲームを走行する事でこの問題を解決出来ます− VSync (フレームレートが高くなり過ぎて、ビデオカードが加熱し過ぎてしまう事が有るのでアンリアルはデフォルトで VSyncを使用しません)。数分プレイは出来ても、未だクラッシュする場合は、最大FPSを更に下げる t.maxfps 30をゲームコンソールに入れてみましょう。始動した途端にクラッシュする場合は、 t.maxfps 30を.iniファイルに加える必要があります。

他の問題

Q: 遠隔の自分の専門サーバーに接続出来ません。 mmogetserver.phpにあるipアドレスは合っています。クライアントに対しローカルパラメーターを使ってローカルの専門サーバーを走行すると接続は上手く行くのですが。
A:ローカルと専門サーバーの機械のファイアーウォールの設定を確認して下さい。ファイアーウォールが本当に問題になっているのか全部ファイアーウォールを無効にしてから調べられます(又、有効にしておく事を忘れずに!)。7777と7778ポート、そしてクライアントとサーバーのUE4アプリケーションが遮断されていないか確かめて下さい。

自分で専門サーバーをホストしている場合は、サーバーコンソールの中のipを確認して下さい。もしipがプライベート(192.168で始まる)ならば、恐らくインターネットに直接接続されていないからでしょう。

Q: 自分のPHPサーバーが5.5より上だとどうやったら判りますか?
A:キットのPHP/フォルダーで見付かるmyphpversion.phpを、自分のウェブサーバーと他のPHPスクリプトを保管しているフォルダーにアップロードして下さい。ブラウザーからスクリプトを実行するとこの様な物をアウトプットして来ます−

Current PHP version: 5.5.16-pl0-gentoo2.0

Q: 全部質が低い様に見えます−解像度がとても低いみたいなのですが、どうやって直すのですか?
A: Resolution Scaleを100%に設定してみて下さい。
https://lh6.googleusercontent.com/YFMCSZZfpeUCQMLiXv8k0OwVkdkhxtkd1aTHnA_j1HW9BL2itkh2kuQ9yl7BOVWJVRe5fs2EcC6j2kx68SIa6gwCwHjdlZ5eFEuFr4jU9ejAi9Yu_yzYlDUlefFX9_oQ5ou5OT1G


Q: ブループリントで が為されるのは何処ですか?見付かりません。
A: PM/Skype/forumのスレで私に尋ねてきても良いですが、時間を節約する為に Edit > Find in blueprintsを使う事をお勧めします。例えば、UIが何処で作成されているかを突き止めるには"Create Widget"を検索出来ます。この検索には現在開かれているレベル以外は、レベルブループリントは含まれていない事を心に留めておいて下さい。

Q: キャラクターが死ぬと地を突き抜けて落ちてしまうのですが。
A:自分のマップを使うのステップ6を参照して下さい。

Q: 変更を加えたらアンリアルがプレイ/スタートアップでクラッシュする様になったのですが、どうやったら直せますか?
A:先ず、こう云う状況を回避する為にバージョンコントロールを使った方が良いですよ。私は、普通の統合されていないGitとSourceTreeを使っています。

もしバージョンコントロールを持っていなかったら、 Saved/BackupとSaved/AutoSavesフォルダーに自動保存があります。どのブループリントがクラッシュを起こしているのか知っている場合は其処を探して、その古いバージョンを復活させられます。

どのブループリントが問題になっているのか分からない場合は、一旦ブループリントを全部プロジェクトフォルダーから別のフォルダーに移動させてエラーが続くか確認して下さい。それから、半分だけブループリントを元に戻す等して、どれが問題になっているのかを突き止めて下さい。

Q: マップの縁から歩いて外に出てしまったら、エディターでプレイする時に自分のキャラクターが落っこちてしまうのですが。
A:貴方のmysqlデータベースの‘characters’の目録でIDが0のキャラクターを探し出し、そのposx, posyそしてposxを自分のマップで適当な物に調節して下さい。

Q: 自分のインベントーリー item/abilityのテクスチャーが時々白くなってしまうんですけど。
A:アイテムアイコンは全てデモアイテムアイコンとして (/Game/MMO/Textures)同じフォルダーに配置されなければいけません。何故なら、ゲームが始まった時にアイコンはそのフォルダーから取り込まれたからです。(UE4は、リファレンスされていないテクスチャーを自動的に取り込む事は無く、ゲームがスタートした時にアイテムアイコンがリファレンスされる事もありません)

そのフォルダーを変更したい場合は、 MMOPlayerControllerのこちらのノードを変更して下さい−
https://lh4.googleusercontent.com/qWkb0V9qOmoSymxk-C8lH20xY6GV4wD6GYvVfFjfdmPi3HJe_oY4yclrzi5mgI6z1gM3r_I4myLbiArn380CjbJ1IFNpgHoPY01Y3lmWhHlNvD-w-ulS1zGU0UIZUjjG8xwlrSMG


Q: エディターで色々テストする時、スタートマップで(ログインメニューが付いたもの)コントローラームーブメント/マウスルックを遮断出来ないみたいなんですけど。 SetIgnoreMouseInputとSetIgnoreMovementInputは効きません。
A:専門サーバーがオフになっていて単独プレイヤーでスタートマップを走行しているか確認して下さい。



おわりに

これをきっかけに多くのMMOプログラマーが生まれることを祈ります。
一緒にMMO開発してくれる方も募集中!
hidamarinonakade.hatenablog.com
また、この翻訳を訂正してくださる方も募集中です。