引言
正如探险日志名字所表达的那样,该游戏的核心模块是其日志生成系统。而日志生成系统则分为探索和战斗两大块。我的计划便是从战斗模块开始开发。这次开发的是战斗系统的核心,核心开发完后其余的法术系统、策略系统等会一个一个开发并挂载到核心之上。
系统设计
在战斗核心部分,我并不打算模仿探险日志自身回合机制,而是打算模仿Tome4,采用行动点系统。系统会依次扫描每个生物,首先分配点数,然后由该生物进行行动并消耗点数,若有剩余可以继续行动,直到行动点为0或负数为止,然后开始调度下一个生物。另外,如果行动点负值太大,也可能直接跳过该轮。
这种机制的优点在于可以较为简单地实现一轮多动和多轮施法,并且相较传统即时制,对cpu的消耗极少。
模块
战斗核心主要包括入口函数battle Function,时间队列TimeQueue Class,生物Creature class以及其他辅助模块
battle Function
这个函数是战斗系统的入口函数,由于战斗系统最终会挂载在探索系统之下,所以该函数负责的是接受探索系统传来的初始信息,生成战斗报告并返回给上级。由于目前其他部分都还没有设计所以该函数目前只负责初始化一个时间队列,然后调用时间队列生成战斗数据,最后将结果返回。
TimeQueue Class
一开始我只是打算把TimeQueue做成一个类型行动序列的东西。但是后来发现把行动序列单独做成一个小模块就目前而言意义不大,因而最终就做成了一个行动调度器。
该队列的主要入口为run方法。run方法会首先检测是否有一方已经全部被击败,如果没有则判断当前生物是否有行动能力。如果有行动能力则会指令该生物进行行动,最后根据返回的结果生成动作记录并做死亡检测。否则将焦点移动到下一个生物并分配行动点。
Creature Class
生物类代表的是战斗中的所有生物,核心方法为action。action主要是根据战斗局面做出决策选择行动,并将行动结果返回上级,然而决策系统还没开始做,所以目前action是直接调用attack进行攻击