我正在用Perl开发一个RPG库,并希望使每个部分尽可能地可互换。我目前正在创建Map子系统,并将继续创建字符子系统。我应该如何处理角色和地图之间的交互?
$character->move('left'); # Character encapsulates a Map或者类似于
$runtime->moveCharacter('left'); # Runtime encapsulates both Map and CharacterMap看起来不应该是角色的一部分,但在其他方面看起来很尴尬。
另外,我应该如何将地图瓦片和角色外观的图形元素从其底层数据中分离出来?或者在这种情况下,图形方面是其数据的一部分吗?
我知道我过多地考虑了这一点,并希望在不完全过度设计的情况下使这个系统变得灵活。谢谢!
发布于 2011-12-07 17:13:18
第一部分:
视情况而定。如果不看一些你希望人们能够通过你的库实现的游戏的设计文档,你就不能肯定地回答这个问题。如果您需要灵感,Roguelike-Utils有一个全局世界对象,从属比特正悬挂在该对象上。
第二部分:
使平铺成为对象。图形方面只是一个属性。当你将它解耦到足够多的时候,你就知道你做的是正确的,你可以将瓦片和其他东西传递给不同的渲染器,产生(可伸缩的或位图的)图形,roguelike ANSI终端输出,甚至是像ADVENT这样的文本描述。
由于对象不仅封装了哑巴数据(外观),而且还将行为与其相关联,因此您可以很容易地使用流体动力学或温度交互来扩展瓦片系统。
https://stackoverflow.com/questions/8410725
复制相似问题