我已经开始帮助开发一个开源游戏(基于Cocoa、Obejctive-C、Xcode)。现有的游戏引擎已经设置为允许角色在世界各地奔跑,遇到敌人,当战斗开始时,将使用要攻击的敌人单位对象调用characterObject。这个characterObject有一个默认的攻击敌人的方法。
我想通过扩展这个程序来改进这个设计,允许其他人开发一个combatUnit插件,它将以他们自己的编程方式处理战斗行动。这可以让社区开发出不同风格的战斗,并提出自己独特的游戏风格。
当我开始研究如何构建插件和示例时,大多数示例都使插件与程序其余部分的内部部分相对隔离。并且插件所需的任何数据都将被传递到例程本身。
然而,在这种情况下,战斗单位开发人员可能想要访问现有游戏中的许多外部对象:开发人员可能还想知道附近的任何敌人单位,以避免在战斗中添加任何潜在的东西,并且必须访问几个现有的环境对象来获取数据,角色可能在一个组中,开发人员可能想要访问组信息和每个玩家的数据,以确定他们是否应该进行治疗,等等。由于不知道开发人员的想法,我不可能尝试预测并传递所有潜在的信息供他们使用。
所以,我的问题是:这是一个很好的插件应用程序吗?如果是这样,那么在开发插件时,如何打开其他对象供插件开发人员编写代码呢?
有没有其他方法来解决这个问题?有没有比“插件”更适合让代码访问游戏对象的东西?
感谢您的帮助!
发布于 2010-12-10 15:46:52
这是制作插件的一个很好的例子。作为另一种选择,您可以将新对象直接编译到游戏中,或者使用脚本语言解释器。但是有了这些,你必须解决同样的问题,如何让新的战斗单位访问游戏的内部。
要做到这一点,最干净的方法是定义游戏的接口(作为协议或基类),并将其传递给插件。使用这个对象,插件就可以查询它需要的任何东西。
https://stackoverflow.com/questions/4405432
复制相似问题