战斗系统

  • 前言
  • 一、战斗系统是什么?
  • 二、战斗系统的体现?
  • 三、战斗系统的分类?
  • 四、战斗系统的内容?
    • 1,输入规则
      • 1)搓招的输入实现?
      • 2)帧对数字形式输入的影响和解决?
      • 3)死区(无效区域)是什么?
    • 2,动画技术
      • 1)混合和遮罩的区别?
    • 3,相机(镜头)控制——电影技巧的应用
      • 1)电影技巧的复合运用?
      • 2)相机控制的游戏作用?
    • 4,游戏AI的设计模式
      • 1)状态机
      • 2)分层状态机
      • 3)行为树
  • 参考

前言

游戏中只要有对抗元素,就会有战斗系统,那么战斗系统是什么?战斗系统可以分为哪些部分?战斗系统的内容?下面就让我们一起来学习下吧。


一、战斗系统是什么?

  • 策划角度来说:战斗系统,就是游戏中玩家与敌对方(系统或其他玩家)的对抗方式,它包括游戏机制,画面表现,玩家行为。它的核心设计目的是给玩家创造成长反馈、社交关系和对抗乐趣。
  • 系统角度来说:就是战斗状态之间的关系和流向构成的一个循环,类似生态系统。
  • 开发者角度来说:战斗系统,是游戏中用于展现战斗场景和模拟战斗过程的核心组成部分(狭义)。

RPG中的战斗系统可能包括:战斗背景、角色属性、技能判定、伤害计算和效果触发。其中,战斗背景可以是静态的图像或动态的3D场景,而角色属性则通常包括血量、攻击力、速度等。技能判定和伤害计算则是指游戏会根据攻击方和防御方的属性来计算出具体的伤害数值,以及是否触发对应效果(如眩晕、冰冻等)。效果触发则是指在一次攻击/防御完成后,游戏系统可能触发的各种特殊效果(药水,技能效果)


二、战斗系统的体现?

战斗系统在不同的游戏类型中有不同的设计和表现:

  • 角色扮演(技能,属性,经验,装备,药水等)和动作冒险(连招,格挡,索敌,终结技)等游戏类型中占比较大。但也会考虑设计中的核心体验,比如巫师三中战斗系统就有所取舍,专注点在剧情叙事上(吐槽一下杰洛特的战斗不能跳跃,不能疾跑),再比如只狼的专注点毫无疑问是战斗系统,打击感,技能,弹反,背刺等,追求的就是硬核。
  • 但对于模拟经营等游戏类型来说,就可有可无了。创造与魔法,波西亚时光等,战斗系统可以说是相当简陋,关注点就不在战斗系统中。

  游戏开发中肯定要有所取舍,考虑如成本,时间,质量之间的平衡,但最终的目的肯定是为了服务玩家。


三、战斗系统的分类?

  1. 从是否需要承担成长反馈的目的来看,战斗系统可以分为平衡战斗系统非平衡战斗系统,两者的区别就是外围的数值是否会影响到战斗中的角色属性。
  2. 从是否需要承担社交关系来看,战斗系统可以分为协作战斗系统(PS:魔兽世界、英雄联盟)、多人非协作战斗系统(PS:守望先锋)和单人战斗系统。
  3. 对抗乐趣的程度来看,战斗系统可以分为数值战斗系统,视觉战斗系统,轻对抗战斗系统,重对抗战斗系统,完全对抗战斗系统五种。

下面简述一下对抗乐趣的五种分类:

1)数值战斗系统是纯数值对抗,几乎没有战斗表现的战斗系统,战力高的一方一定能获取战斗的胜利。采用这种战斗系统的游戏,核心一般在成长和PVP的竞争上,所以战斗过程可以省略。比如卡牌游戏大掌门,MMORPG传奇、征途、奇迹MU觉醒,SLG列王的纷争等。

2)视觉战斗系统是以战斗中的视觉表现数值对抗核心,对抗乐趣为辅的战斗系统,这类战斗系统中玩家只需要在战前作出一定的选择,或者在战斗中进行一些无关紧要但是表现力很强的操作,就能进行一场直观而宏大的战斗。这种战斗系统也适合以成长或社交为主的游戏,并且相对于纯数值战斗系统,它会通过战前的搭配和战斗中的直观表现,给予了玩家一定的自主决策空间,让玩家感受到一丝丝数值之外的策略上的对抗乐趣。如冒险与挖矿,王国纪元,NBA梦之队,原版奇迹Mu等。

