大家好,
在 Album3D 中,我正在通过 Steam 库使用 Steam Inventory Service 实现虚拟货币的信用系统,但遇到了一个重要的问题。
最初,我没有意识到库存项目堆栈数量是受 16 位值限制的。如果用户最终在一个堆栈中拥有超过 65535 个信用,事情可能会严重损坏,因为数量可能会溢出或其他情况下无效。在信用/货币系统中,这显然是危险的。
我还发现 auto_stack=true 不像我预期的那样行为。假设一个堆栈达到最大大小时,Steam 将自动创建第二个堆栈。然而,在我的使用案例中,这似乎并没有可靠地发生,所以大额信用授予仍然会击中堆栈大小问题。
我的当前解决方案是:
- 将信用货币项目设为
auto_stack=false。 - 保证每个单独的信用堆栈安全地低于
65535。 - 对于更大的信用包,定义多个信用堆栈的捆绑包。
例如,要出售 100000 个信用,我定义捆绑包为两个 50000 个信用堆栈:
"bundle": "5000x50000;5000x50000"
其中 5000 是信用货币项目定义。
然后,在应用程序中,我将所有拥有的堆栈加起来以获取总信用余额,并在需要时消耗多个堆栈中的信用。
在实现 Steam 库中的虚拟货币时是否遇到过这个问题?这是否是推荐的方法,还是您使用不同的模式来处理大额信用/货币余额?
评论 (0)