当前位置: 首页 > news >正文

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期: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界面的搭建),不过这里只是做了一个大致的流程简介,接下来,我们将逐代码行解析程序中实现的各个细节。

相关文章:

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期:2024年6月12日。 项目源码:后续章节发布 免责声明:【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网,本专栏所有文章仅做学习和教程目的,不会将任何素材用于任何商业用途。 索引 【系列简介】…...

多目标跟踪中检测器和跟踪器如何协同工作的

多目标跟踪中检测器和跟踪器如何协同工作的 flyfish 主要是两者 接口间的交互 假设 原始图像尺寸:1920(宽)x 1080(高) 模型输入尺寸:640(宽)x 640(高) 检…...

kali系统几个开机启动项的区别

1、Live system (amd64) 简单的模式 ,启动系统,直接进入 Kali,在系统中的所有的操作和设置都会在下次重启时失效。 Kali 中保存/编辑的所有东西都会重启丢失。 2、Live system (amd64 fail-safe mode) 这种模式与 Live (amd64) 类似&#xf…...

【自撰写】【国际象棋入门】第5课 常见开局战术组合(一)

第5课 常见开局战术组合(一) 本次课中,我们简要介绍几种常见的开局战术组合。开局当中,理想的情况是,己方的两只(或以上)轻子相互配合,或者与己方的兵配合,在完成布局的…...

高考志愿填报选专业,女孩就业率最好的专业有哪些?

高考志愿填报选专业, 大家都会关心:将来怎么就业? 按照目前的环境来说,女孩的就业是不乐观的,在职场上,绝大部分岗位都是男性优先的,至少短期内可能还无法改变,这样就要求我们在大学…...

yolov5模型训练早停模型变大

目录 1. 背景2. 原因分析2.1 train代码分析2.2 strip_optimizer函数分析 3. 验证 1. 背景 最近使用tph-yolov5训练yolov5l-tph-plus模型时,发现模型收敛的差不多了,就果断的停止了训练,结果发现last.pt和best.pt竟然488M,而正常训…...

next是什么???

大家都知道最近出了一个很火的框架,Next.js框架。很多大公司(例如:Tencent腾讯,docker,Uber)的项目都在使用这个Next.js框架。那Next.js到底是一个什么框架呢?Next.js有什么优点呢?今…...

K8s的资源对象

资源对象是 K8s 提供的一些管理和运行应用容器的各种对象和组件。 Pod 资源是 K8s 中的基本部署单元,K8s通过Pod来运行业务应用的容器镜像 Job 和 CronJob 资源用于执行任务和定时任务,DaemonSet 资源提供类似每个节点上守护进程, Deployment…...

OpenStack快速入门

任务一 熟悉OpenStack图形界面操作 1.1 Horizon项目 •各OpenStack服务的图形界面都是由Horizon提供的。 •Horizon提供基于Web的模块化用户界面。 •Horizon为云管理员提供一个整体的视图。 •Horizon为终端用户提供一个自主服务的门户。 •Horizon由云管理员进行管理…...

STM32CubeIDE对STM32F072进行ADC配置及使用

目录 1. 配置2. 时钟3. ADC配置4. 代码补充 1. 配置 引脚配置:PB0 2. 时钟 都是48MHz 3. ADC配置 ADC配置: 开启中断: 4. 代码补充 轮训ADC采样: HAL_ADC_PollForConversion(&hadc,10);ADC采样: HAL_ADC_Start (&a…...

Leetcode Hot 100 刷题记录 - Day 1

问题描述: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 示…...

k8s学习--Kruise Rollouts 基本使用

文章目录 Kruise Rollouts简介什么是 Kruise Rollouts?核心功能 应用环境一、OpenKruise部署1.安装helm客户端工具2. 通过 helm 安装 二、Kruise Rollouts 安装2. kubectl plugin安装 三、Kruise Rollouts 基本使用(多批次发布)1. 使用Deployment部署应用2.准备Roll…...

PHP框架详解 - CakePHP框架

CakePHP 是一个开源的 PHP Web 应用框架,它遵循 MVC(模型-视图-控制器)设计模式。CakePHP 提供了快速开发的功能,如代码自动生成、数据库交互的 CRUD 操作支持、灵活的路由、模板引擎、表单处理以及其它许多有用的特性22。 CakeP…...

el-cascader 支持多层级,多选(可自定义限制数量),保留最后一级

多功能的 el-cascader 序言:最近遇到一个需求关于级联的,有点东西,这里是要获取某个产品类型下的产品,会存在产品类型和产品在同一级的情况,但是产品类型不能勾选; 情况1(二级菜单是产品&…...

leetcode498 对角线遍历

题目 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,4,7,5,3,6,8,9] 解析 本题目主要考察的就是模拟法,首…...

北京活动会议通常会邀约哪些媒体参会报道?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 北京作为我国的首都和文化中心,各类活动会议资源丰富,吸引了众多媒体的关注。以下是一些通常会被邀约参会报道的重要媒体类型: 国家级新闻机构&#x…...

随心笔记,第六更

目录 一、 三步构建 XML转成java bean 1.XML转XSD 2.XSD转JavaBean 3.jaxb 工具类 4.测试 📢📢📢📣📣📣 哈喽!大家好,我是「Leen」。刚工作几年,想和大家一同进步&am…...

zustand 状态管理库的使用 结合TS

zustand 是一个用于React应用的简单、快速且零依赖的状态管理库。它使用简单的钩子(hooks)API来创建全局状态,使得在组件之间共享状态变得容易。 React学习Day10 基本用法 安装:首先,你需要安装zustand库。 npm insta…...

Maven 的生命周期详解

Maven 是目前最流行的项目管理和构建工具之一,广泛应用于 Java 开发项目中。它通过一系列约定和配置,极大地简化了项目的构建、依赖管理和生命周期管理。其中,Maven 的生命周期是其核心概念之一,贯穿了项目从构建、测试、打包到部…...

【稳定检索/投稿优惠】2024年生物技术与食品科学国际会议(ICBFS 2024)

2024 International Conference on Biotechnology and Food Science 2024年生物技术与食品科学国际会议 【会议信息】 会议简称:ICBFS 2024 大会时间:点击查看 截稿时间:点击查看 大会地点:中国厦门 会议官网:www.icb…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

消息队列系统设计与实践全解析

文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...