3)轻对抗战斗系统是以战斗中的数值对抗、关键决策和操作反馈为主,战斗前的选择和战斗表现为辅的战斗系统。这种战斗系统适合外围成长稍重于战斗策略的游戏,玩家在此类游戏中既能感受到数值成长后的碾压乐趣,也能感受到战斗策略正确后的对抗乐趣。如刀塔传奇,剑与家园,阴阳师,部落冲突,海岛奇兵,龙之谷,暗黑3等。

4)重对抗战斗系统是以偏重度的战中玩法对抗为主,数值对抗(可能没有 )和战斗表现为辅的战斗系统。这种战斗系统适合以战斗为核心玩法的游戏,玩家可以在游戏中可以充分体会到战斗对抗带来的乐趣。这类游戏即使有外围的成长,也会用合适的方式弱化(低成长深度,平行化追求等),例如万智牌,炉石,皇室冲突,格斗游戏,魔兽世界,各类单机主机游戏等。

5)完全对抗战斗系统是以战斗中的玩法对抗和数值对抗为主,战斗表现为辅,几乎没有外围成长的战斗系统。这类战斗系统的核心是,在重战斗玩法对抗的基础上,一定要做战斗中的数值成长(甚至多维度成长),利用策略和成长的结合,将游戏的变化和深度以指数级提升。例如RTS,MOBA,大逃杀。


四、战斗系统的内容?

战斗系统大致可分为三个模块:角色,逻辑,表现(逻辑与表现分离),包括处理玩家输入,角色控制,相机控制,数值设计,攻击判定,伤害计算,AI的行为树和状态机,动画表现,特效,声效,还要考虑拓展和维护功能。具体可看:B站:战斗系统的开发实践,有较为笼统的介绍,适合了解

战斗系统的模块细节:

1,输入规则

绝大多数输入形式可以分为两类:数字和模拟。

  • 数字形式只有两种状态的“按下”或“释放”。
  • 模拟形式就是设备可以返回某个数字范围,比如虚拟摇杆。

1)搓招的输入实现?

  • 同时按键
  • 序列按键

2)帧对数字形式输入的影响和解决?

  • 影响:游戏是按帧运行的,帧分为渲染帧和逻辑帧,数字形式只有按下和释放操作,如果某个逻辑按下只需要执行一次但是多帧检测为按下(发射子弹,结果一直发射?),这种情况怎么处理?
  • 解决:一种方法是检查上一帧的状态和当前状态对比

3)死区(无效区域)是什么?

模拟输入是一个数字范围,虚拟摇杆的值在玩家没有操作时会在0左右浮动,如果玩家没有操作角色,角色却自己动了,这显然是不合理的。

所以引入死区(在虚拟摇杆中心划分一个小圆,范围内的输入值为无效值,不做任何响应

2,动画技术

1)混合和遮罩的区别?

两者之间的区别在于动画叠加限定区域

  • 混合是多个动画在同一区域进行叠加,每个动画占比不同
  • 遮罩是多个动画在不同区域分别播放,每个区域动画不同

3,相机(镜头)控制——电影技巧的应用

1)电影技巧的复合运用?

将运镜和转场进行组合使用,可以得到电影级的游戏画面。

2)相机控制的游戏作用?

相机的作用绝不仅仅只是展示游戏画面,合理运用会提高游戏性。

4,游戏AI的设计模式

1)状态机

概念:

状态机(State Machine)是一种基于状态的设计模式,它将NPC行为划分为不同的状态。每个状态代表NPC可以采取的不同行为或决策,而转换条件则由NPC当前的状态和周围环境的变化发生才能触发。状态机的设计可以针对不同的NPC类型、角色属性等因素进行配置。

  • 在动作类游戏中,敌人拥有追逐、攻击、逃走等不同状态
  • 在模拟经营类游戏中,可以通过状态机自动管理NPC应对事件

状态机更适合处理简单、结构化的问题

2)分层状态机

概念:

分层状态机(Hierarchical State Machine)是一种扩展了基本状态机概念的设计模式,它把多个相关联的状态组合成一个更高级别的状态。属于状态机中的状态过多时进行的细分。

3)行为树

概念:

行为树(Behavior Tree)是像树形结构一样组织NPC行为的设计模式。它通常由顶部节点(Root)以及一系列的子节点和叶子节点组成。每个节点代表NPC可以采取的某种行为或决策,例如巡逻、攻击等。叶子节点表示具体的行为,而父节点则指导其执行。整个行为树通过每个节点被评估并返回成功或失败值来确定跳转下一步执行,进行分层行为管理。

行为树适合处理复杂和分层问题


游戏开发中可能会结合使用状态机和行为树,一般来说操作角色用状态机就足够了,而复杂AI(NPC)才需要行为树去实现。

