我有一种明显的感觉,我又一次过头了。几个月前,我构建了一个系统,可以搜索代码并使用反射进行修改。这很好用,现在我正在尝试重建系统并概括它的某些方面。我想做的一件事是不知道最近计算中可能发生的变化。
例如,假设我正在执行一个马里奥程序并且我们按下一个按钮。游戏的状态发生了变化,但我们不知道如何变化。我想扭转这种效果,这样我就可以回到过去并按下不同的按钮。我的计划是:
- 外化所有可能对它们产生影响的游戏类。存储所有非最终字段的值,包括静态值。
- 使用 extern 写出所有游戏对象。
- 做出改变。
- 使用 extern 写出所有游戏对象(以防我们稍后想跳回这个状态)
- 再次读取更改前的状态。
从表面上看,这里有什么东西会在我脸上爆炸吗?这是个好主意吗?或者一些静态场/奇怪的行为会搞砸我吗?对于外部化,我确实计划通过反射请求所有字段的列表,并按迭代顺序写出,以免遗漏任何内容。
Mods - 我使用标签序列化,因为外部化不是现有标签。希望没关系。
编辑 - 我还不需要局部变量的值,或者堆栈或堆。不过,这可能是稍后需要考虑的 - 特别是在更改之间可能已被破坏的对象的存在/不存在。
本质上,我需要反转一般计算步骤。不知道这是否可能。