在groovy中序列化闭包

ram*_*ami 5 groovy serialization closures

我正在Groovy开发游戏,我正在考虑广泛使用闭包来使架构更清洁.例如,要实现状态效果(例如中毒),Player对象将具有执行每个游戏回合的闭包列表.保存游戏时必须将这些序列化.

将闭包存储在需要序列化的对象中通常是个好主意吗?或者我应该选择更传统的架构(例如存储StatusEffect对象列表)?

tim*_*tes 4

拥有一个执行每个游戏回合的闭包列表听起来是一个非常好的主意:-)

序列化闭包是完全可能的。从 Groovy 1.8.5 开始,它变得更容易,因为这两种方法dehydraterehydrate添加到闭包中(以便可以在序列化之前删除owner,thisObject和)delegate

但我对保存数据的本机 java 序列化有问题。对于在系统之间发送短暂的数据,它可能很棒(但即便如此,我也会考虑协议缓冲区thrift

考虑一下如果您需要更新游戏会发生什么?如果影响中存在错误poisoned,那么每个在其保存文件中使用有错误的中毒关闭进行保存的用户都将保留该错误,直到它消失。在多人游戏中,人们也有可能操纵他们的保存游戏文件来赋予自己意外或不需要的能力(因为能力本身的功能将存储在文件中)。我可以看到操纵毒药影响,因此它会增加生命值而不是消除它们可能是有益的;-)

简而言之,我想我要说的是,我会写出一个字符表,其中包含影响用户、库存、分数等的事物的 ID,然后在读入文件时检查并应用闭包。