2019年2月15日
游戏功能基本都完成了,游戏数值是需要后期慢慢调试,但是包括视野、移动范围、还击机制是确定游戏基调的元素,应当首先确定下来
视野机制:一般飞船的视野要小于它的武器射程,以为在广阔的宇宙空间搜索敌机是非常困难的,但是友军视野可以共享,已经被友军发现的飞船可以被友军攻击到,这样玩家可以利用飞船前后排布阵来有效的攻击对手。飞船移动范围一般是视野的一半,保证每次移动都在视野之内
还击机制:飞船收到攻击时会对攻击方用默认武器还击,如果未在视野内则无法还击,如果超出了默认武器的射程也无法还击
控制区域机制:飞船周围的一格范围是飞船的控制区域,进入对方控制区域的时候无法进行移动和攻击,且控制区失效,在下一个回合恢复移动和攻击,直到脱离控制区时,自己的控制区重新恢复,这样导致双方在冲击对方阵型时都需要付出很高的代价。
2019年8月10日
重新捡起了这个游戏,这是一个从初中时候就萌生的创意,希望能够完整的做下去。
重读了游戏代码和demo,依然还有几个重点问题:
- 显示问题:应该改为,鼠标左键点击选中后显示移动范围以及攻击范围,鼠标悬停敌方时显示预计的伤害数值
- 地图问题:地图改成六边形更美观
- 伤害计算问题:计算逻辑错误,还要改动,再添加一个击毁效果
- 胜利、失败条件判定
打算最近大改一下操作方式,然后做一个更美观的关卡
2019年8月13日
这两天完善了了一些功能
- 显示移动范围
- 显示可攻击的目标
- 改正了伤害计算逻辑,增加了判定条件确保正确
- 增加了点选信息显示
- 更改了操作方式,修改了可点击区域,以防和ui冲突
稍微研究了关于地图变更,但是涉及到距离计算和点选问题,暂时不做调整,未来修改地图可以在显示上入手
操作方面可以进一步简化,增加一个持续选中的功能
更优化目标选择,增加玩家操作效率
移动范围显示和攻击目标显示
2019年8月15日
更优化目标选择,增加玩家操作效率
新增了一个变量来管理目标选择,实现了更优化的操作方式
可以连续攻击和移动,步数消耗完时结束显示
右键撤销选择,中键按住移动
下一阶段的工作是制作敌方控制AI以及完善游戏规则机制
完善还击机制、占领机制等
增加各种地形功能
增加释放技能,以及不同的攻击,攻击距离应当加到攻击函数中单独分析
战斗力计算公式设计:
战斗力为攻击力、生命值和技能的综合评分,各项数值占不同的权重
战斗力数值应较准确地反映该战舰的能力
设计更全面的数值系统,增加护甲穿透
2019年8月16日
AI系统设计
基本思路是给每个格子打分,然后前往最高分数的格子,之后同理进行攻击判定
最简单的基础AI追击敌人:遍历当前移动范围内的格子,如果有敌人,则进入攻击敌人判定,如果没有敌人,搜索(视野内)最近的敌人,移动到离敌人最近的格子;攻击判定时,如果有多个敌人在射程内,则给预期伤害打分,如果能破盾、破甲或击毁则加更多分;设计一个仇恨机制,优先攻击最近或战斗力最高的敌方
AI的设计分成移动和攻击两部分,移动有追击、拦截和远离、据守等等,攻击则是优先最近、优先最强、伤害优先等等,不同组合可以有不同的ai
需要一个总的ai管理器,在敌方回合时依次进行移动,给每个战舰分配AI
2019年8月24日
需要一个统一的函数来控制飞船移动、攻击,并配合镜头移动来体现AI操控
开发过程中要考虑后续的扩展方法,而不是以当前的简便出发,否则会使后面的开发更困难
设计了一种全部攻击的AI,但是没能很好的适配原有的函数和机制
并且在飞船被摧毁时,容易出现bug,需要改进飞船被击毁时的逻辑
2019年8月25日
战斗功能全部完成,使用链表完全是给自己找了个麻烦,删除修改都不方便,
添加各种音效,以及AI的操作停顿效果,
增强视觉效果,如选中状态高亮等
增加伤害动画,以及战斗和还击分步进行
增加飞船攻击移动的动画,并且配合音效
2019年8月28日
添加了音效
下一步增加飞船的移动逻辑
重读了一下以前的代码,发现之前留的逻辑还是不错的,改了改把效果都完美实现了
学习了一下list的用法,准备明天修理一下list的功能
发现了一个敌军AI的bug,只要我方飞船移动了,ai就不能攻击新位置的飞船,原因是我存储的飞船创建时的单元格,单元格本身是不会随飞船移动的,应该修复为直接存储飞船数据,并在飞船数据中加上坐标,和单元格显示中的坐标同步
下一步再加上视野锁定机制
2019年8月29日
考虑到AI算法的简洁,决定还是取消视野机制,把舰船射程调整为与移动范围相同,后期如果制作战争迷雾的话,可以考虑把视野机制加回来
在知乎上读了一些关于ESC编程模式的文章,感觉很有启发,数据和系统分开执行,系统内包含所有的方法,这样更简洁
根据这个修改了几处之前的设计,把之前的链表都调整好了,而且保证数据同步
脱离战斗的功能也做好了
接下来重点弄一下AI控制
2019年8月30日
移动的脚本控制写好了,首先是一个锁定敌人的脚本,分析敌人的战斗力和位置,选出威胁最大且最近的为目标,向其移动,之后移动到哪个适合的位置,分析双方的血量以及敌人的射程,自己的射程
AI开发的难点在于调整参数,什么样的分析能准确的反映战场情况,不同的参数也会变成不同的风格,如果靠自己手动实验的话很难得到满意的结果,所以现在有很多很流行的机械学习神经算法什么的,来开发AI
2019年8月31日
通过调整简化各个参数,AI控制功能已经完美实现啦
首先是线判定目标,以距离为主,优先攻击血量比例低切剩余行动点低的目标,之后向目标移动,优先是移动到可以攻击的范围,并尽量保持在对方攻击范围外
制作一个方向键控制镜头,优化敌方回合的镜头移动
暂无关于此日志的评论。