はじめに
公式ドキュメント「Online Subsystem Steam」は現状いくつか問題がある為、
UE4にデフォルトで指定してあるSteamSDKのまま設定する方法を書きます。
UE4のゲームをSteamにリリースする際、とても困りましたので、
「入替人-ReplaceR-」をSteamに登録した際に覚えた内容を、残しておこうと思います。
解説環境:Unreal Engine 4.27.2 Windows
もくじ
はじめに
1. Unreal Engine 設定
2. Steamworks 設定
3. ゲームをアップロード
4. Steam 機能追加
0. ストアページの公開まで
公式ドキュメントの問題点
参考リンク
おわりに
0. ストアページの公開まで
・Steamworks登録からストアページの公開まで
この項目は、UE4が関係ないので、ページの下部に書きます。
1. Unreal Engine 設定
UE4 4.27.2 のサードパーソンテンプレートを、Steam用に設定するまでを書きます。
1.1. Online Subsystem Steam
まず、プラグインの項目から、「Steam」と検索をかけて、
「Online Subsystem Steam」のチェックを入れます。
再起動を要求されるので、再起動します。
1.2. DefaultEngine.ini
プロジェクトフォルダの中の DefaultEngine.ini に情報を追加します。
Steam_Test_427(プロジェクトフォルダ)> Config > DefaultEngine.ini
これを「メモ帳」などで開き、下記文字列をコピペします。≫公式の記述はこちら
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
この中↑で、SteamDevAppId=480
の 480 の部分だけ後で、自分のゲーム固有の番号に書き換えることになります。
既にアプリIDを取得済みの場合は、この段階で480を自分の数字に変更しても良いです。
(最下段へのコピペでいいです。保存後、UE4の機能で自動的に適宜適切な列に修正されます。)
1.3. Steam動作確認
ちゃんとSteamとの連動機能が動いているかをチェックしたいと思います。
Steamを起動して、ログインしておきます。
Steamがインストールされていない場合や、アカウントを持っていない場合は、
下記サイトでSteamのインストールとアカウントの作成を行ってください。
スタンドアローンモードでプレイ
簡易的にSteamの機能を確認する際は、スタンドアローンモードでプレイします。
プレイ画面右下にSteamのオーバーレイ表示が出てきたら、ここまでの手順は大丈夫です。
Unreal Engine 4.25 4.26 は、スタンドアローンでSteamオーバーレイが機能しないバグがあります。 4.27 で修正されました。 4.24以前はスタンドアローンで機能します。
4.25 4.26 の場合は、簡易的にDevelopmentモードでパッケージ化して確認するか、
alwei先生が記事にしてくれている方法で確認してください。
また、何も設定せずにスタンドアローンモードでゲームを起動すると、閉じることが出来ません。
閉じ方が分からない場合は、
「Alt + F4」 を押して閉じてください。
もしくは、先にQuit(閉じる)を設定しておくのが良いでしょう。
1.4. アプリケーションID 指定
ここからは、Steamworksの登録が済んでいる前提で、説明を進めます。
アプリケーションIDの確認をしたいと思います。
アプリ管理画面などの、ゲームタイトル名の隣にある数字がアプリケーションIDです。
アプリIDを、DefaultEngine.ini に書き込みます。
Steam_Test_427(プロジェクトフォルダ)> Config > DefaultEngine.ini
1.5. UE4 パッケージ化設定
Windows版のパッケージ化の設定をします。
4.27.2のデフォルト設定から変更した方がいいと思う点は、以下の三つになります。
- ビルドコンフィギュレーション Shipping (完成版はShippingにします。)
- 完全に再ビルド のチェックを入れる (完成版はチェックを入れます。)
- 前提条件のインストーラを含む のチェックを外す (Steamへの投稿の場合はチェックを外します。)
確認したい項目として、
パッケージ化の詳細欄の中の
圧縮およびクック済みのパッケージを作成 のチェックが入っているかを確認しておきたいですが、
4.27.2では、デフォルトでチェックが入っていました。
(4.26以前はチェックが入っていないので、入れた方が良いです。)
フレームレート指定
- 可変フレームレートの場合は、「フレームレートをスムージング」にチェック。
- 固定フレームレートの場合は、「固定フレームレートを使用」にチェック。
4.23以前は、フレームレートスムージングのチェックがデフォルトでしたが、
4.24以降は、チェックがはずれているのがデフォルトです。
ここの確認をせずにパッケージ化すると、とても処理負荷の高いゲームが出来上がります。
不要なプラグインをチェック
丁寧に使わないプラグインを確認して消すのがベストですが、
最低限として、「VRゲームでない場合」は、「VR」で検索して、全部チェックを切っておくことをお勧めします。
このVRプラグインのチェックが入っていると、ゲーム開始時に、VR機器が起動してしまい、 場合によっては正常にプレイできない事があります。
またデータ容量の大きいプラグインを確認する方法は、碧樂クーさんの記事がとても参考になります。
2015年のalwei先生も確認するように言っています。
4.27は、他のバージョンに比べて、プラグインの量が多いので、プラグインの整理をすると、恩恵が大きそうです。≫参考
4.27.2のプラグインの容量測定してみたので、こちらもご確認ください。
1.6. パッケージ化
Steam向けの設定ができたのでWindows用にパッケージ化します。
なお、4.25以降は64bit版のみがデフォルト設定になっています。
32bit版のパッケージ化がしたい場合は、碧樂クーさんの記事に、32bitに対応する方法が載っています。
パッケージ化が完了したら、以上のデータができあがるので、これをSteamにアップロードします。
2. Steamworks 設定
ここからは、ストアページの準備がほぼ済んでいる前提の確認になります。
アプリIDを仮に 0000000 として説明します。
2.1. アプリケーション 一般
2.2. アプリケーション Steam入力
必須設定項目に入っていないですが、ここを未設定だと、Steam側から設定しろと言われます。
ゲームパッド非対応の場合は、「キーボード(WASD)とマウス」を選ぶことで、 (一応)ゲームパッドでも動くようになります。 ゲームパッドの対応を考えてない場合は、こちらを選んでください。
UE4でXboxコントローラー対応し、「一般のゲームパッド」を選択。 下のチェックを全部入れると、全てのコントローラーで動かせます。 この機能とても便利です!
より詳細な設定もできるので、ゲームパッドの設定にこだわりたい場合は、確認してみて下さい。
2.3. インストール インストール全般
ここで、ゲームのフォルダ名や、.exeファイル名の指定をします。
一応の確認です。
2.4. インストール 再頒布可能コンポーネント
Steam側のスタッフから、「君のゲームはこの二つを入れると良さそう」というコメントをもらったので、
おそらく、現行のバージョンの場合は、下記2コンポーネントにチェックを入れるといいと思います。
Unreal Engine のバージョンによっては変わってくると思います。
2.5. SteamPipe デポ
SteamPipeのタブのデポを選び、「新しいデポを追加」します。
デポとは Depot の略で、ここでは「貯蔵所、倉庫」の意味で用いられているようです。 体験版や、ベータ版、Mac版など、複数のバージョンを取り扱う場合は、複数のデポを用意することになります。
今回は、Windows64bitの完成版だけをアップロードするので、一つだけ追加します。
一つ目のデポは、自分のゲームのメインデータだと分かりやすいデポ名にすると良いと思います。
デポIDは、アプリID+1~9の番号になるようです。
アプリID
デポID
をメモっておきます。
3. ゲームをアップロード
Steamの公式ドキュメントもあるのですが、説明が足りない点があるので、方法を載せます。
3.1. SteamSDKをダウンロード
UE4の設定は、デフォルトのSDKを使っていますが、アップロードツールもSteamSDKの中に入っているので、
現在の最新バージョン 1.53a をダウンロードします。
Zipデータを解凍して、自分がわかりやすい場所に移動させてください。
割と頻繁にこのツールを使う事になるので、どこに置いたか忘れるような場所には置かない方が良いです。
3.2. アップロード準備
今回使うのは、下図の 「tools」 のフォルダーの中身だけです。
以下の場所に新規フォルダーを作成。
「tools」>「ContentBuilder」>「content」>「新規フォルダー作成」(windows_content)
(フォルダー名は、英数字で、自分が分かり易ければなんでもいい。)
作ったフォルダーの中に、UE4のパッケージデータをコピーします。
3.3. SteamPipeGUI
次に、SteamPipeGUI.zip を解凍してください。
中身の SteamPipeGUI.exe をダブルクリックで開き、
上図の画像を参考に入力後、Uploadを押します。
初回のアップロード時には、処理中に本人確認のようなものがあり、
E-mailにSteamから送られてくるコードを打ち込む必要があります。
塗りつぶしすぎてわかりずらいですが、
Success! の文字が出てれば、アップロード出来ていると思います。
このあたりに関しては、いくつか記事にしてくれている方々がいるので、
うまくいかない方は、確認してみるといいかもしれません。
公式ドキュメントと、UE4関連で検索しても全然わからず苦労しました・・・。
3.4. SteamPipe ビルド
アップロードが完了したら、Steamworks の SteamPipe ビルド の項目を開きます。
「--アプリブランチを選択--」 を 「default」 に変更し、「変更をプレビュー」のボタンを押します。
あとは、任意のコメントと、「今すぐビルドをライブに設定」 を押すと、
アプリの審査を受けることが可能になります。
これでゲームのアップロードは完了です。
3.5. ゲームビルドのレビュー
Steamのスタッフのゲームビルドレビューを受けて、審査が通れば、
ゲームの公開のタイミングを自分で決められるようになります。(ボタン押せば公開)
基本的には動作確認が取れれば、審査が通るような気がします。
4. Steam 機能追加
アップロードするだけであれば、ここまでで書いた通りで可能ですが、
Steamの機能を活用する方法をいくつか載せようと思います。
4.1. Steam実績
自分のように、読んでも意味が分からない人用に、設定方法を書いておきます。
ゲームがまだ非公開の状態の場合、正常に動くかどうかのデバッグは、出来ないようです。
Steamworks 設定
まず、Steamworks のアプリ管理画面から、
「データ&実績」>「実績」を選択
「新しい実績」をクリックします。
最初に打ち込む内容は、英語版表示の設定です。
複数言語対応する場合も、まず英語版を作った後、ローカライズ制作をします。
- ACH_00_Test (仮の文字列)UE4側にこの文字列を打ち込むので、自分が分かりやすい英数字を打ちます。アンダーバーは使えるようです。ドキュメントに大文字で書かれてあるので、大文字にしてあります。(小文字未検証)
- test_Achievement (仮の文字列)プレイヤー側に、伝わる実績名です。
- memo (仮の文字列)実績の達成条件などを書きます。
まず、回数条件などが無い設定を説明します。
この3つを埋めたら、一旦保存をしてから、画像をアップロードします。
文字情報を一度保存してからでないと、画像のアップロードがうまくいかない気がします。
画像は、256×256pixelで用意してください。
画像のアップロードと保存ができたら、「公開」タブをクリック
「公開の準備」のボタンを押し
「Steamに公開」>「本当に公開する」 まで済ませると。
Steam上に実績が、実装されます。
Unreal Engine 設定
DefaultEngine.ini に実績を追加します。
「プロジェクトファイルフォルダー」>「Config」>「DefaultEngine.ini」をメモ帳などで開き
Steam設定の際に追加した
[OnlineSubsystemSteam]の行を見つけ
SteamDevAppIDの真下に一行追加します。
Achievement_0_Id=""
""の間に先ほどSteam上で指定した文字列を足します。
Achievement_0_Id="ACH_00_TEST"
実績を二つ三つと増やしていく場合、下に行を増やしていきます。
Achievement_0_Id=""
←この文字列を必要な行コピペしてください。
Achievement_0_Id="ACH_00_TEST"
Achievement_1_Id="ACH_01_B"
Achievement_2_Id="ACH_02_C"
Achievement_3_Id="ACH_03_D"
Steamworks上も同じ数増やす必要があります。
Steamworks上とID番号が合うように確認します。
そこまで済んだら、ブループリント側で、実績を取得するタイミングで、以下のように組みます。
ブループリント設定
これだけで実績が解除されます。
実績が解除されるか、スタンドアローンモードで試してみてください。(Steamログイン状態で)
実績は一度解除されると、そのアカウントは、解除状態のままになるので、 一度解除した実績が、修正後などにちゃんと機能しているかを再度確認する場合は、複数のSteamアカウントが必要になります。
4.2. Steamランキング
ランキングデータを、ゲーム上に引っ張ってくる為には、C++で制御する必要があります。
この項目では、Blueprintだけで、Steamランキングにスコア情報を「送る」方法を説明します。
Steamworks 設定1
Steamworks のアプリ管理画面から、「データ&実績」>「データ」を選択
「新しい統計」からAPI名 の欄に、「Score_Score」(任意の文字)と打ちます。
ScoreRank_ScoreRank など、「 _ 」アンダーバーを挟んで、左右に同じ単語を打つ。
新しい統計データを作ったら、「公開」から「公開の準備」>「Steamに公開」を押して、情報をSteam上に公開します。
Unreal Engine 設定
ブループリントで以下のように組みます。
「Stat Name」に「Score」(Steamworksで決めたAPI名の片側)を打ち込む。
ここまで組んで、Steam(ゲームする方)を起動してログインした状態で、「スタンドアローンモード」でランキング送信イベントを走らせてみてください。
うまくいっていれば、Steamworksのランキングの項目に、Scoreが繁栄されていると思います。
Steamworks 設定2
Steamworks のアプリ管理画面から、「データ&実績」>「ランキング」を選択
ランキング名が「Score」で、プレイヤーと、スコアの値が入った状態になっていると思います。
「編集」から、コミュニティ名を入力すると、コミュニティにランキングが表示されるようになります。
ランキングの表示
ランキングデータをUE4上に細かく持って来る為には、C++が必要です。
もしくは、プラグインを購入するのも良いと思います。
ブループリントだけだと、ランキングのURLに飛ばすくらいしか出来ないようです。
表示例:https://steamcommunity.com/stats/1667160/leaderboards/6827555
新しい知見を得たら、追記したいと思います。
4.3. Steamクラウド
複数の端末でセーブデータや設定を共有する機能。
ゲーム内で、セーブ機能を実装していない場合、Steamクラウドの設定は出来ません。
今回、自分が作ったゲームが、複数端末でセーブデータを共有したくなるようなゲームではなかったので、必要ないだろうと思っていたんですが、
コミュニティのスレッドや、ゲームのレビュー欄で、
「Steamクラウドに対応しないんですか?」
「Steamクラウド対応してください!」
「Steamクラウド対応してればなー。」
というような、コメント(海外勢)が予想外に付いていたので、勉強がてら機能追加してみました。
必要と思う人がいるのは確かなので、機能追加した方が良いんじゃないかと思います。
Steamworks 設定
カンさんの記事を参考に組めると思いますが、UE4の場合の設定も若干あるので、説明を書きます。
Steamworks のアプリ管理画面から、「アプリケーション」>「Steamクラウド」を開きます。
「Steam クラウド設定」の「ユーザーごとのバイトクォータ」「ユーザーごとのファイル数」を入力します。
ここの数字が、最初何を意味しているか解らなかったんですが、
セーブデータのデータ容量と、セーブデータの数がここの数値に関わってきていて、
デフォルトのセーブの保存場所が、以下になります。
C:\Users\***UserName***\AppData\Local\***ProjectName***\Saved\SaveGames
このフォルダーの中身を確認して、セーブ容量はどれくらいか、確認してみてください。
自分のゲームの場合は、ファイル数5 サイズが、5341バイトなんですが、ディスク上のサイズの方が大きくなるので、大きい方を基準に、余裕をもった数字がいいんじゃないかと思います。
数値の設定後、
「ルートパス」の「新しい自動クラウドパスを追加する」を押します。
サブディレクトリに***Gamefolder***/Saved/SaveGames
「ゲームのフォルダー名」は書き換えてください。
パターンに、*.sav
入力したら、更新ボタン
更新後、ページの下部の「保存」を押すのをお忘れなく。
保存が済んだら、「公開」から「公開の準備」>「Steamに公開」を押して、情報をSteam上に公開します。
複数のPCで同じセーブデータが読み込まれるのを確認したら、成功しています。
4.4. Steamオンラインマルチ
一応標準機能とブループリントだけで、同じ空間で動く程度は組めるものの、
細かい部分で、C++が必要になる為、C++を使いたくない場合は、プラグインを使う方が賢明という判断になりました。
Advanced Session Plugin を使用した、以下の動画の通り一度組んでみることをお勧めします。
ベータ版
修正確認用などで、本番環境以外のベータ版があった方が便利なので、
カンさんの記事を参考に組むのがいいと思います。
0. ストアページの公開まで
Steamworksの登録から、ストアページの公開までの手順をまとめます。
この項目は、参考サイトの紹介がメインになります。
0.1. Steamworks アカウント作成
Steamにゲームをリリースする為には、Steamworksへの登録が必要です。
https://partner.steamgames.com/
ゲームをプレイするアカウントと紐づく形になるので、
遊ぶアカウントと、作るアカウントを分けたい場合は、
遊ぶアカウントとは別のメールアドレスを用意しておく必要があります。
詳細な登録手順は、下記2サイトが非常に丁寧に説明してくれているので、
参照しながら登録をすると良いと思います。
情報共有していただき感謝します。とても助かりました。
0.2. 新規 Steamworks パートナー
アカウント作成に続いて、新規 Steamworks パートナーとして登録をします。
手順に関しては、前述の2サイトを引き続き参照してもらうのが良いと思います。
つまずきそうな項目としては、
登録料100$
ゲーム1本につき100$の支払いが必要になります。
(ゲームの売り上げが1000$を超えると返還される。)
悩む場合は、Boothや、itch.ioを検討することをお勧めします。
個人情報入力
ガイド無しで書き込める気がしません。
入力の手順を書いていただいている方々に足を向けて寝られないくらい感謝します。
パスポート or 運転免許証 or 身分証明書
パスポートか免許証の画像を本人確認として要求されるのですが、
両方持ってない場合は、政府発行の身分証明書の画像を送る必要があります。
パスポートや免許証は日本語のままで良い場合があるようですが、 自分の場合は、「運転免許証を英語に翻訳してくれ」という要求があり、 どこを翻訳すればいいのかわからず、全部翻訳してみたら・・・大変でした・・・。 パスポートなら、翻訳を要求されないのかもしれません。
また必須ではないようですが、(税金の処理の為)マイナンバーを入力することになるので、
若干の覚悟が必要な気がします。
登録完了
入力を済ませ、メールに本人確認用の画像を返信した後、数日以内にストアページの編集が可能になっていると思います。
初めてのゲーム登録の場合、登録料を支払ってから、30日後が、最短のゲーム公開可能日になります。
0.3. ストアページを準備
この項目も引き続きという形で、下記ページを参照するのが良いと思います。
ゲーム情報入力
最低限の入力項目がとても多いので、頑張る!
画像用意
カプセルと呼ばれる、ゲーム紹介のバナーとして使われる画像などを、
いろんなサイズで用意する必要があり、これが結構大変なので、頑張る!
準備ができたら
ストアページのレビューを受けます。審査には数日かかります。
問題があると、Steamworks上の通知とメールで、お知らせが来ます。 ゲームの内容がユーザーに伝わりやすいか、などが審査されるようです。
特に問題が無ければ、ストアを公開するタイミングを自分で決められるようになります。
ストア公開の2週間後が、最短のゲームリリース可能日になります。
公式ドキュメントの問題点
Unreal Engine 公式ドキュメント 「Online Subsystem Steam」
SteamSDKをアップデートする際、
こちらのドキュメントが、混乱をまねく状態がだいぶ放置されているので、
問題点を羅列します。
OnlineSubsystemSteamPrivatePCH.h
存在しないファイルを編集するように指示。
このドキュメントは、4.22の時に更新されたはずですが、
OnlineSubsystemSteamPrivatePCH.h
このファイルは、4.14の中にはありましたが、4.15以降のファイルには存在しません。
4.15以降には、代わりに、OnlineSubsystemSteamPrivate.h があり、
これを書き換えるべきかに関しては、情報が錯綜しており、この項目は無視するという意見が多いように思います。
無視するパターンと、OnlineSubsystemSteamPrivate.hの中身を書き換えるパターンと試しましたが、どちらでも動いたので、無視するのが正解かもしれません。
「4.14以前のバージョンの場合」と注意書きすべきです。
混乱の元になるので、ドキュメントの修正を行って欲しいです。
steamclient.dll
ファイルが見つけにくい。
これに関しては、ギープさんの記事に助けられました。
steam_apiとsteam_api64は先ほど配置したsdkの中のredistributable_binディレクトリの中にある。
それ以外のDLLはSteamクライアントディレクトリの中にある(C:\Program Files (x86)\Steam)。
全てコピーしてきて配置する。
Steamクライアントディレクトリー(C:\Program Files (x86)\Steam)がどこかわからず困った。
Steam実績が機能しない
前述の不明瞭な点を克服すると、SteamSDKの更新が行え、Steam上でゲームがプレイできるようになるのですが、
スタンドアローン上で機能しているSteam実績が、アップロード後に機能しない現象に悩まされました。
公式のドキュメントに書いてある内容だけだと、Steam実績を動かすための更新設定が足りていないようです。
更新したSDKのバージョンが良くなかったのかと思いましたが、
検証を繰り返すうちに、SDKのバージョンの所為ではなく、
更新に必要な工程が抜けているようだという見解(個人的)に今はなっています。
同じような現象を下記ツールで、解消できた(4.10)というのを
AnswerHubで見たので、
差分検証してみようかと思っていますが、まだ検証できていません。
紙パレットさんの「ジラフとアンニカ」に実績が機能していたので、
お話を伺ったところ、こちらのプラグインで機能しているということでした。
教えていただきありがとうございます!
が、自分の環境では、状況が改善されませんでした。orz
SteamSDKバージョン
以上のことを経験し、alwei先生に泣きつき。。。すみません。
記事を書いてもらえ。神様!
お忙しい中、本当にありがとうございましたm(_ _)m
この記事で、自分が救われた点が、SteamSDK更新しなくていいんじゃね?
という点で。
現在 SteamSDK の最新版は、1.53a ですが、
Unreal Engine にデフォルトで指定してある SteamSDK のバージョンは、
Unreal Engine | SteamSDK |
---|---|
4.22 | 1.39 |
4.23 | 1.42 |
4.24 | 1.46 |
4.25 | 1.47 |
4.26 | 1.47 |
4.27 | 1.51 |
5.00EA | 1.47 |
現時点で、
4.22を1.39でアップロードしても問題なく動き
4.23を1.42でアップロードしても問題なく動きます。
セキュリティ的に上げたいという場合もあるかと思いますが、
SteamSDKを更新しないという判断も、ありだと思います。
そして何より、SDKを更新しなければ、実績がちゃんと機能した!
という事を、伝えたいという思いだけで、この記事を書いたようなものです。
Steamworksのページなどに、最新版を使うようにと書かれていたり、
Epicのドキュメントの最初に、SDKの更新方法が載っていたりと、
更新する必要があると思い込んでいましたが、更新しなくていいと思います。
願わくば、ちゃんとしたSDK更新方法が共有されるのがベストですね。
参考リンク
- STEAM WORKS
- UNREAL ENGINE
- 参考リンク
おわりに
Steamでゲームを公開するというのが、まだまだ先の予定でしたが、
RRRさん や HueHumanさん が個人でリリースしているのを見て、案外簡単かも!と血迷った判断をして大変な思いをしました・・・。
Steamにリリースしている方全員を尊敬します。
Steam登録の際には、またろうさんのブログ に助けられ、
Steam更新の手順では、ギープさんの記事に助けられ、
Steam実績がなぜか動かなかった時は、紙パレットさん alweiさん shiotaniさんに助言いただき、
Steamクラウド、ベータ版の作り方は、カンさんのブログ に助けられました。
記事をまとめている時に、indiegamesjapanさんにも丁寧な情報が上がっていたのをみつけたので、参考にさせていただきました。
重ね重ね感謝致します!!
この記事で、Steamにゲームがリリース出来た人が一人でもいたらいいなと思います。