更新日期:2024年6月12日。
项目源码:在第二章发布
免责声明:【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网,本专栏所有文章仅做学习和教程目的,不会将任何素材用于任何商业用途。
索引
- 【系列简介】
- 【GameComponent 模块简介】
- 【RPG2D 系统简介】
- 【游戏简介】
- 【游戏背景】
- 【游戏玩法】
- 1.回合制
- 2.地图
- 3.角色
- 4.要诀
- 5.获胜条件
- 【演示效果预览】
- 环境搭建
- 导入HTFramework框架
- 导入GameComponent模块
- 导入RPG2D系统
- 使用项目创建向导
- 开始开发
- 创建关卡
- 编辑关卡
- 创建并编辑角色
- 创建并编辑要诀
- 创建并编辑剧情对话
- 创建并编辑升级系统
- 创建AI控制器
- 平衡调节
- 结尾
【系列简介】
本系列会基于HTFramework
框架和RPG2D
系统开发一个名为龙城纷争
的小游戏,他同时也将作为HTFramework
最佳实践的一个例子,RPG2D
系统具备强大的实用性和扩展性,你完全可以基于他继续完善、丰富内容。
本系列会打破常规,不止介绍各个模块或工具的使用方式,还将会从零开始详解各个功能点的实现细节与设计理念,所以为了方便读者结合源码与教程同时学习,便提前放出源码(第二章),但请注意,在教程前进过程中,源码可能会随时更新(改进设计?修复bug?),所以请随时关注源码链接。
【GameComponent 模块简介】
GameComponent
模块作为HTFramework
框架的可选扩展模块,主要包含一些游戏组件,游戏常用功能系统等,必须依赖HTFramework
主框架而存在,目前并未开源。
【RPG2D 系统简介】
RPG2D
系统名为2D角色扮演与回合制战棋快速、持续开发系统,隶属于GameComponent
模块,他提供快速开发2D角色扮演与回合制战斗游戏的各种工具和组件,例如关卡编辑器、角色定义、角色数据集编辑(使得不同角色只要使用相同数据集就能拥有相同属性)、剧情对话编辑、要诀定义(也即是技能)、战斗系统、升级系统、AI系统(主要为调遣敌方角色战斗)、存档功能、平衡模拟器等。
例如,关卡编辑器(用于编辑关卡、布局角色):
例如,平衡模拟器(用于调节角色、要诀数值,以完善平衡性):
【游戏简介】
龙城纷争
是一款2D俯视角角色扮演、回合制战棋、策略闯关
游戏,玩家可以控制多个角色、使用不同的要诀进行策略战斗,消灭敌方角色或达成通关条件即可通关,且随着关卡的解锁会有新的角色加入玩家队伍。
本游戏玩法借鉴第二次超级机器人大战(FC)。
也许是童年的记忆,超级机器人大战这款游戏即便是现在也依旧对我充满了吸引力,偶尔还会重拾它玩上几把,它的玩法设定在当年是独树一帜的,既有角色扮演
,亦有回合制战棋
,更有策略
,如果你未曾接触过这类游戏,那对于接下来的文章可能会兴致大减(毕竟它是上个世纪的游戏),所以在这里算是一个友好的警示
。
【游戏背景】
龙城是神龙帝国东南方最大的城市,盘踞着帝国最负盛名的十大家族,这里也是四年一度的要诀争霸赛的起点,如今,第十届要诀争霸赛即将开始,入围者将有机会问鼎帝都,面见圣人(90级以上强者的尊称),更有机会获得传世要诀。
络家
在龙城十大家族中排行第二,这里,也是故事的起点…
【游戏玩法】
1.回合制
游戏为回合制
,每一回合(玩家先行动,然后是敌人行动),一个角色只能进行一次行动
,如下行为均消耗一次行动:
- 移动(角色从当前位置移动到任意与自己距离不大于移动速度的格子)
- 移动并使用近程攻击型要诀(角色移动完毕的同时,可使用近程攻击型要诀攻击敌人1次)
- 原地使用近程、远程攻击型要诀(角色未移动,在原地可使用近程、远程攻击型要诀攻击敌人1次)
- 移动并使用近程治疗型要诀(角色移动完毕的同时,可使用近程治疗型要诀治疗自己或队友1次)
- 原地使用近程、远程治疗型要诀(角色未移动,在原地可使用近程、远程治疗型要诀治疗自己或队友1次)
2.地图
地图为正方形网格形式,每个格子拥有自己的属性,地图上的距离均为曼哈顿距离。
3.角色
每一个角色拥有8个要诀槽位(要诀可以理解为技能
),可学习8种不同的要诀,玩家角色击败敌人后会获得经验值以升级(1-100级
),等级提升后会解锁更多的槽位。
4.要诀
要诀分为以下3种:
- 攻击型要诀:可用来攻击敌方;
- 治疗型要诀:可用来治疗友军;
- 加成型要诀:永久提供一些属性加成(特殊加成型,比如
踏水神行
,可在水面上行走,一夫当关
,免疫一切远程攻击伤害);
5.获胜条件
每一个关卡,玩家控制多个角色组成的队伍,与AI控制的多个敌人进行战斗,每一个关卡的获胜条件不同,有全歼敌人、击败指定BOSS、坚持多少回合不团灭等。
【演示效果预览】
龙城纷争的演示效果(主打教学目的,UI界面使用内置素材拼凑而成,看起来更加清晰明了,当然,完全可以自行定制界面
):
【Unity】RPG2D龙城纷争
环境搭建
新建项目、导入框架、以及相关导入设置这里就不在详述,请参阅此篇博客。
导入HTFramework框架
目前推荐使用HTFramework 0.4.1版本,此版本已将支持的Unity版本升级至2022.3.17(长期支持版):
导入GameComponent模块
通过模块管理器下载GameComponent模块到当前项目:(目前未开源无法下载,源码将附带于本系列第二章)
导入RPG2D系统
GameComponent模块也有一个单独的可插拨式模块管理器,通过他可以导入、移除、备份功能模块(部分模块不支持备份),当然RPG2D系统默认是导入的:
打开管理器界面:
管理各个托管系统、组件:
使用项目创建向导
依次点击菜单HTFramework
-> Project Wizard
启动项目创建向导:
Generate Project Folder栏显示推荐的项目源文件目录结构;
Original Setup栏显示初始设置,自动生成的入口场景的名称,以及存放的路径,以及是否自动生成第一个流程类;
点击Generate
按钮即可生成项目源文件目录结构,生成入口场景,生成默认流程类。
生成完成之后,我们的项目Project结构如下(请注意,由于要使用到A*寻路系统,所以RPG2D强制依赖HTFrameworkAI模块
):
开始开发
然后,我们在Main场景的Hierarchy视图中已然能够看到框架主环境:
至此,基本环境已经搭建完成,接下来我们大致了解下RPG2D的工作流程。
创建关卡
通过如下菜单创建一个新的关卡:
然后将关卡设置为预制体:
选中关卡预制体,点击右上角打开按钮,进入预制编辑状态后,再点击打开关卡编辑器按钮:
编辑关卡
在关卡编辑器界面编辑地图、编辑角色:
创建并编辑角色
创建并编辑角色数据集:
创建并编辑要诀
创建并编辑要诀数据集:
创建并编辑剧情对话
创建并编辑剧情对话数据集:
创建并编辑升级系统
创建并编辑升级系统数据集:
创建AI控制器
创建自己的AI控制器,继承至基类AI
,也可以使用缺省的AI_Normal
:
平衡调节
使用平衡模拟器
调节数据平衡:
结尾
至此,通过上面的一系列流程后,就能够完整运行一个关卡了(当然,忽略了UI界面的搭建),不过这里只是做了一个大致的流程简介,接下来,我们将逐代码行
解析程序中实现的各个细节。