學海無涯
記錄思考、閱讀筆記與生活觀察的私人空間。於此沉澱,於此探索。
HMAC 請求簽章該簽哪些東西:method、path、query 與 body 的原始 bytes
只簽 body 的 HMAC,換掉 path 或 query 照樣驗過;重新序列化 JSON 再驗,合法請求反而失敗。簽章要涵蓋 method、path、排序後的 query 與 body 原始 bytes,附 Go 1.27 實測。
沒設定就當成零:預設硬上限、four-eyes 門檻與 kill switch 故障方向
上限、門檻和 kill switch 的預設值,決定設定漏掉或來源壞掉時系統會怎麼走。金額超出精度直接拒絕、four-eyes 門檻未設定視為 0、kill switch 讀不到時錢的寫入停下、查詢照常,附 Go 1.27 範例。
礦挖得越快,遊戲越快失衡:把遊戲經濟當成動態系統
每個價格都合理,玩家資產還是可能失控,因為產出、升級和消耗會形成回饋迴路。用差分方程、回饋、延遲與 Monte Carlo 模擬一個採礦經濟,看策略差距與追趕時間,也說明模型的限制。
保底不是把機率調高:用狀態機算抽卡保底與裝備強化
保底和強化退階讓每次抽樣都依賴歷史,要用狀態機和吸收型 Markov chain 才算得準。三套平均成本相近的規則,最倒楣的 1% 玩家差了三倍以上;再談計數器重置、跨池繼承與重送。
掉落率 1%,為什麼挖一百次還是沒有:幾何分布與加權抽樣
1% 掉落率挖一百次,約 37% 的人一個都拿不到,P95 要挖到 299 次。用幾何分布看玩家實際等多久,再實作累積權重加二分搜尋與 alias method,比較兩者的建表與抽樣成本。
同一艘船在 30 FPS 和 144 FPS 開起來不一樣:積分方法與固定步長
遊戲把連續的運動切成一幀一幀計算,更新順序、阻尼寫法和時間步長都會讓結果跟著幀率改變。比較顯式與半隱式 Euler、固定步長累積器、浮點誤差與穿牆,附 Python 實跑數字。
朝向不等於位置:遊戲裡的向量、內積、叉積與座標系
遊戲裡判斷目標在前方還是側面、往哪邊轉、撞牆後怎麼滑,靠的是內積、2D 叉積與座標轉換。用一艘虛構採礦船把每個量代表什麼講清楚,附 Python 實跑結果。