Steamworksの落とし穴まとめ ~Steamでゲームをパブリッシングしたいやつは全員読め~
Steamworksには罠がある
こんにちは。完全最強同人ゲームサークル「エンドレスシラフ」でラーメン二郎みたいなゲームを作っているnicolaiと申します。
弊サークルでは昨年から今年の1月末にかけて「∀kashicverse -Malicious Wake-」というラーメン二郎みたいな過剰情報量を摂取する悦びに満ちたシューティングゲームを開発し、
Steamという配信プラットフォームでセルフパブリッシングしました。
また、上記作品に関するDLCを複数本作成し、こちらもセルフパブリッシングしました。
その結果、Steamworks(Steamが開発者向けに提供しているサービス群)の仕様の様々な落とし穴にハマり、大変に苦しみました。
こういった「落とし穴」に後続の方々が引っかからないように本記事をしたためた次第です。
Steamにてセルフパブリッシングをされる皆様のご参考となれば幸いです。
注意点です。
本記事で記載されていることは、基本的には「落とし穴」をまとめたものとなります。Steamworksの基本仕様についてはドキュメントを参照してください。
なお、本記事の副題には「全員読め」とか強い口調で書いてありますが、これは人を集めるための手法の一種なのであまり気にしないでください。
チェックリスト完了しているのにダッシュボード上では未完成扱いになっている
SteamではゲームやDLCをリリースする際に、ガイドラインに違反していないかどうかをチェックするための「自動チェック機能」と「Steamの中の人による人力レビュー」の2つの機構が存在します。
チェックされる対象としては、大別すると「ストアページに必要な情報が記載されているか?」と「ビルドしたゲームパッケージがSteamサーバ上に登録されているか?」の2種類があります。
これらを自動・人力の両方でチェック完了して初めて「リリース準備完了」という状態になるのですが、何故かここの情報の整合性が狂って表示されるケースがあります。
上記は自動・人力チェック両方通過後のチェックリスト状態です。
ちゃんと通過して完了状態になってますね。よかったよかった。
しかし、「ダッシュボード」のページにて当該ゲーム(今回はDLC)のチェックリスト状態を見ると、何故か「ビルドのステータス」の項目が「未完成」となっています。
何かしくじったか?と思い、ゲームビルドを上げなおしたり、別のPCからログインして状態確認したりしましたが結果は同じでした。
また、数日経過してもこの状態は変化しませんでした。
結論としては、上記は単純にSteamworksの表示上のバグでした。
内部的にDBが2つ存在するんですかね?よく分かりません…。
最終的には表示上のバグということで良かったものの、リリース直前は
「あなたのゲームはビルドステータス未完了のままリリースされています。よってリリースをリジェクトします」とか「ビルドステータス未完了状態のため、リリースできません」とかをいきなりSteam側から宣告されるのではないかと思い、戦々恐々としていました。
もしも上記宣告が発生したら、また人力レビューをやり直したり、最悪Steam側でこの表示不具合が解決されるまで待ち状態になる…なんてことも考えられます。
開発者の心臓に悪いので何とかしてほしいというのが正直なところです…。
チェックリスト完了してリリース承認されているのに「承認失敗」のログが延々と残り続ける
チェックリスト完了問題その2です。
レビューを依頼してチェックリスト完了!リリース承認!やったー!
と思ったら画面右のチェックリストの項目に「Failure」の文字が…。
承認されてないじゃん!
結論としてはこちらも表示上の不具合の模様です。
過去のレビュー依頼で承認失敗した時の過去ログが延々と残り続けるようです。承認完了したならば過去の承認失敗ログは消していいと思います…。
ストアページのリリース可能日とリリース可能状況の仕様が一致していない
表示バグその3です。
これは恐らくDLCのみで発生する不具合だと思われます。
上記は、12/26にDLCのストアページを公開した直後のリリース状況の画像です。
リリース条件として「ストアページが最低でも2週間は『近日登場』として公開状態であること」と書かれています。しかしながら、「最も早いリリースできる日」には12/26と書かれています。
結論から言うと「ストアページが最低でも2週間は『近日登場』として公開状態であること」はDLCのリリースにおいては嘘情報でした。
おそらく、Steamworksのサービスにおいて、通常ゲーム用のUIをDLC側サービスUIにも流用しているために発生している問題であると思われます。
これも心臓に悪いので、嘘情報を書くのはやめて欲しいです…。
(UIを流用したい気持ち自体は分かる)
DLCは本編のディレクトリに「上書き」される
タイトルの通りですが、DLCは本編ディレクトリへ上書きされる形でインストールされます。そのため、DLCのリソースファイル名は本編側のリソースファイル名と競合しないように名前を変えるか、一個DLC用のディレクトリを掘ってそこに配置するのがよいと思います。
ファイルが上書きされるという仕様上、同じ名前のファイルを本編側とDLC側の両方で扱う場合には注意が必要です。
本編側でアップデートをかけた場合にはDLC側にも同内容を適用しないと、DLCだけ内容が古いということになりかねません。
DLCに含めるファイルの配置やファイル名には、十分注意が必要です。
DLCで別のexeを起動したい場合の設定が不明
本編とDLCとで別のexeを起動させたい場合には、Steamクライアントからのゲーム起動時に、オプションでどちらをプレイさせるかのダイアログを出す設定ができます。
別のexeで起動させたいDLCがある場合、このようにユーザーが所持しているDLCに応じて選択肢を表示させることが可能です。
…が、この設定のやり方がヘルプドキュメントに非常に薄くしか載っておらず、暗黙の了解的に実施可能なことになっています。
(ドキュメントはこちら。「新規SteamPipe アプリの初期設定」の項目です)
やり方ですが、まず下記のようにアプリ管理から「インストール->インストール全般」を選択します。
次に「起動オプション」から「新しい起動オプションを追加」ボタンを押します。
その後、増やした起動オプションの項目を編集し、「DLC IDを所有」の部分にDLCのDepot IDを追記、また起動のための情報を追加します。
起動したいexeが別ディレクトリに存在する場合、「作業ディレクトリ」の編集も忘れないようにしてください。
なお、本項目に限らない話ですが、ここでの設定内容がユーザ側へ反映されるには数十分~数時間を要するようなので注意してください。
最初にSteamworksを弄っていた時には設定内容が全然ユーザ側へ反映されなくて焦ってました。気長に待ちましょう。
「DLC」と「サウンドトラックDLC」は全然別の概念
Steamには、通常のDLCとは別に「サウンドトラックDLC」という概念が存在します。(ドキュメントはこちら)
ざっくり言うと、「サウンドトラックDLC」では上記のように「Steamクライアント上で専用の音楽プレイヤーが起動し、音楽再生ができる」のが売りです。
逆に通常のDLCでは、mp3ファイルを配置すること自体はできるものの、Steamクライアント上で音楽再生という機能は使用できません。
ここまでは特に問題ないのですが、「サウンドトラックDLC」は相当後発で出来た機能(多分2020年1月ごろ)のためか、通常のDLCとは全く異なるリリースプロセスを経る必要があります。
我々は「DLC」という名前でどちらも似たようなものだろう?と誤解していましたが、機能的にもリリースプロセス的にも全く別の枠組みだと思った方が良いです。
「サウンドトラックDLC」は通常のDLCよりも非常に細かく仕様チェックされる
これはちゃんとレビュー依頼前にチェックしていない我々が悪いのですが、
サウンドトラックDLCは通常のDLCよりもレビュー承認の要求基準がとても高いです。また、Steam側審査を通すために必要な項目自体も通常DLCと全く異なります。
同時に、細部までチェックして頂けるためレビューに相応の時間がかかります。
具体的には、通常DLCのレビューが2~3日程度に対して、サウンドトラックDLCは5~6日程度掛かります。細かくチェックして頂ける分、ミスもボロボロ発生しがちなので注意が必要です。
以下は、我々が引っかかった項目です。ご参考までに。
・mp3ファイルではなくwav, flacなどのロスレス音楽データを配信する場合には、専用の「HDオーディオデポ」を作って登録する必要がある。
・csvファイルで提出するトラックのメタデータ情報と、mp3ファイルのID3タグに含まれる情報に食い違いがある場合、リジェクトされる。
・mp3タグが付いてない/ID3タグの項目に抜けがある曲がある場合、リジェクトされる。
・エクスプローラで名前順に並び替えたとき、csvに書かれている曲リストとエクスプローラでのファイル表示順序が一致している必要がある。
サウンドトラックDLCのトラックのメタデータ情報提出ボタンが変な位置にある
落とし穴情報ですが、トラックのメタデータ情報をcsvで提出する際、
下記の「新しいトラックデータをCSVで提出」ボタンを押しても「トラックのメタデータ」に情報が反映されません。
じゃあどうするかというと、ページ上部の方の全然関係なさそうな場所にある「Submit Album Metadata」ボタンを押す必要があります。
これを忘れて「よっしゃトラックのメタデータ送信完了や!」と思っていると、実は全然情報が反映されてなくてリジェクトを喰らうので注意してください。
「サウンドトラックDLC」にゲームを含めることはできない
これは弊サークル特有の問題ではありますが、一応記述しておきます。
弊サークルのゲームのサウンドトラックには伝統的に「おまけミニゲーム」や「ライナーノーツなどの資料」が付属しており、単なるサントラに留まらない「ファンディスク」であることを売りの一つとしています。
しかしながら、今回はこの「おまけミニゲーム」の存在が大問題でした。
結論を言うとSteamの「サウンドトラックDLC」にゲームを含めることはできません。それだけであれば「まあそういう仕様なのね」で済みますが、
問題は上記仕様についてSteamの中の人たちの見解が割れているという点にあります。
顛末を記すと下記のようになります。
1. 我々、ミニゲーム付きサントラをサウンドトラックDLCとしてSteamに登録、レビュー依頼する。
↓
2. Steamの中の人から「ストアページに付属ミニゲームの情報が書かれていません、ストアページに情報の追加をお願いします」と返信が来る
↓
3. 我々、ストアにミニゲーム情報を登録。再度レビュー依頼。
↓
4. レビューに1週間以上待たされる
↓
5. Steamの中の人から「サウンドトラックDLCにゲームを含めることはできません、削除してください」と返信が来る
↓
6. 我々、???となる(1~3のやり取りは何だったのか…。)
ここからは完全に憶測ですが、Steamの中の人でも「ストアページのレビュー担当者」は「ゲーム付きサウンドトラックDLCは仕様上OK」という見解であるが、最終レビュー担当者(?)は「ゲーム付きサントラは仕様上NG」という見解であるということに起因する問題っぽい気がします。
恐らくサウンドトラックDLC自体が相当後発の機能であることもあり、Steamの中の人たち的にも仕様・見解がまだ統一されていない模様です。
「サウンドトラックDLC」をリリースするならば、「ゲームなどのサウンドに関係ないファイルを含めず、音楽ファイルのみ配信する」ことを現時点では推奨します。
(ライナーノーツのテキストファイルは配信可能でしたが、これも本当に仕様上OKだったのかは正直不透明です)
ちなみに、サウンドトラックDLCではない通常のDLCにおいては、本問題は発生しません。好きにゲームなりライナーノーツなりを配信可能です。
本件については、最終的に「普通のサントラ」と「ミニゲーム」を別DLCとして分割し、バンドルパッケージにするという手法で解決しました。
バンドルについては後述します。(こちらにも罠があります)
バンドル作成に失敗したのに数時間後にバンドルが作成される
Steamには「バンドルを作成する」という機能があります。
下記のように、複数のDLCやゲームをまとめて販売し、任意の金額で割引ができるという機能です。
そして下記がSteamworks上のバンドル作成ポップアップウインドウです。
必要事項を入力して「新規のバンドルを作成」ボタンを押すだけなので何も難しいことは無いはずなのですが、何故か「新規のバンドルを作成」ボタンを押すと「BUNDLE CREATION FAILED.~」というウインドウが表示され、バンドルの作成に失敗することがあります。
(この際のスクリーンショットを残すのを忘れました。すみません)
あれーおかしいな、何か入力ミスったかな?と思って入力事項を再確認しつつ、何回かリトライしても結果は変わりません。
当然、バンドル管理のページにも何も表示されません。
4回試行しましたが全部失敗に終わり、10分ほど待ってみましたがバンドル管理ページが更新される気配もないので、途方に暮れて一旦休憩することにしました。
しかしながら、2時間ほど後に再度バンドルの管理ページを閲覧し、「BUNDLE CREATION FAILED.~」発生原因調査をしようと思ったところ、
なんと下記のように作成失敗したはずのバンドルが管理ページに全部表示されているではありませんか。
!?
よく分かりませんが、「BUNDLE CREATION FAILED.~」と表示はされるものの実はその表示は嘘であり、Steamworks内部的にはしっかりとバンドルが作成されており、しかもその情報が管理ページに反映されるタイミングが数時間後である、という現象の模様です…。
結局本件の原因は不明ですが、Steamの管理サーバがたまたま重かった、とか「∀」という文字から始まるのがアウトとかそういうのかもしれません。
ひとまず「BUNDLE CREATION FAILED.~」といったポップアップが出てしまった場合には、数時間待つのが良さそうです。
バンドルを作成後、削除する方法が不明
上記によって、無駄にたくさん作成されてしまったバンドルを削除する方法が分かりません。
バンドルのページのドキュメントを見てみましたが、「バンドルに含まれるアイテムの削除」に関する項目はありますが「バンドル自体の削除」を行うにはどうすればいいかについて書かれておりません。
本件、情報がございましたらご教示いただけると大変助かります…。
価格を変更したい場合に「価格提出ボタン」を押すと再レビューが入る
【注意】この項目に関しては、現象発生時のスクリーンショットを撮り忘れ、かつ同じ操作をもう一回行っても再現しなかったため、現在「再現させるための条件が不明」となっております。
そのため、ワンチャン弊サークルの担当者が疲れによって見た幻覚や、単なる操作ミスの可能性、あるいはすでにSteamworks側でサイレント修正されている不具合である可能性もあります。上記、ご留意頂ければ幸いです。
――――――――――――――――――――――――――――
激ヤバUI落とし穴情報です。
Steamでは、各国においてどのような価格で販売するのかを調整し、Steam側へレビューを依頼する「価格提出」のプロセスがあります。
これは価格を変更する際に毎回実施する必要があり、レビューには1~2日を要します。
この際、「レビュー後、価格の反映を手動で行う」か「価格反映を自動で行う」かを選択することが出来ます。
本件は「レビュー後、価格の反映を手動で行う」を選択した場合に発生します。
「価格反映を自動で行う」を選択した場合には発生しません。
そしてレビューが終わった後、「価格適応ボタン」を押してストアへ価格を反映させる必要があるのですが、この「価格適応ボタン」がとてもわかりにくい位置にあります。
最悪なことに、とてもわかりやすい位置に「価格提出ボタン」があります。
この際、「価格提出ボタン」を間違って押してしまうと、
なんと再度レビュー待ち状態になります。
通った価格情報も破棄され、レビューがやり直しになります。
これによって、価格の変更が少なくとも1日遅れます。
そしてこのレビューをキャンセルすることはできません。
このキャンセルが効かないというのが割と致命的で、例えば何か重要な告知を打って、さあ告知に合わせてストア価格表示を更新するぞ、というところで「価格提出ボタン」を押してしまうととんでもないことになります。
我々は上記をやらかしました。
(↑状況再現のため実験をしてみましたが、何故か現象再現せず…。
ヤバい状況になった時には、ここに緑色のボタンが出現していました。
あと本件とは関係ないですが、「A<?>リース済」とは一体…。)
アーリーアクセスから正式リリースへの移行は、価格変更レビュー状態だと行えない
上記項目からの続きとなります。価格変更レビューを依頼した状態だと、正式リリース状態に移行できません。
ドキュメントには以下のように記載されています。
ランディングページ最上部にある [リリースオプションの表示] をクリックし、ゲームのリリース準備を行います。 [リリース] ボタンを押すと、ゲームのリリース日の更新、ストアページにおける早期アクセス表示の解除、設定したローンチ割引の適用が行われます。
が、「価格提出」ボタンでレビューを依頼した状態だと、そもそも「リリースオプションの表示」や「リリース」ボタンがUI上から消滅します。
事前に「本日正式リリース!」などの告知を打っていた場合に、誤って「価格提出ボタン」を押してしまった場合、どうなるでしょうか。
そう、正式リリースと告知されているのにもかかわらずストアの表記はアーリーアクセス表示のままになってしまいます。
価格提出がキャンセルすることが出来ない関係上、この状態に対して何かアクションを起こすことも出来ません。
一度告知してしまった以上、告知を取り下げることも出来ません。
我々はこれをやらかしました…。
これの致命的な部分は、「正式リリース告知自体は打つことができてしまう」ということです。
ゲーム販売において一番「売れる(=数が出る)」タイミングは、当然ながらリリース直後です。一番数が出るタイミングで、とても残念なことにアーリーアクセス表記・価格のままストアに掲載しており、しかもそれに対する対策が何も取れない状態というのを経験しました。
実質的な「リリース記念値下げセール」となりますが、Steam側にセール情報を登録することで知名度恩恵が得られるローンチ割引の仕組みと違って、マジでただ無為に値段だけが下がっているというのをやらかしてしまいました。
ボタンのクリックを1つミスっただけでこのような甚大な被害を引き起こします。皆様におかれましては「価格」に関連するUIには十分注意いただきますようお願いします…。
リリース予定日を土日に設定することはできない
ドキュメントには特に何も書いてありませんが、リリース予定日付を土日に設定すること自体が出来なさそうです。
上記の仕様により、「土曜日に配信開始して土日で遊んでもらおう」という戦略自体が取れないようになっています。ご注意ください。
本件に関連して、レビュープロセス自体も土日の間は進まない模様です。(恐らく普通にValveの休業日)
そのため、土日にレビューが進む前提でのリリーススケジュールは組まないことを推奨します。
DLCの追加時、DLC名の入力はコピペ推奨
DLCの追加時には、上記ボタンを押して作成をします。
その後、上記のようなポップアップが出現し、DLCの名前を入力することが出来ますが、ここでは「Enterキーを押した瞬間にContinueボタンを押したのと同じ扱いになり、DLCが作成される」という挙動がなされます。
上記の何が問題かというと、例えば漢字のDLC名、「∀」などの記号から始まるDLC名を入力する場合です。
漢字や記号を入力する時、だいたいは「変換したい文字を入力→スペースキーか変換キーで変換候補を表示→Enterキーを押して文字を確定」の順序で入力を行うことが多いと思います。
問題は「Enterキーを押して文字を確定」の操作の部分にあります。
この操作が、上記の「Enterキーを押した瞬間にContinueボタンを押したのと同じ扱いになり、DLCが作成される」という挙動と競合します。
何が起きるかというと中途半端なDLC名のDLCが登録されます。
例を挙げますが、「寿限無寿限無後光の擦り切れ」というDLC名のDLCを登録したいとします。
この際、最初に「じゅげむ」といれて「寿限無」に変換し、Enterキーを入れたが最後「寿限無」という名前のDLCとして登録されてしまいます。
回避策として、「じゅげむじゅげむごこうのすりきれ」まで入れてから変換する、とかDLC名はテキストエディタなどからコピペして持ってくるのを推奨します。
あるいは、記号や漢字を使わないDLC名にする、ですね。
一回作ってしまったDLCを削除するのは手順がめんどくさいので、お気を付けください。
番外:DLCのAppIdをSteamAPIの引数に渡すと本編のAppIdとして認識される
SteamworksのUI話からは外れるので番外となりますが、Steamworks APIの不具合の話です。
どうやら SteamAPI_RestartAppIfNecessary() の引数にDLCのDepot IDを指定しても、本編のAppIdとして認識される模様です。
つまり、ここで本編とDLCのAppIdに応じて処理を切り分ける…的なことをやろうと思っても出来ないということです。
AppIdに頼らない形で本編とDLCを切り分ける手段を取るしかなさそうです。
さいごに
というわけでSteamworksの落とし穴情報とその解説でした。
多分そのうち直るものもあるんじゃないかと思いつつも、全く油断ならないのがSteamworksです。
本記事がセルフパブリッシングしたいと思っている方々のお役に立てば幸いです。
宣伝
弊サークルが最近リリースしたラーメン二郎みたいなシューティングゲーム、「∀kashicverse -Malicious Wake-」はSteamにて絶賛販売中です。
本作は特にラーメン要素があるわけではなく概念的・形而上的二郎構造によって構成されており、過剰な情報量を摂取する悦びに満ちたシューティングゲームと言えます。
概念的二郎を摂取したい方は、是非お手に取って頂ければ幸いです。