我正在使用Perl中的RPG库,并希望使每个部分尽可能互换。我正在创建Map子系统,并将继续使用Character子系统。我该如何处理角色和地图之间的互动?
$character->move('left'); # Character encapsulates a Map
或类似
$runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character
看起来地图不应该成为角色的一部分,但看起来似乎很尴尬。
另外,我应该如何将地图图块的图形元素和角色的外观与其基础数据分开?或者在这种情况下是数据的图形方面部分?
我知道我正在过度思考这个问题,并希望在不完全过度设计的情况下使这个系统变得灵活。谢谢!
答案 0 :(得分:1)
第一部分:
取决于。如果没有看到一些您希望人们能够通过您的图书馆实现的游戏设计文档,我们无法肯定地回答这个问题。如果你想要灵感,Roguelike-Utils有一个全局的World对象,依赖位正悬空。
第二部分:
将图块设为对象。图形方面只是一个属性。你已经知道你正确地做到了这一点,你已经将它解耦到足以将瓷砖和其他东西传递给不同的渲染器,从而产生(可缩放或位图)图形,roguelike ANSI终端输出甚至像{{3 }}
由于对象不仅封装了哑数据(外观),而且还将行为与其相关联,因此您可以使用流体动力学或温度交互轻松扩展切片系统。