大家好! 👋 如果你曾经制作过基于网格或块的uzzle游戏,你一定知道这个时刻: Everything看起来都正常......玩家做出一个错误的动作...... Suddenly整个关卡变得无法解答了。 这是我在 Unity 6 中制作 Ball Sort Infinity 时遇到的一个最大头痛。 而不是每次出现问题时都修复单个错误,我决定解决问题在架构层面。 我重建了核心系统,围绕着 Clean Architecture,将游戏逻辑、状态管理、验证和UI保持在合适的分离状态。 这些系统是: 🔹 自动死锁检测 分析游戏状态,检测玩家可以永久卡住的情况。 🔹 强健的撤销/重做和提示系统 与UI完全分离,使状态管理更容易维护和扩展。 🔹 可解的关卡验证 在关卡到达玩家之前验证生成的关卡,确保只有经过验证的可解关卡被发布。 🔹 可扩展的架构 目标不仅仅是让游戏工作——它是创建一个可以在不将项目变成一个巨大的互联脚本集合的情况下扩展的基础。 最大区别是什么? 我现在可以在不持续担心破坏其他地方的情况下添加、修改和迭代谜题机制。 而这就是我将架构和系统打包成一个 生产就绪的 Unity 模板 的原因 —— 以便其他开发人员可以跳过从头重建这些系统的周数。 🔥 50% 的启动折扣 如果你正在制作一个谜题游戏,我很好奇其他开发人员如何处理这些问题。 你如何在你的游戏中检测死锁? 是否使用一个专门的求解器/验证器,模拟未来动作,还是通过游戏规则来处理死锁? 并且对于 撤销/重做和游戏状态管理 —— 是否将所有内容放在一个中央状态系统中,还是在游戏控制器内部直接处理? 我真的很想听听其他独自开发者如何解决这个问题。 我特别感兴趣的是我尚未考虑到的方法。 🧩