具体可看:B站:行为树实战训练营,简单说了下状态机的实现和行为树的判定机制。


参考

  • B站:战斗系统的开发实践
  • 腾讯游戏学堂:战斗系统浅析(偏游戏策划)
  • B站:行为树实战训练营
  • 《游戏编程算法与技巧》

游戏知识学习——【战斗系统】相关推荐

  1. 啊u学科学计算机,动画 | 《阿U学科学》:开学啦!在游戏中学习科学知识吧

    原标题:动画 | <阿U学科学>:开学啦!在游戏中学习科学知识吧 一滴水中有多少奇妙的生命? 打哈欠会传染吗? 蜗牛也有左撇子? 动物自带指南针吗? 为什么日出和日落时的太阳是红色的? 当 ...

  2. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)

    通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...

  3. 面向完全初学者的Unity和C#游戏开发学习教程

    了解如何通过使用Unity游戏引擎和C#制作BomberMan风格的3D游戏来制作您的第一款视频游戏 你会学到: 使用Unity 2021学习3D游戏开发 通过制作你的第一个3D游戏来学习C#编程语言 ...

  4. C#和Unity编码和游戏开发学习教程

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:110节课(26小时25分钟)|大小解压后:18.6 ...

  5. 人工智能对教育产业的冲击和机遇分析 ——游戏化学习

    游戏化学习 作者:张娇娇 本文摘自:百度百科 一.    研究背景 .从20世纪90年代开始,世界各国纷纷开始反思本国的教育政策和课程,开始了新一轮的课程改革,对人才培养的目标进行调整,进一步关注学生 ...

  6. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  7. rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国

    导读:你可以尝试以多种语言编程一个简单的游戏来开始编程之路. 本文字数:4068,阅读时长大约: 5分钟 https://linux.cn/article-12979-1.html 作者:Moshe ...

  8. 2021-7-19-OpenStack基础知识学习

    OpenStack基础知识学习 参考文献:Wolf_Coder,百度百科 1,云计算 1.1,出现原因 由亚马逊公司提出.1.随着业务增加公司内部的服务器不够使用,进行虚拟化技术->2.随着公司 ...

  9. 小菜鸟的C++游戏编程学习日记(一)

    小菜鸟的C++游戏编程学习日记(一) 作者:杨帆参考书籍:Beginning Game ProGramming(中文版)学习时间:2016.7.26 以下附所敲源代码与部分注释: //编译环境 vis ...

最新文章

  1. android128 zhihuibeijing 科大讯飞 语音识别
  2. python人工智能-Python和人工智能的关系,看完你就明白了!
  3. MySQL之INSERT
  4. JAVA文件写入FileWriter
  5. 自然语言处理顶会 ACL 2018 参会见闻
  6. 引用dll动态库,动态库中弹出对话框输入,将输入参数,作为变量继续调用。...
  7. 英特尔携手百度全方位深化合作 共筑智能生态
  8. 《深入浅出DPDK》读书笔记(一):基础部分知识点
  9. c语言课程设计报告书通讯录,C语言课程设计学生通讯录管理系统设计
  10. Linux内核kconfig调用关系,探索Linux内核:Kconfig的秘密
  11. 随机存储器(RAM),只读存储器(ROM),高速缓存(CACHE),内存,硬盘,CPU
  12. Tegra平台构建OpenCV_Building OpenCV for Tegra with CUDA
  13. mac系统连接服务器教程视频教程,mac os教程视频
  14. 大数据行业六大核心发展趋势
  15. 十进制数与8421码、5421码、2421码以及余3码之间的部分转换
  16. Mosquitto简介及搭建
  17. 字节跳动张一鸣:给互联网人才的一些中肯建议!
  18. java设置ContentType,设置下载文件名称
  19. 硬盘分区丢失如何找回呢?
  20. python:复制文件夹及内容(包含子文件夹)到指定目录

热门文章

  1. 7-3 统计正数和负数的个数然后计算这些数的平均值 (15 分)
  2. 旅游网站定位规划简介
  3. MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select
  4. c语言将图像转换成字符画,25行Java代码将普通图片转换为字符画图片和文本的实现...
  5. php中单引号,php中的单引号、双引号和转义字符详解
  6. 用Python爬取最新股票数据含完整源代码
  7. unity创建一个6面体的3D模型,确保它每一个面都是不同的。能旋转每一个面唤醒不同的物品
  8. Autosar之自签名证书与CA证书
  9. FTPRush.v1.1.219.Unicode-YAG
  10. springboot整合ftp