独立游戏《面包女神》开发日志-1-城镇攻占和掠夺
-简介
将世界地图上城镇的基础框架搭好后,下一步便是部队与城镇之间的交互。对于一款(至少在世界地图上)长得特别《英雄无敌3》的游戏来说,首当其冲的便是喜闻乐见的攻城环节。
(配图为网图,非实机)
【基础逻辑】
在世界运行逻辑中,一场战斗是发生在两只部队之间的,因此无论是遭遇战、副本或者攻城战,本质也是两只部队之间发生战斗。区别在于,攻城战的守军拥有防御建筑。这一点作者猜测Hero应该也是这样实现的。
(图为英雄无敌3的遭遇战和攻城战)
【城防】
Hero的防御建筑是通过城市建设进行强化的,经历了这么多年的游戏发展,硬核玩家们肯定不满足于数值上的防御设施,大多数人还是希望自己能灵活地调整城墙、箭塔的摆放位置。于是,前面参考《PVZ》做的建造系统就派上用场了。
(其实在程序老哥眼里,建筑跟兵种都是一样的-.-!)
【战斗】
具体的攻城过程就直接调用战场接口就好啦,剩下的事件就交给战斗控制器去处理。需要的是,只有玩家的战斗才会真正的切入战场,NPC之间的战斗采用的是基于世界时间的持续性的自动战斗,这一点也是参考了现在战略模拟游戏的通常做法,例如《骑砍》的NPC领主之间的战斗,这种做法比起Hero原来的瞬时计算更人性化一些,也更真实一些。
【破城】
当进攻者的部队击败守军之后,目标城镇便会进入一种破城状态。这里作者将破城定义为一种事件,并将事件存储在世界中(事件与城镇对象逻辑分离),用单独的事件管理器去处理事件的产生、业务逻辑运行和销毁
事件类型很清晰地表示了该城镇当前所处的状态,默认被击破的城镇会进入破城状态,此时该城镇的建筑例如客栈、市场等将被禁用,具有队列功能的建筑例如美味工坊、铁匠铺也会停止队列的时序。
此时玩家进入城镇时可以看到破城状态的操作界面,包括一组世界时间控制器、“掠夺”和“占领”选项。同时界面上还会显示一个倒计时,在倒计时结束时城镇将从破城状态中恢复过来(守军防御建筑重置,战斗单位恢复一定比例)。
这里有一个比较有意思的设计是,如果进攻者攻破了一座城镇,未选择任何操作并直接离开,城镇依然会处于破城状态,此时若任何一支其他部队“恰好”经过,同样可以进入城镇,对其进行这样或者那样的操作。
【掠夺&占领&探索】
正如前文图片中展示的那样,作者目前为城镇设计了四种状态,其中破城对应守军被击败后的,城镇任人宰割的状态,剩余的状态也分别有不同的含义。
掠夺状态表示进攻者对该城镇进行一段时间的掠夺,掠夺完成后会按比例夺走目标城镇仓库中的物资,并且有概率对目标城镇的建筑造成损坏(例如建筑等级下降等)。其实一般来说掠夺是一个持续性地行为,物资的增加应该也是断断续续地增加,不过我们也可以解释为,这是部队士兵将物资搬运到一座座马车上,然后统一运出城的过程。
占领顾名思义,就是占领城镇,这当然也需要时间,在占领完成后会更改目标城镇的所属权,当然,这里是本质上是阵营的占领。想真正拥有这座城,还要经过阵营系统的流程。占领过程也会对建筑造成损坏,这很好理解---作为胜利者,你挨家挨户告诉城里的人这里换主人了,肯定会有一些人不服,那这个过程就会涉及到一些说服过程,一不小心弄坏了房子也情有可原。
探索,这是副本的专有操作。副本作为一个逻辑上与城镇类似,但功能上截然不同的地点,是无法被掠夺和占领的,毕竟,正经人谁会去占领一个鸟不拉屎的什么“XXX大墓穴”、“XXX遗迹”呢。这些地方,要说掠夺,掠夺谁呢?所以就安了一个“探索”的名头。当然,副本由于本身是分为许多层的,只有击败了每层的守护者部队才能探索该层。
这种城镇状态的设计,作者个人是比较满意的,不仅能满足目前的功能需求,也为后续的扩展开发提供了可能,例如以后给城镇加一些类似“饥荒”、“瘟疫”的事件等等,算是比较方便。
【事件中断】
除了破城状态,其他状态一般来说都是可以强制中断的。在掠夺&占领&探索时,玩家可以主动离开,去干点别的什么事情,当前这会导致目标城镇状态立即复原。当然,在进行掠夺&占领&探索的部队也能遭到其他人攻击,这会导致事件的暂停,直到击退进攻者或者自己被击败,事件结束---这通常发生在,你偷袭了我的城,正在掠夺或者占领,我快马加鞭回来把你干回去之类的情况中,又或者其他部队辛辛苦苦击败了副本的守卫者,正带着残兵享受胜利果实的时候被玩家截了个胡之类的。
【总结】
总体来讲,城镇与部队的交互基本上承载了本游戏一半的战斗(另一半在野外),所以这一块无论是设计还是实现都是本游戏的重中之重。毕竟作者想描绘的,是一个具有史诗感的大陆,充满浪漫和冒险,然后再看看谁能笑到最后。
暂无关于此日志的评论。