[2025年版] Steam にアップロードする(前編)
Unity でビルドした実行環境を Steam 対応するために行った作業を紹介します。
なお、組織やゲームタイトルを SteamWorks に登録する方法は、今回は紹介しません。
この状態からスタートだと思ってください
この記事では、以下の内容について順を追って説明します。
- Unity プロジェクトに SDK を導入(前編)
- 実行環境(exe)を Steam クラウドにアップロード(中編)
- Steam ライブラリからゲームプレイ(中編)
- 番外編:ローンチ後、開発途中のロムを Steam に登録する(後編)
- Steam で上手くいかない場合(後編)
Unity プロジェクトに SDK を導入
Unity では Steam 公式で使えるライブラリの提供はありません。
有志で公式レベルのライブラリ SteamWorks.NET を使います。
◆ SteamWorks.NET をインポート
Unity の PackageManager > + > Install package from git URL…
を選択し、以下の URL からパッケージを登録します。
https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net#20.2.0
◆ SteamManager.cs をプロジェクトに追加
先ほど SteamWorks.NET をインポートしたプロジェクトに、こちらのコンポーネントクラスを含めてください。
次にヒエラルキーにルートオブジェクト(SteamManager)を1つ作り、SteamManager.cs をアタッチします。
このオブジェクトは自動的に DontDestroyOnLoad に移動し、ゲーム終了まで Steam との通信を続けます。そもそもシーンが1つしかないなど DontDestroyOnLoad が不要の場合、以下の行はコメントにしてもいいかもしれません。
// We want our SteamManager Instance to persist across scenes.
DontDestroyOnLoad(gameObject);
▼ (閑話休題)何をするクラスなのか
このコンポーネントは Steam ライブラリの初期化、起動、監視、終了を司ります。
重要な特徴としては、このクラスを導入するとゲームが必ず購入者がログインした Steam から起動します。
このお陰で「Steam からインストールしたゲームが無料でコピーし放題!」を防ぐことができます。
SteamAPI.RestartAppIfNecessary(AppId_t.Invalid)
AppId_t.Invalid を自分が登録したゲームの AppID にしてください。
AppID が 999999 の場合、コードは次のようにします。
SteamAPI.RestartAppIfNecessary((AppId_t)999999)
▼ クラス内にある Update() について
この中で一定時間ごとにコールする必要のある SteamAPI.RunCallbacks() が呼ばれていますが、TimeScale = 0 にしてしまうと Update が呼ばれなくなってしまうので、コルーチンにするという手もあります。必要に応じて変更してください。
protected virtual IEnumerator Start()
{
if (!m_bInitialized)
{
yield break;
}
while (true)
{
// Run Steam client callbacks
SteamAPI.RunCallbacks();
yield return null;
}
}
▼ steam_appid.txt
Assets/ と同じ位置に、steam_appid.txt を含めます。
このテキストの中には先ほど入れた AppID と同じ数字(例では 999999)を入れておいてください。
▼ ビルド
上記の状態でゲームを実行し、問題がないようであればビルドしておいてください。
ビルドで注意点(Project Settings > Player の設定項目)をいくつかあげておきます。
-
IL2CPP ビルドにしておくこと
Mono だと簡単にゲームロムをハックされます! -
Use Player Log はオフにしておく
デバッグ中はオンでも構いませんが、リリース時は必ずオフにしましょう。
なお、Player Log はC:/Users/[UserName]/AppData/LocalLow/[会社名]/[ゲーム名]/Player.log
として出力されています(Debug.Log も確認できます) -
Build Profiles > Platform Settings > Development Build はオフ
オンにしていると右下に「Development Build」と表示されるので気づくと思いますが、
リリース時は必ずオフにしましょう。
◆ SteamWorksSDK をダウンロード
SteamWorks ダッシュボードの右側に次のような項目があります。
紛らわしいのですが、こちらはビルド環境を Steam クラウドにアップロードするために必要な SDK です。Unity には含めません。
ゲーム開発環境とは別の、わかりやすいフォルダに置いておくといいでしょう。
エクスプローラーの表示を参考に、sdk/tools/ContentBuilder/run_build.bat
を実行しましょう。
私の環境では sdk/tools/ContentBuilder/builder/
がこのようになりました。
後ほど、この中の steamcmd.exe
を使ってビルド環境をアップします。
Discussion