Hey everyone.

最近我研究了一些成功的独立游戏的代码和脚本,发现它们几乎都完全违背标准软件工程规则。它们不遵循 OOP(面向对象编程)和 SRP(单一职责原则),大多数看起来像是高度耦合的意大利面式代码。

以 Hollow Knight: Silksong 为例。主玩家控制器脚本(HeroController.cs)是一个巨大的、高度耦合的类,包含大量功能和特性,明显违背了 SRP。它的几千行代码处理物理、战斗、音频和状态逻辑,全部紧密捆绑在一起,完全违反了单一职责原则(SRP)以及面向对象编程(OOP)的原则。我们在其他成功的独立游戏中也能看到同样的情况,比如 Celeste 的玩家脚本,而 Stardew Valley 则充满了巨大、混乱的脚本。

尽管这些游戏几乎违背了所有“整洁代码”的规则,它们在机械操作上却是完美的,是游戏体验的杰作。

为什么会出现这种情况?严格的架构解耦是否实际上是一个陷阱,阻碍了我们在寻找游戏乐趣和成功的过程中?我作为独立开发者,一直学习那些规则,以为它们能帮助我们写出更干净的代码,但事实却是几乎所有成功的独立游戏并不遵循这些严格的规则。而且,电脑和玩家并不在乎代码是否整洁;玩家在乎游戏是否好玩,电脑在乎游戏的性能。