gpt4 book ai didi

design-patterns - 在游戏开发中处理状态和状态变化的好技术是什么?

转载 作者:行者123 更新时间:2023-12-03 23:37:03 26 4
gpt4 key购买 nike

我是一名经验丰富的游戏开发新手,我制作了一个相当简单但有效的 3D 平台游戏,并且正在寻找使架构更具可扩展性的方法。

在游戏开发中处理状态的好方法是什么?
一个非常天真的方法是拥有多个 bool 值,例如:

time_stopped = True
time_slow_motion = False
level_loaded = True
level_paused = True
level_completed = False

这是非常不灵活的,因为开发人员错误可能导致 time_stopped = Truetime_slow_motion = True同时,这会破坏游戏逻辑。

我正在寻找更好的方法:
class TimeState:
STOPPED = 0
SLOW_MOTION = 1
NORMAL = 2
current_state = 0

def isStopped(self):
if current_state == self.STOPPED: return True

但是我将如何以一种好的方式处理多组状态呢?我可以创建一个 LevelState其中有 LOADED , PAUSEDCOMPLETED状态。但是我如何处理重叠的组,比如 LevelStateTimeState PAUSED应该总是一样的?
关于如何解决状态管理,有没有好的设计模式或好的实践?

处理状态变化的好方法是什么?
我的想法是要么给出状态对象,例如。 LevelState回调函数在任何给定的状态更改时执行 - 或轮询每个游戏循环的状态对象,如 if level_state.changedTo() == LevelState.COMPLETED: doStuff() .有没有更好的方法来处理这个问题?消息队列/事件?我不想将逻辑嵌入到状态对象中。
我也对是否应该同时处理这两种情况感兴趣 changedFromchangedTo事件,以及如果由 changedFrom 触发的逻辑会发生什么在 changedTo之前改变对象的状态逻辑被触发——谁赢了?

我不想要特定于实现/语言的答案,而是关于在架构上明智地思考的好方法的提示。

最佳答案

这是一件很常见的事情,甚至有一种模式:The State Pattern

一开始,这种方法似乎有一些开销,但随着逻辑变得更加复杂,您会看到好处。

关于design-patterns - 在游戏开发中处理状态和状态变化的好技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com