まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Steamで実績を実装してみたので忘備録として書いておきます。
(書いてる筆者はド素人ですので色々間違っている可能性あります)
大前提としてSteamworks.NETをUnityにインストールしておいて下さい。
インストール方法は
https://ktstg.blog.shinobi.jp/Entry/1011/
で書いています。
当初は実績なんて無くても良いかなーと思っていたのですがゲームリリース後に実績目的で遊ぶ人もいるので実装した方が良いよとアドバス受け実装してみました。
ランキングと比べると実績の実装は簡単なのでやってみても良いと思います。
実装にあたり
Steam実績を実装する(Steamworks側設定編)
Steamの実績をUnityで実装する【Unity】【Steam】
コチラのサイトさんを参考にさせて頂きました。
まずはSteamworks管理画面のデータ&実績から実績を開きます。
実績にはクリアで達成などのオンオフのみで実装できる実績と、100万点とったら実績といった数値データが必要な実績があると思います。
これの数値データが必要な実績で何%まで達成みたいな表示を行いたい時は「データ&実績」のデータ画面でデータを先に作る必要がありますが今回は使わないので書きません。
(上記参考サイトさんで解説されています)
逆にオンオフのみで達成出来る実績の場合はデータを作る必要はなく実績の方だけ作れば良いです。
まずは実績アイコンを作ります。
実績アイコンは256x256のjpg画像が推奨されていますが実際に表示される時は凄く小さく表示されるので最少サイズの64x64くらいで表示されると思って作った方が良いです。
取得していない時のアイコンは取得している時のアイコンをモノクロにした物にします。
こんな風に作りましたが、実際の画面では全然文字が読めませんでした(笑)
実績画面で実績の項目を作っていきます。
新しい実績ボタンをクリックすると実績作成の項目が出てきます。
それぞれの意味は
API名:Unityでプログラムなどから指定する時の名前
進行状況:オンオフのみの実績なら「なし」最小値/最大値も0で良い。何%まで達成の表示を行うときはデータ画面で作成したAPI名を選択して最小値/最大値を入力する
ディスプレイ名:実績の名前。Steamクライアントなどで表示される実績名です。
説明:ディスプレイ名の下に表示させる実績の説明(「ステージ1をクリアした」みたいな感じ)
設定:データを修正できる人を設定
Client / ゲームアプリから更新(基本はコレを選択する)
GS / 自分でサーバーを立ててソコから更新する
Offical GS / Steamゲームサーバーから更新する
非表示?:獲得するまで表示しない(隠し実績)
達成アイコン:実績解除後のアイコン(カラー推奨)
未達成アイコン: 実績解除前のアイコン(白黒推奨)
以上をそれぞれ埋めていきます。アイコンは設定してもすぐに反映されません。途中で一度保存してから再度読み込むと上手くアップロード出来るようです。
@Unityへの実装
まずはスクリプトの最初にusing Steamworks;を記述します。Steamクライアントも起動させておかないとエラーになります。
実績解除の流れとしては
1.SteamManager.Initializedで初期化
あと、すべての実績を解除した時の実績を作りたいなと思ったので
SteamUserStats.GetAchievement("作成したAPI名", out bool);で解除した実績を調べられる(trueだと実績を解除している)ので全ての実績を調べて解除するようにしました。
@実績のローカリゼーション
作った実績を色々な言語にローカリゼーションしたい時はSteamworks管理画面のデータ&実績から実績のローカリゼーションを選択します。
作成したい言語にレ点を入れて保存。
ALL Languagesを選択してローカリゼーションデータをダウンロードします。
ダウンロードしたデータをテキストエディタ等で開きます。
設定したい言語の所が空白になっているので埋めて上書き保存します。
保存したファイルを選択してアップロードすればOK
実績画面に戻ると言語が選択出来るようになっています。
これで上手く出来るはずなんですが自分の場合は日本語だったからか上手く反映出来なくて、結局実績を作成する画面のEditで一つづつ更新しないと駄目でした。
(書いてる筆者はド素人ですので色々間違っている可能性あります)
大前提としてSteamworks.NETをUnityにインストールしておいて下さい。
インストール方法は
https://ktstg.blog.shinobi.jp/Entry/1011/
で書いています。
当初は実績なんて無くても良いかなーと思っていたのですがゲームリリース後に実績目的で遊ぶ人もいるので実装した方が良いよとアドバス受け実装してみました。
ランキングと比べると実績の実装は簡単なのでやってみても良いと思います。
実装にあたり
Steam実績を実装する(Steamworks側設定編)
Steamの実績をUnityで実装する【Unity】【Steam】
コチラのサイトさんを参考にさせて頂きました。
まずはSteamworks管理画面のデータ&実績から実績を開きます。
実績にはクリアで達成などのオンオフのみで実装できる実績と、100万点とったら実績といった数値データが必要な実績があると思います。
これの数値データが必要な実績で何%まで達成みたいな表示を行いたい時は「データ&実績」のデータ画面でデータを先に作る必要がありますが今回は使わないので書きません。
(上記参考サイトさんで解説されています)
逆にオンオフのみで達成出来る実績の場合はデータを作る必要はなく実績の方だけ作れば良いです。
まずは実績アイコンを作ります。
実績アイコンは256x256のjpg画像が推奨されていますが実際に表示される時は凄く小さく表示されるので最少サイズの64x64くらいで表示されると思って作った方が良いです。
取得していない時のアイコンは取得している時のアイコンをモノクロにした物にします。
こんな風に作りましたが、実際の画面では全然文字が読めませんでした(笑)
実績画面で実績の項目を作っていきます。
新しい実績ボタンをクリックすると実績作成の項目が出てきます。
それぞれの意味は
API名:Unityでプログラムなどから指定する時の名前
進行状況:オンオフのみの実績なら「なし」最小値/最大値も0で良い。何%まで達成の表示を行うときはデータ画面で作成したAPI名を選択して最小値/最大値を入力する
ディスプレイ名:実績の名前。Steamクライアントなどで表示される実績名です。
説明:ディスプレイ名の下に表示させる実績の説明(「ステージ1をクリアした」みたいな感じ)
設定:データを修正できる人を設定
Client / ゲームアプリから更新(基本はコレを選択する)
GS / 自分でサーバーを立ててソコから更新する
Offical GS / Steamゲームサーバーから更新する
非表示?:獲得するまで表示しない(隠し実績)
達成アイコン:実績解除後のアイコン(カラー推奨)
未達成アイコン: 実績解除前のアイコン(白黒推奨)
以上をそれぞれ埋めていきます。アイコンは設定してもすぐに反映されません。途中で一度保存してから再度読み込むと上手くアップロード出来るようです。
@Unityへの実装
まずはスクリプトの最初にusing Steamworks;を記述します。Steamクライアントも起動させておかないとエラーになります。
実績解除の流れとしては
1.SteamManager.Initializedで初期化
2.SteamUserStats.RequestCurrentStats();でtrueが返ってくるか判別
3.SteamUserStats.SetAchievement("作成したAPI名");で実績解除
4.SteamUserStats.StoreStats();で解除を反映する(ポコンする)
と言った感じ
実際の実績解除はこんな風に書いています。
と言った感じ
実際の実績解除はこんな風に書いています。
あと、すべての実績を解除した時の実績を作りたいなと思ったので
SteamUserStats.GetAchievement("作成したAPI名", out bool);で解除した実績を調べられる(trueだと実績を解除している)ので全ての実績を調べて解除するようにしました。
@実績のローカリゼーション
作った実績を色々な言語にローカリゼーションしたい時はSteamworks管理画面のデータ&実績から実績のローカリゼーションを選択します。
作成したい言語にレ点を入れて保存。
ALL Languagesを選択してローカリゼーションデータをダウンロードします。
ダウンロードしたデータをテキストエディタ等で開きます。
設定したい言語の所が空白になっているので埋めて上書き保存します。
保存したファイルを選択してアップロードすればOK
実績画面に戻ると言語が選択出来るようになっています。
これで上手く出来るはずなんですが自分の場合は日本語だったからか上手く反映出来なくて、結局実績を作成する画面のEditで一つづつ更新しないと駄目でした。
PR
この記事にコメントする
カレンダー
01 | 2025/02 | 03 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事