作为一个业余爱好项目,我目前正在尝试创建一个基于浏览器的小游戏 - 我认为使用MVC模式对其进行编码是"正确的事",将游戏的"引擎"与演示分开.这将是一个简单的"RPG"游戏,玩家的角色在世界各地与怪物搏斗并收集物品.
我的问题是我被发动机的结构困住了.在目前的设计中,大多数引擎都由"玩家的角色"对象控制 - 有位置,怪物或物品等东西,但它是一个完成大部分动作的角色:旅行,攻击,购买物品等.知道有可能有其他方法来设计这样的引擎,但不知何故我无法弄清楚,所以我在这里要求一些提示或建议.
哦,服务器后端将是php + mysql,如果这在任何方面都很重要.
"但这是一个完成大部分行动的角色:"
对,但是...
首先,将人类用户("玩家")与他们的角色分开.角色不是玩家.
你有大量的对象.地点,被动的东西,活跃的东西(怪物)和角色.他们都互相交流.
你必须完全孤立责任.角色不占主导地位,角色只参与其中.
如果将每个可能的人类玩家动作定义为命令,你会发现它更令人愉快.Command的每个子类都可以更改模型的状态.事情发生了变化,怪物移动,角色移动(角色,而不是玩家.)
拾取或放下它们每个都是Command的子类,它将一个东西从字符移动到位置或位置移动到字符.玩家发出命令; 该命令更新位置,项目和字符.
角色是被动的.事情大多是被动的.地点大多是被动的.Command对象具有更新模型中所有各种事物之间的状态和关联的算法.
如果您想更进一步,每个Command都可以是具有撤销功能和执行功能的Memento.然后游戏的历史就是这些纪念品的历史.