游戏架构: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。
我们目前遇到的问题是我们的主要 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。