基于兴趣开发的策略战棋游戏开发日志(10-13)

作者:mioku
2024-08-31
2 0 0

前情回顾

宏大的计划目标是要制作一款策略玩法类似(欧陆风云/十字军之王),同时通过战棋玩法表现局部战略的游戏!

首先必须重新描述一下现在的开发目标:

在最早的时候,我的开发目标是制作一个策略模式类似(欧陆风云/十字军之王),用 SRPG 玩法表述一场战役的大策略与局部战略并存的游戏。很可惜,我要反悔了。大战略和 SRPG 在玩法上的缺乏很强的关联感,反复权衡以后,开发目标将会以 SRPG 为重心。策略内容有了新的想法,会在之后阐述。

游戏概述:

背景 塔林吉亚王国曾盛极一时,然而由于近十年的内战与外部介入,王国已然四分五裂。首都【洛伦堡】也已落入强领法伦帝国之手。王国的灭亡似乎已经是事实。然而,有一支不起眼的队伍从未受战火摧残的南部山区而来。发誓要驱逐一切分裂者与侵略军,光复王国,或是在废墟上重塑秩序!

策略流程 在游戏流程中,玩家将会扮演队伍的领军者(一位军头/老将/甚至是公主),带领部队从南方出发,逐步向首都【洛伦堡】推进,沿途会有许多随机性的分支事件需要玩家选择。当进入战斗时,玩家会带领少量近卫军进入战斗,在当地招兵买马直到实现作战目标,获取胜利光复该区域。

战斗流程 战斗则会以六边形网格地图的 SRPG 玩法呈现,玩家需要夺取地区内的资源点来征召更多部队。谨慎的使用有限的部队实现战斗目标.

往期开发内容:

地图风格

在最早的两篇日志中,我实现了游戏地图生成以及地图编辑器功能。地图模型风格以 Low Ploy 为主,地块分为地貌和地形两个特点,地貌决定了单元格的贴图外观,以适应不同地区的颜色风格,而地形则是一块地形特殊效果的主要决定因素。

开发日志(一):

地图数据将会以文件格式存储在本地持久化存储,可以方便地图设计,也可以在日后实现玩家自己编辑地图的功能。

开发日志(二):

随后的日志集中在开发作战单位相关的功能。作战单位需要初步准备的内容非常多。首先我制作了一版数据导入工具,以将用 xlsx 文档编辑的数据导入编辑器中 。

开发日志(七):

在准备好初期的单位数据后,制作了允许玩家选择不同兵员,以及选择配置的装备以应对作战情况的单位招募功能。

开发日志(八):

单位招募

随后制作了单位移动与攻击功能,并在过程中完善了伤害计算公式,数值策划模型等等单位数值相关的细节实现。

开发日志(九):

近期目标:

  1. 玩家操作反馈非常简陋。游戏内有大量的内容使用的 UI 十分简陋,或是缺少 UI 的提示。在接下来的开发过程中会逐步优化,同时很多动画和玩家的操作反馈十分单板,在我熟悉 Feel 插件后,会有进一步的细化。
  2. 敌对方单位的行动。玩家操作单位的功能基本处理完毕后。就得让敌人动起来了。笔者目前打算使用行为树(Behavior Designer)来制作敌对单位的 AI 行为。事实上笔者对这类内容还未接触过,很欢迎 dalao 给出一些介意!
  3. 数值平衡优化。数值已经设计出了第一版,但平衡性非常差劲。很感谢一位策划朋友的帮助。接下来我会试着制作一版数据模型,制作一版平衡性更高的数值。

到写本篇小结的时候为止,我已经开发这个项目 3 个多月了。由于是摸鱼或空闲时制作,开发速度还算在预期内。制作过程中,遇到许多从未接触,或无力解决的问题,很感谢许多朋友的帮助。独立游戏开发的社群真是有许多热心给与帮助的朋友!非常感谢!!接下来的一段时间便会着手推进近期目标中提到的内容。但愿在第 20 篇日志的时候,能够初步完成 SRPG 内容的玩法雏形。

尽管实际开发过程大多时候很费脑子。但着手解决许多问题,丰富自己的技术力。结识一些兴趣相投的朋友。或是看着往期开发日志,逐步堆积起来的项目内容。都有相当不错的正向反馈。我也因而乐此不疲,还要继续加把劲啊!要是你也有想要制作的内容。可以着手试试哦!

十一

之前的日志中,已经初步实现了单位的移动功能,但移动路径的计算十分死板,也没有多段移动的功能。于是就添加一下移动的中转功能。现在移动可以通过中转命令多步计划了。鼠标右键则可以撤销上一步选择的路径。

多步移动

在为单位下达移动命令的同时,也可以通过一个六向按键来调整单位的面向,这就是面向机制的基础呈现啦。(转向效果粗糙至极,原谅我,以后会慢慢优化的 ><||)

单位转向

单位会转向之后。就要详细讲一讲面向的区别了。单位的面向方向当然就是一个六边形单元格的某一边。对于一个单位而言,其正面以及该面相邻两面的方向就是“正面”,单元格的另外三面方向就是“背面”,此外在两个区域之间有一个中间区,就是“侧面”了。

单位方向

之后的战斗机制中,不同方向的攻击所造成的伤害会有很大的区别。机动性强的单位将会具有相当的威胁,将单位集中部署组成一定的“阵型”,互相掩护脆弱的侧后方也就变的必要了。

