游戏架构:Class 泄漏到几乎所有文件中

Game Architecture: Class leaking into almost all files

我们目前遇到的问题是我们的主要 class GameController 被拉入游戏中的每个后端文件。我们想知道这个问题的常见解决方案是什么。

这里有更多关于游戏架构的信息。该游戏是棋盘游戏,因此由于大约 90-95% 的时间没有发生任何事情,因此游戏设置更像是休息 API。它等待用户提示,当收到时,将消息分发到游戏的各个组件并执行适当的逻辑。没有大的更新循环,只是在提示时执行逻辑。

问题在于,当此消息通过系统级联时,GameController 更像是系统之间的中继点。这是节点相互通信的方式,以便正确更新所有游戏组件。问题是它创建了这个系统,其中所有 new/old classes 都包含一个指向 parentGame 的指针,所以 GameController 无处不在。

是否有任何简单的架构解决方案来避免每个 class 包含指向 parentGame 的指针?这一定是件坏事吗?

一些示例代码:

class GameController {
    bank: Bank
    action: Action
    ...
}
class Bank {
    parentGame: GameController

    constructor(game: GameController) {
        this.parentGame = game
    }
}
class Action {
    parentGame: GameController

    constructor(game: GameController) {
        this.parentGame = game
    }
}

我认为这不一定是坏事,但您可以通过将其包装在中间的某种事件机制中来稍微清理一下 - 换句话说,pub/sub可能会给你一些你想要的解耦。

它不一定是通过外部消息服务进行通信的任何东西 - 只会引入不必要的开销。我想到了Observer Pattern