200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java中系统撤销对象顺序实例 撤消/重做功能Java的对象序列化

java中系统撤销对象顺序实例 撤消/重做功能Java的对象序列化

时间:2019-02-01 17:23:01

相关推荐

java中系统撤销对象顺序实例 撤消/重做功能Java的对象序列化

游戏编程与“企业应用程序”编程和“webapp编程”没有多大关系.

所以这取决于你正在做什么样的游戏,但你的方法和gaven所以这些票价与游戏状态在“真实”游戏中的保存方式完全无关.性能将非常糟糕,你最终将使用大量的内存和磁盘空间.

像暴雪的魔兽争霸III或微软的帝国时代这样的伟大游戏只会存储重现任何游戏状态所需的用户输入.

这就是他们如何实现超高效的网络传输,即使玩家有数百或数千个对象,这就是他们如何实现微小的保存游戏文件(可用于继续游戏或重放):想要低延迟?简单,只需通过UDP发送玩家的击键和鼠标点击以及这些输入发生的时间.

这与撤消/重做有什么关系?不重要的…

想象一下,自从你的游戏开始以来你有200个用户输入,想要撤消最后一步:你从头开始游戏并输入199个第一个输入.而已.完美的撤消.

当然,您只需在重放这199个步骤时重放逻辑,而无需更新需要更新视图.对于大多数游戏而言,逻辑只占花费总时间的一小部分(大部分时间花在视图中).所以重播这些输入非常快.

去过也做过 :)

现在,如果你想要另一种方式来进行无限制的撤销/重做,那么必须要说一些关于“OO over immutable objects”的内容:我编写了游戏工具编辑器(如地图编辑器),其中包含无限制的撤销/重做.诀窍是只使用不可变对象.然后坚持以前的状态很容易:只是层次结构顶部的对象(‘gamemap239’).

因为你只使用不可变对象,所以“新”游戏地图与之前的游戏地图共享99.9%的对象,因此内存使用率非常低,可以保留大量的状态.

我已经成功地将这个“OO用于不可变对象以实现高效的撤销/重做”,而不是游戏中的商业软件,这真的是一种惊人的技术.

现在它取决于您正在进行的游戏:当然,对于扫雷游戏,您可以使用Swing和常规Java编程技术.但是对于更高级的游戏,常规的Java集合和API以及常规的企业/ webapp / fatclient编程技术根本不会削减它.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。