安装KFADEMO.apk即可
直接运行功夫军团.exe,运行时需要保证exe文件与下列文件在同一目录下:
- UnityPlayer.dll
- 文件夹 功夫军团_Data
- 文件夹 MonoBleedingEdge
进入游戏界面后点击单击开始按钮
需要在局域网下进行。
一名玩家作为房主,点击创建游戏。 另一名玩家作为客户,输入房主的ip地址,点击加入游戏。
如果由于公司防火墙等原因无法连接,可以尝试一方用手机开启热点给另一方连接。
拆除对手所有的核心建筑。
点击地图上一个空白方格,在下方操作栏中依次点选想要建造的建筑类型和建筑,在右侧点击建造即可。建议在游戏开始时优先建造资源建筑下的农场和矿场
点击地图上一个科技建筑,在下方操作栏中选择想要研发的科技,点击研发即可。
点击地图上一个兵营建筑,在下方操作栏中选择想要招募的士兵,点击招募即可。
双人对战时,每一位玩家必须严格按照以下顺序执行代码:创建本帧消息 -> 发送本帧消息给对手 -> 接收对手的本帧消息 -> 解析双方消息。具体代码可以在 /Assets/Scripts/Sot.cs 中查看。
所有的技能在 /Assets/Scripts/Skill.cs 中实现,与核心逻辑解耦。
在SkillManager类中提供了CreateSkill() 函数以创建技能。创建技能时,需传入技能名、触发时机列表、触发技能时动作、触发技能条件。游戏初始化时,会将这些技能按照技能名存放在字典skilltable中,还会按照触发时机存放在skilleventtable中。
在游戏运行的核心逻辑中,埋藏了不同的时机,在每个时机都会调用skillmanager.TriggerSkills()函数,获得当前时机下的所有技能,依次判断触发条件,对于满足条件的技能进行触发。
游戏界面的所有操作及显示均在 /Assets/Scripts/InfoBar.cs中,界面显示的刷新频率与后台无关,与当前设备的渲染性能相关。
当玩家执行以下六种操作时,Sot会登记这些操作,并且在下一个网络帧中传给对手:
- 建造建筑
- 取消建造
- 研发科技
- 取消研发
- 招募士兵
- 取消招募
/Assets/Scripts/Players.cs 中,Players::Move() 负责对每一帧进行运算。运算逻辑如下:
- 计算所有单位(unit)的运动,包括士兵的移动、建筑的建造过程、建筑的研发过程、建筑的招募过程、士兵发射的飞行物(projection)的飞行过程。
- 摧毁出界的士兵单位。
- 摧毁击中目标、失去目标或者超出飞行距离的飞行物。
- 摧毁所有死亡的士兵和建筑
/Assets/Scripts/BackGround.cs 中, BackGround::UpdateMist() 负责更新每一帧的战争迷雾。
战争迷雾是宽度为0.1,高度可变的窄条。需要使用战争迷雾的地图范围是中间战场和敌方区域,宽110像素,高5行。由于所有的士兵和建筑的质心只能在格子中间,士兵和建筑的视野为以自身为中心的圆形和矩形的交集,因此每一列最多的迷雾窄条最多被5个可见范围分隔成6段。
维护一个战争迷雾窄条池,容量是1100*6。在每一帧更新时,依次遍历所有友方单位(unit),记录在某一列下的可见区间。遍历结束后,再对每一列的可见区间的起始点从小到大排序,计算出所有的阴影区间即可。
单机游戏开始时,会随机指定AI在本局游戏中的门派。每个门派都有不同的策略,总体而言,策略被分为3个阶段。每个阶段都有一个目标,包括该阶段需要建造的建筑、需要研发的科技、需要招募的士兵。只有完成一个阶段的所有目标后,才会进入下一个阶段。至于这些目标的完成顺序,则是随机而定。详细的代码可以查看/Assets/Scripts/AI.cs。
所有的策划和美术资源均放在Assets/StreamingAssets中,修改数值或者美术资源时不需要在Unity编辑器中进行任何修改,但是需要重新生成项目。