Steamworks.NET使用講解(附Code) - For C#

如果你還沒有下載SteamAPI
請到"Steamworks遊戲上架教學之前言"文章下載

這篇使用的語言為C#
以下內容會對API方法解說
如果需查看官方API請點此

首先將Steamworks.NET下載解壓縮之後
裡面會有Windows-x86跟x64兩個資料夾
請依你的遊戲環境選擇
將資料夾內的steam_api.dll檔複製到你的遊戲目錄下
(此指的遊戲目錄為debug用的)
然後將Steamworks.NET.dll加到你的專案參考
這樣就完成了初始步驟

記得寫完之後要放到Steam上才能測試
這邊有個小撇步
將寫完含SteamAPI的遊戲版本上傳到Steamworks
再開Steam登入開發人員帳號下載你的遊戲
確定能執行後再將後續更新好的遊戲執行檔
直接覆蓋到Steam你的遊戲目錄下
這樣就省去一直上傳一直Debug的動作
等確定測試完畢後
再上傳新版本到Steamworks

[初始化SteamAPI]
using Steamworks;

if (!Packsize.Test())
{
    //錯誤的Steamworks.NET.dll
}
if (!DllCheck.Test())
{
    //錯誤的steam_api64.dll
}
if (!SteamAPI.RestartAppIfNecessary((AppId_t)480))
{
    SteamAPI.Init();
    //遊戲初始化相關工作
}

上面兩行Test方法是檢查兩個dll是否正確
第三行RestartAppIfNecessary方法會先檢查Steam是否啟動
如果沒啟動就會傳回true、反之則傳回false
480換成你的AppID
這個動作是確保玩家不會繞過Steam直接啟動遊戲
如果你的遊戲是要付費的
Steam還會先詢問玩家是否購買此遊戲

Init方法是初始化Steam環境
到這裡成功運行時
你應該可以在遊戲中呼叫Steam介面

這邊要注意的是
Steam介面他是直接針對視窗繪製畫面
所以確保Init有呼叫到就好
(也是使用Steam功能最重要的步驟)

[取得Steam遊戲語言]
如果你的遊戲有多語言的話
請在遊戲初始化完畢前使用SteamApps.GetCurrentGameLanguage方法
(也可以依遊戲環境來決定遊戲語言變更)
這將傳回玩家啟動遊戲時選擇的語言代碼
有關語言代碼請看此篇(API語言碼)

[取得目前玩家統計]
如果你的遊戲有成就跟統計
請在遊戲初始化完畢前使用SteamUserStats.RequestCurrentStats方法
方法會回傳一個bool表示是否成功
這會取得該玩家的統計資料

[取得玩家其中一項統計]
SteamUserStats.GetStat方法會取得指定的統計資料
參數為:[API名稱],[out 數值]
方法會回傳一個bool表示是否成功

[設定玩家其中一項統計]
SteamUserStats.SetStat方法會寫入指定的統計資料
參數為:[API名稱],[數值]
方法會回傳一個bool表示是否成功
當寫入完畢時使用SteamUserStats.StoreStats方法
將資料上傳至Steam
由於資料是即時顯示的
在測試的時候會很方便

[重設該玩家的所有統計]
SteamUserStats.ResetAllStats方法會重設所有統計資料
參數為:[bool] (表示是否一起重置所有成就)
方法會回傳一個bool表示是否成功
如果參數為true
已解鎖的成就會恢復為鎖定
方法僅作為測試用



以上方法是目前使用過的
其它方法比較相似的應該就沒什麼困難點
像是SteamUserStats類的方法
就只有設定、重置、取得成就跟統計相關動作
重要的是Steam初始化要寫好
(雖然還是沒辦法防破解)
其它功能就需要你自己去研究了

留言