doclib\hspsw.txt » Plain Format
------------------------------------------------------------------------------
HSPSW ver3.6 REFERENCE MANUAL HSP : Hot Soup Processor
HSP拡張拡張DLLリファレンス copyright 2005-2020 (c) onion software
------------------------------------------------------------------------------
・はじめに
このDLLは、Hot Soup Processor ver3以降とともに使用することで、
STEAMWORKS SDKが持つSteam連携機能を利用可能にします。
HSPSWを使用することにより、以下の機能がサポートされます。
STEAM実績の取得・解除・再設定
STEAMステータス値の取得・設定
・使い方の概要
HSPSWを使用する場合は、スクリプトの先頭に必ず「#include "hspsw.as"」
という行を追加してください。以上で、HSPの機能が拡張され、このリファレンスで
説明をしている命令を使用することができるようになります。
HSPSW.DLLは、必ずSTEAMがインストールされている環境で使用してください。
実行時には、HSPSW.DLLと同じフォルダに、以下のファイルを配置する
必要があります。
steam_api.dll STEAMWORKS API DLL
sdkencryptedappticket.dll STEAMWORKS SDK 付属DLL
これらのファイルは、STEAMWORKS SDKのファイルに含まれています。
steamworksのページ( https://partner.steamgames.com/ )からダウンロード
することができるSDKパッケージ(steamworks_sdk_???.zip)内からファイルを
コピーして使用してください。
DLLは、アーカイブ内の以下のフォルダに含まれています。
/sdk/public/steam/lib/win32/sdkencryptedappticket.dll
/sdk/redistributable_bin/steam_api.dll
・事前の準備
このプラグインは、STEAMWORKS SDKの機能を呼び出します。
最初に、STEAM及びSTEAMWORKS SDKについてのドキュメントを参照し、
仕組みについて理解をしておいてください。
自身のアプリで使用する際には、アプリIDと実績・ステータス等を
あらかじめSTEAM側で設定しておく必要があります。
このプラグインサンプルでは、STEAMのサンプルゲーム「Spacewar」
(APPID 480)を使用してテストを行っています。
アプリIDは、「steam_appid.txt」ファイルで指定されています。
自身のアプリでテストする場合は、テキストエディタ等で、
「steam_appid.txt」の内容を修正してください。
「steam_appid.txt」は、必ずHSPSW.DLLと同じフォルダに配置して
おいてください。
・実績テーブル
STEAMの実績を実装する場合は、以下の手順が必要になります。
1. Steamworksアプリ管理の実績の設定ページで実績を設定する
2. HSPSW.DLLプラグイン上で実績テーブルを作成する
3. 実績テーブルの最新情報をリクエストする
4. 実績の取得・解除を行う
HSPSW.DLLプラグイン上で作成するコードは、2〜4になります。
1つの実績が持つデータは、以下になります
API Name : 呼び出し用文字列(英文字列)、AchievementIDとも呼ばれます。
Display Name : 表示される実績の名前(UTF-8文字列)
Description : 表示される実績の説明(UTF-8文字列)
あらかじめ、Steamworksアプリ管理のページで設定を行ってください。
最も重要なのは、API Nameで「ACH_WIN_ONE_GAME」などの文字列で
管理します。必ず実績ごとに異なる文字列を指定する必要があります。
実績テーブルは、HSPSW.DLL内で実績の情報を蓄積するための
メモリエリアです。実績の情報取得を行う際にあらかじめ作成しておく
必要があります。
実績テーブルは、自動作成と手動作成の2通りの方法で作成できます。
自動作成は、ゲームに設定された実績のリストをすべて登録します。
これは、steamset_achievement命令によって行うことが可能です。
通常は、実績テーブルを自動作成しておいて問題ありません。
手動作成する場合は、steamset_max命令でテーブルの最大数を指定した
後に、steamreg_achievement命令でAPIKEYを登録していきます。
実績テーブルが作成できたら、steamreq_status命令により最新の情報を
取得してください。steamreq_status命令は、単純にサーバーに取得の
リクエストを行うだけなので、実際にデータを受け取るまで待つ必要が
あります。
フレームごとに、steamupdate命令を呼び出して、常にSTEAM APIの
状態監視と更新を行っておいてください。
リクエスト中は、steamupdate命令で取得されるflag値が、通信中の
ステータス(STEAM_GETSTAT)になっています。
これが、準備完了のステータス(STEAM_READY)になれば、正しく
実績テーブル及びステータスが更新されたことを示します。
実績テーブルを取得後、以下の操作が可能です。
steamget_achievement命令により実績の状態を取得できます。
steamget_achievementstr命令により、実績の文字列データを取得できます。
steamunlock_achievement , steamunlock_achievementkey命令に
より、実績を解除することができます。
steamclear_achievement , steamclear_achievementkey命令により
実績をクリア(解除前に戻す)することができます。
実績のクリアは、テスト段階でのみ利用可能です。
実際のアプリ上ではサポートされないのでご注意ください。
実績の解除は、必ずアプリケーション上で実装する必要があります。
また、実績解除を行った場合は、直後にサーバーへの通信が行われます。
steamupdate命令で取得されるflag値が、通信中のステータス(STEAM_GETSTAT)から
準備完了のステータス(STEAM_READY)になることを確認するようにしてください。
・ステータス値(STEAMゲームデータ)
STEAMのゲームデータ読み書きを実装する場合は、以下の手順が必要になります。
1. Steamworksアプリ管理の設定ページでゲームデータを設定する
2. 最新情報をリクエストする
3. ステータス値の取得・設定を行う
ステータス値は、Steamworksアプリ管理の設定ページで設定されるゲームデータのことです。
整数値(int値)、または実数(float値)をサーバーに保持しておき、アプリケーションから
数値の更新を行うことが可能です。
ゲームデータは実績と結びついていて、ゲームデータ値をもとに実績を解除したり
実績の達成度を、ゲームデータをもとに算出するなどで使われます。
これらの定義は、すべてアプリ管理の設定ページで行います。
ステータス値は、実績テーブルとセットで管理されています。
steamreq_status命令により、サーバーから最新のデータを取得した際に
ステータス値も更新されます。
ステータス値の取得は、steamget_status、steamget_statusf命令を
使用します。(float値の場合は、「f」の付いた命令を使用します)
ステータス値の設定は、steamset_status、steamset_statusf命令を
使用します。(float値の場合は、「f」の付いた命令を使用します)
ステータス値を設定した場合は、直後にサーバーへの通信が行われます。
steamupdate命令で取得されるflag値が、通信中のステータス(STEAM_GETSTAT)から
準備完了のステータス(STEAM_READY)になることを確認するようにしてください。
まとめてステータス値を設定する場合は、1回ごとに通信を待つ必要は
ありません。
例:
steamset_status "NumGames",99
steamset_statusf "MaxFeetTraveled",1.1
repeat
steamupdate flag
if flag=STEAM_READY : break
if flag=STEAM_ERROR : break
loop
・ランキング(Steamランキング)
ランキング(Steamランキング)は将来のバージョンで提供される予定です。
・命令一覧
steaminit STEAM APIの初期化
steambye STEAM APIの終了
steamupdate STEAM APIの更新
steamset_max 実績テーブルの初期化
steamreq_status ステータス取得リクエスト
steamset_achievement 実績テーブル自動設定
steamreg_achievement 実績テーブル設定
steamget_achievement 実績テーブル値取得
steamget_achievementstr 実績テーブル文字列取得
steamunlock_achievement 実績の解除
steamunlock_achievementkey 実績の解除
steamclear_achievement 実績のクリア
steamclear_achievementkey 実績のクリア
steamset_status ステータス値の設定
steamset_statusf ステータス値の設定
steamget_status ステータス値の取得
steamget_statusf ステータス値の取得
・命令の詳細
steaminit STEAM APIの初期化
STEAM APIの初期化を行います。
最初に1回だけ実行してください。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
ネットワークの接続ができない場合や、STEAMが起動されていない
場合はエラーになります。
steambye STEAM APIの終了
STEAM APIの終了処理を行います。
プログラム終了時に自動的に呼び出されるので、
通常は実行する必要はありません。
steamupdate var STEAM APIの更新
var : flag値が代入される変数
STEAM APIの更新処理を行います。
ここで、STEAMからの情報取得や、通信の処理を行います。
一定時間ごとに呼び出す必要があります。
通常は、メインの描画フレームループ内などに入れてご使用ください。
実行後にflag値が指定された変数に格納されます。
flag値の内容は、以下の通りです。
ラベル | 値 状態
------------------------------------------------------
STEAM_NONE | 0 未初期化の状態
STEAM_ERROR | 1 エラー状態
STEAM_READY | 2 待機状態
STEAM_GETSTAT | 3 リクエスト送信中
リクエスト通信などを行っている最中は、flag値がSTEAM_GETSTATに
なっています。必ず、STEAM_READYに戻ることを確認してください。
何らかのエラーが発生した場合は、STEAM_ERRORとなります。
その場合は、再度リクエストを行うなど適切な復帰処理を
実装してください。
steamset_achievement 実績テーブル自動設定
実績テーブルを自動設定します。
実績テーブルは、あらかじめ必要な実績の情報を蓄積するための
内部エリアです。
この命令により、ゲームに設定された実績のリストを自動的に
実績テーブルに登録します。
手動で実績テーブルを設定する場合は、steamset_max及び
steamreg_achievement命令を使用してください。
実行後に自動設定された実績の数がシステム変数statに格納されます。
システム変数statが0の場合は、設定されなかったことを示します。
steamset_max p1 実績テーブルの初期化
p1 (0) : 実績テーブルで管理される実績の数
実績テーブルを手動設定するために初期化を行います。
p1で実績テーブルで管理される実績の数を指定します。
以降は、steamreg_achievementで任意の実績テーブルを設定する
ことができます。
steamreg_achievement index,"APINAME" 実績テーブル設定
index (0) : 設定する実績のインデックス(0〜)
"APINAME" : 設定する実績のAPI Name
実績テーブルを手動で設定します。
indexで0から始まる実績のindex値を指定します。
"APINAME"で、あらかじめ設定されているAPI Nameを指定します。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
steamreq_status ステータス取得リクエスト
STEAMサーバーから実績・ステータス値の最新情報を取得する
リクエストを行います。
この命令実行後は、サーバーへの通信が行われます。
steamupdate命令で取得されるflag値が、通信中(STEAM_GETSTAT)から
準備完了(STEAM_READY)になることを確認するようにしてください。
例:
steamreq_status
repeat
steamupdate flag
if flag=STEAM_READY : break
if flag=STEAM_ERROR : break
loop
steamget_achievement var, index 実績テーブル値取得
var : 結果が代入される変数
index (0) : 取得する実績のインデックス(0〜)
実績テーブルに設定された実績解除の情報を取得します。
varで指定された変数に整数型で結果が代入されます。
実績解除の情報は、以下の値になります。
-1 : 実績解除されている
0 : 実績解除されていない
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
steamget_achievementstr var, index,type 実績テーブル文字列取得
var : 結果が代入される変数
index (0) : 取得する実績のインデックス(0〜)
type (0) : 取得する値のタイプ
実績テーブルに設定された情報を取得します。
varで指定された変数に文字列型で結果が代入されます。
取得する値のタイプ値は、以下の値になります。
0 : API Name
1 : Display Name : 表示される実績の名前(UTF-8文字列)
2 : Description : 表示される実績の説明(UTF-8文字列)
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
steamunlock_achievement index 実績の解除
index (0) : 実績テーブルのインデックス(0〜)
指定された実績を解除します。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamunlock_achievementkey "API Name" 実績の解除
"API Name" : 実績のAPI Name
指定された実績を解除します。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamclear_achievement index 実績のクリア
index (0) : 実績テーブルのインデックス(0〜)
指定された実績をリセット(解除前の状態に戻す)します。
実績のクリアは、テスト段階でのみ利用可能です。
実際のアプリ上ではサポートされないのでご注意ください。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamclear_achievementkey "API Name" 実績のクリア
"API Name" : 実績のAPI Name
指定された実績をリセット(解除前の状態に戻す)します。
実績のクリアは、テスト段階でのみ利用可能です。
実際のアプリ上ではサポートされないのでご注意ください。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamset_status "API Name", p1 ステータス値の設定
"API Name" : ステータス値のAPI Name
p1(0) : 設定するステータス値
指定されたステータス値を整数で設定します。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamset_statusf "API Name", p1 ステータス値の設定
"API Name" : ステータス値のAPI Name
p1(0) : 設定するステータス値(実数)
指定されたステータス値を実数で設定します。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
この命令実行後は、サーバーへの通信が行われますので、
正しく更新が行われることを確認してください。
steamget_status var, "API Name" ステータス値の取得
var : 結果が代入される変数
"API Name" : ステータス値のAPI Name
指定されたステータス値を取得します。
結果は、varで指定された変数に整数型で代入されます。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
steamget_statusf var, "API Name" ステータス値の取得
var : 結果が代入される変数
"API Name" : ステータス値のAPI Name
指定されたステータス値を取得します。
結果は、varで指定された変数に実数型で代入されます。
実行後に結果がシステム変数statに格納されます。
0ならば正常終了、それ以外はエラーが発生したことを示しています。
・更新履歴
2018/09/30
最初のバージョン。
・注意点
HSPSW.DLLは、HSP3.EXEと同時に使用されるプラグインファイルです。
使用するHSPは、ver3.0以上をお使い下さい。ver2.61やそれ以前のHSPには
対応していませんのでご注意下さい。
EXEファイルを作成した場合でも、HSPSW.DLLをEXEファイルと同じディレクトリ
に置かないと動作しません。また、packfileにDLLを追加することはできません。
・ライセンスおよび連絡先
ユーザーがHSPを使って作成したオリジナルのソフトウェア(実行ファイル)の
権利は、それを作成したユーザーに属します。
ライセンスはHSPと同様にBSDライセンスになります。
有償・無償を問わずHSPSW.DLLを自由に配布することができます。
ユーザーが作成したオリジナルのソフトウェアに対してonion softwareが著作権を
主張することはありません。
onion softwareは本プログラムによって生じた、いかなる損害についても
保証いたしません。自己の責任の範囲で使用してください。
HSPSW.DLLは、Microsoft Visual Studio 2017でコンパイルされて います。
-------------------------------------------------------------------------------
HSP users manual / end of file
-------------------------------------------------------------------------------