2023年4月28日 星期五

利用Steam統計來實作Steam成就

Steamworks有提供統計功能, 讓開發者可以便捷的將玩家遊玩的數據紀錄下來(ex: 破關次數、通關時間, etc...)

此功能同時也能連動於Steam成就, 也就是可以實現"當玩家的某個統計數據達到某個值後, 解鎖某個成就"

應用此機制, 開發者可以於程式中只實作統計紀錄, 將資料儲存、成就達成判斷、和成就解鎖這些事交給後台

下面將說明如何實作:

後台設置

本篇假設開發者已於Steamworks建立應用程式
1. 從Steamworks的主控台選擇要設置的應用程式, 進入其 技術工具->編輯Steamworks設定 頁面
2. 進入 統計與成就->統計 頁面, 新增統計欄位, 設置API名稱等資料
3. 進入 統計與成就->成就 頁面, 新增成就欄位, 設置API名稱等資料
4. 於成就欄位中的 進度數據 一欄選擇要參考的統計API
5. 將解所成就的條件值設定於最高欄位, 當參考的統計API數值達到其以上時, 即解鎖成就
(比如你希望玩家的T1_COUNT達到10以上實獲得成就, 就設定10)
(筆者一開始搞錯設定在最小值, 最高沒設定, 結果就造成了悲劇)

6. 發佈變更使設定生效

程式實作

本篇是於Unity中使用Steamworks.NET來實作, Steamworks.NET的導入與初始化不於本篇贅敘, 直接進入API使用環節
1. 使用SteamUserStats.SetStat, 設定值於指定的統計API
2. 如希望在玩家能即時得到成就解鎖, 設定完Stat後要呼叫SteamUserStats.StoreStats, 否則會在關閉程式時才會把資料傳給後台

2022年9月8日 星期四

[雜記]搬Discord bot到Azure上

 原本是把Discord bot放到Replit上跑, 不過最近常遇到Replit上還在跑但bot已經下線的情況, 即使重新執行了、也沒報錯, bot還是沒有上線的奇怪情況


經過友人的指點, 才知道這是類似429 too many requests的問題, 是由於共享ip被用太多而造成的, 只能透過kill 1之後重新執行來換ip解決

後來實在太頻繁發生了, 於是就有了把bot搬到其它雲端的想法, 後來就決定試試搬到Azure
不過畢竟對server不熟, 花了好多時間採坑才弄好, 特此紀錄

2022年8月25日 星期四

[Discord]機器人的的login與接收訊息/反應(discord.js:14.3)

 最近又開始寫起Discord機器人, 用的discord.js是14.3的版本, 跟上次寫的時候用的12.3版有一些差異, 於此記錄一下


Login

12.3的login:
const { Client } = require('discord.js'); const client = new Client({ partials: [/*需要的partial字串, ex:'CHANNEL'*/] }); client.login(/*機器人的token*/);

14.3的login:
const { Client, GatewayIntentBits, Partials } = require('discord.js'); const client = new Client({ intents: [/*需要的GatewayIntentBits列舉, ex:GatewayIntentBits.Guilds*/], partials: [/*需要的Partials列舉, ex: Partials.Channel*/] }); client.login(/*機器人的token*/);

2021年3月15日 星期一

[Unity]Game Window的Aspect ratio與Fixed Resolution

Game Window是Unity編輯器中用來顯示玩家視角的視窗,常用來在編輯器中檢視run time時玩家的視角。

其左上有一欄位為調整該視窗顯示用的解析度或長寬比,預設是Free Aspect(不固定比例),意即

2020年10月4日 星期日

[Unity]In-App Purchasing使用教學-Android@Google 篇

In-App Purchasing是Unity提供的跨平台IAP服務

本篇將介紹如何使用In-App Purchasing設定到Google Play Developer Console的商品

本篇教學軟體環境如下:

2017年10月8日 星期日

[Unity]Resources.Load效能測試

儘管官方自己都說不建議使用Resources資料夾, 但是在能取代其便利性的資源載入方案出現前, Resources資料夾仍是我們有快速開發需求時的好朋友

我們使用Resources資料夾內資源, 常用步驟為:

2017年9月9日 星期六

[Unity]物件 顯示/隱藏 之簡易效能評比

我們要在Unity控制物件於畫面中的顯示/隱藏時, 主要方法有:
  • 使用GameObject.SetActive直接開關整個GameObject
  • 開關GameObject上的Render
  • 將GameObject移進/移出畫面