首先,要感谢 Mega Crit 对反编译/修改(modding)的支持。
我很喜欢阅读成功的游戏的代码,看看它们如何解决“真实世界”的问题。当我阅读到 Mega Crit 的 Slay the Spire 2 (Godot/C#) 的时候,我发现其设计有很多简洁(有时令人发笑)和高效的解决方案。尤其是当它涉及 netcode 的时候。
一些技术上的收获:
- C# vs GDScript: 代码库几乎完全是 C#(~239k 行) vs 仅有 ~1k 行 GDScript。
- 视觉效果: 该游戏中Necrobinder 的骷髅动画(我很好奇它是如何工作的)是一个用自定义着色器制作的混乱的图案和噪音纹理。
- 网络: 由于游戏现在支持多人模式,我想检查一下 netcode。因此他们使用
Decimal类型实现了整个伤害/阻挡/能量管道的逻辑,以防止不同硬件上发生浮点不一致。他们还使用了一个StableShuffle方法,该方法在打乱顺序之前首先对数组进行排序,以确保每个客户端都获得完全相同的卡牌顺序。对于打乱,本团队甚至使用了Fisher-Yates算法。 - QA 自动化机器人: 他们有一段名为
AutoSlayer的模块,是一个无界面自动玩家,它使用“傻瓜”式的 RNG 决策(事实上这是一个天才的解决方案)。它是设计来找到软锁、glitch、bug、不一致问题等。 - 指导 RNG(随机数生成器): 我还要分析了
Fisher-Yates算法以及他们如何处理“一次玩家体验”(硬编码地图序列)等。有手填充卡片的过程。在牌类游戏中,这是一个非常重要的东西。 - “BadWord Checker” : 可以看到,有 570 多种包含骯脏语言的词汇 entries 呃呃 :]
更多内容在视频中:
评论 (0)