制作面向机制时,我发现使用两个坐标描述六边形网格的单元格并不十分方便,于是引入了第三个坐标。描述起来还是有一些理解成本的,简单的来说就是将闯过六边形各两面的三条轴线看作是坐标轴,将原来二维的坐标稍作一定的计算就能转换为下图的样式。(这个转换过程完全照抄了第一篇日志分享过的文章,站内也有翻译:https://indienova.com/indie-game-development/hex-map-part-1/)

三维坐标的六边形网格

这种三维的坐标系有一个极好的性质,就是 X+Y+Z=0 ,即单元格的三个坐标之和必为 0。这就给寻找单元格的邻居、判断单元格在单位的哪个方向、判断两个单元格之接的间隔数量等等常用的单元格逻辑处理提供了方便。比如可以通过以下公式判断两个单元格 A 与 B 的距离:(|A.x-B.x|+|A.y-B.y|+|A.z-B.z|)/2。根据这个公式也可以通过(|A.x-B.x|+|A.y-B.y|+|A.z-B.z|)/2=distance来获取 A 单元格在 distance 范围内的邻居 B 们的坐标。

以上就是近期的开发内容了。最近看到了许多玩法十分独特的游戏日志,让我不禁有种选择了一个笨重的制作题材的想法。不过,开发本来就是做自己喜欢的游戏嘛!随着游戏基础流程的逐渐实现,我也会加入更多独特的机制,来制作一个稍显“独特”的策略游戏!许多效果的实现粗糙简陋,十分感谢你能看到这里!最近一段时间很忙,摸鱼时候看了不少敌人 AI 的实现方式,但愿不要多久就能发出下篇敌人 AI 的日志吧!

十二

首先介绍一下使用的功能库 ReGoap(仓库地址:https://github.com/luxkun/ReGoap),ReGoap 是可用于 Unity 的一个 Goap 库。Goap(Goal Oriented Action Planning)即[以目标为导向进行行动计划],简单理解就是给出一个目标,Goap 会根据可采取的行动制定出实现目标的计划。虽然说起来很简单,上手还是需要做不少理论准备和实践测试的。有空我可能会写个 ReGoap 库内主要内容的使用介绍(先埋个坑)。

接下来我会根据 Goap 制定计划的两大关键词来介绍一下目前实现的功能。这两大关键词即:Goal(目标),Action(行为)

从一个战棋游戏角度来看,单位的 Action(行为)总结来说主要是移动和攻击(休整、撤退等作为扩展类的策略先不考虑)。而单位的 Goal(目标)大概可以归纳为防守,进攻,巡逻等等。通过调整目标之前的优先度,从高到底计算目标是否可行,计算出实现优先级的最高目标的计划。一轮 Goap 就算是完成了。

例如:

我们为红方步兵设置守卫营地目标的优先级为 5,而攻击敌人的优先级为 10。

而红方骑兵则设置守卫营地目标的优先级为 10,攻击敌人的优先级为 5。

行动逻辑展示

红方步兵行动时,攻击敌人的优先级更高,因而采取了攻击目标.Goap 会为其制定计划:移动至蓝方步兵身旁->攻击蓝方步兵->完成目标。

红方骑兵行动时,守卫营地的优先级更高,所以采取守卫任务.Goap 会为其制定计划:移动至营地->完成目标。

通过补充更多的行动和目标,处理好目标的优先级,一个简单的 AI 系统就完成了!!

此外,行动也具有 Cost(花销),细化行动的花销可以使 Goap 制定出相对更优的计划。例如在移动这个行动中,移动的距离,目标点的地形都可以成为花销的计算参考。

除了 AI 行为,在长期断更的过程中顺便简单实现了游戏存档,回合控制等等周边功能,没什么好看的就不作展示啦。

本次展示的 AI 功能还十分简陋,只有少数几个行为和目标,好在支撑更多扩展内容的框架已经搭好了。上手 REGOAP 真是花了不少时间(这个库的文档写的太简略了,上手使用走了不少弯路),在断更的两个月里无数次的调试和啃源码真是很头疼。晚些我会试着写篇使用介绍看看能不能帮上其他感兴趣的人的忙。

十三

又是拖了好久好久的更新日志,最近一段时间优化了一些数据的结构,制作了重要地标的功能以及单位和地标的提示。

首先是地标建筑内容,现在只制作了村庄和城堡两种建筑

村庄与城堡

玩家可以在占领的地标建筑处招募单位,不同的地标也会提供不同的资源收入以及防御加成(等待后续进一步细化)。

进攻城堡

同时也加入的敌对单位攻击和夺取地标建筑的 AI 行为,在玩法上,地标建筑将会是玩家和敌人争夺的重点。

随后要介绍的是一个提示模块,单位和建筑地标将会显示一个对应的图标,以便玩家直接观察(图标是随便找的免费资源,有些奇怪还请见谅,要是有什么做图标的建议欢迎评论哦!)

图标展示

目前计划图标会显示三个关键内容即:标志、阵营颜色、血量。当出些各种情况单位或地标建筑发生变化时,图标也会相应改变。

敌方占领了一个村子!

这就是近期制作的一些便于展示的内容了,在下最近发生了人生重大事件,不住沉迷其中,开发进度十分缓慢。不过项目会努力制作下去的,敬请期待!要是有交流建议或是协作意向欢迎联系我哦!! QQ:2763686216