视频链接:游戏开发入门(七)特效系统(6节课 时常:约2小时20分钟)

该视频课程与其他本系列的课程不太一样,因为在很多游戏或者很多引擎中并没有一个专门的“特效系统”,而是把各种特效存放在不同的模块里面,比如粒子特效放在粒子系统里,材质UV特效放到动画逻辑里面。

这堂课所讲的内容表面上是讲解特效的相关内容,有一些分析感觉价值好像也不大,不过深入来说他更像是如何利用自己的经验来为项目开发一个高效的工具。

对于一个没有任何经验的入门者来说,里后半部分面的很多内容可能无法亲身体会,可能会令人觉得鸡肋。所以建议大家除了理解基本的特效内容外,尽可能抱着如何去分析抽象一个功能的戏心态去学习,效果会更好一些。
另外,博主做笔记的时候也加入了一些自己的看法,可以参考。


笔记与总结(请先学习视频内容):

1.什么是特效?
在我工作的环境内,特效基本上就是指粒子特效。但更通用的定义应该是指为了体现出游戏中的某些特殊效果增加一些在现实中不常见的表现。这些表现包括但不限制于场景光影特效,UI表现特效,技能特效,雨水,沙尘等等。

2.特效在项目使用中的问题
没有一个完善,通用的特效系统,导致每个项目在运行时都需要手动重新搭建一个适合自己项目的类似系统,或者完全不构建系统,进而造成开发效率的降低。然而对于当前市面上的大部分游戏,特效的应用极为广泛,构建一个特效系统确实是有意义的。特效系统的定义不确定性以及难以抽象的特点,也是导致没有出现特效系统的原因之一。

3.如何抽象一个特效系统的功能?

a.分析实际项目中的“特效”有哪些?

  • UI特效(在某些情况下与材质特效是相同的)
  • 粒子特效(动作,技能,附魔等) 材质特效(角色颜色变化等)
  • 后处理(景深,光晕等,课程前面没有这方面内容,不过后面在系统设计的时候提到了镜头管理,镜头管理一般包含摄像机处理与后处理)

b.这些“特效对游戏的作用”是什么?

  • 强化反馈(UI新手引导特效)
  • 增强视觉表现(技能表现)
  • 特殊效果表现(boss不同阶段的形态与颜色,植被燃烧消失,景深效果)

c.这些“特效”用到的资源是什么形式?(格式因引擎而异)

  • 图片
  • shader文件(一般来说,现在引擎里面的所有渲染内容都与shader有关,因为考虑到有一些传统游戏框架这里把shader单独拿出来作为一种形式)
  • 粒子文件
  • 集成于引擎中,没有单独的文件(拖尾渲染,后处理)

d.分析共同点

  • 纯表现
  • 从开始到结束一般没有交互,不接收输入
  • 随时间产生变化

e.总结
多种表现效果在同一个固定时间区间内的非线性排列

  • 固定时间轴动画驱动
  • 支持多样化的表现效果元素混合编辑功能
  • 提供对多种表现效果元素在同一时间轴内的非线性排列功能

4.一般UI特效的实现方式

  • 逐帧动画(N张图片循环播放,资源多,占空间大)
  • UV动画

5.一般技能特效(如刀光)的实现

  • Mesh面片+ UV动画(需要先生成一个透明的面片)
  • Trail拖尾特效(引擎提供,不需要实时生成Mesh网格)
  • Particle粒子特效(粒子消耗一般来说比较高)

6.灵魂吸附的效果实现
Particle粒子,每帧更新其位置

7.走路时灰尘的实现
一般在引擎的动画编辑界面里都可以在动作的某一帧直接添加粒子效果(或者其他事件通知),在该位置添加制作好的灰尘效果调整位置偏移即可。如果想与身体位置保存一致,还需要将其绑定到固定的骨骼关节上

8.一个简单的无抽象的特效系统与一个复杂特效系统的比较
由于项目开发周期与成本的原因,我们要根据情况来判断是否需要构建一个复杂的系统
简单:

  • 固定时间轴动画驱动
    实现方式:放弃该功能,直接以某个固定事件的开始作为起始时间(很多游戏里都是这么做的)
  • 支持多样化的表现效果元素混合编辑功能
    实现方式:不提供统一功能,直接使用表现效果元素本身的编辑环境制作
  • 提供对多种表现效果元素在同一时间轴内的非线性排列功能
    实现方式:通过配置表,直接配置各表现元素相对1中的固定开始时间

简单无抽象的特效系统问题:

  • 每次添加新的玩法时,都需要加入新的固定事件去驱动,同时处理相关逻辑
  • 各中特效是分开的,不方便管理,同时需要在多个小工具之间来回切换
  • 配置内容随着项目的进行不断添加,造成修改成本增加,同时有些配置还需要到特定的游戏环境里面测试

复杂:

  • 固定时间轴动画驱动
    实现方法:提供统一的基于时间轴的特效控制系统,抽象化每一个驱动元素(类似一个视频剪辑软件的效果, 所谓的驱动元素就是经过封装一个可管理的特效片段,可以直接处理引擎中相关联的特效元素)
  • 支持多样化的表现效果元素混合编辑功能
    实现方法:单独提供每一种表现元素的驱动元素,归纳到特效控制系统统一管理(类别视频中的视频轨道和音频轨道,多种轨道可以各自处理各自的内容)
  • 提供对多种表现效果元素在同一时间轴内的非线性排列功能
    实现方法:提供驱动元素在特效控制系统中的非线性编辑功能(非线性就是指随着时间变化不是线性的,可以先快后面的这种效果)
  • 所见即所得的编辑环境
    实现方法:提供基于UI的编辑环境
  • 多种不同表现元素的整体预览
    实现方法:UI编辑环境下可以拉起所有的可视化元素的基础系统(比如正常引擎编辑后可以立刻看到修改后的粒子效果,你需要让这个效果立刻显示到你的特效系统里面)
  • 迅速快捷的修改反馈
    实现方法:所有表现元素参数支持序列化方案,驱动元素支持实时修改反馈
  • 提供较为统一的基础编辑环境
    实现方法:驱动元素接口统一化设计。(方便从一个引擎移植到另一个引擎)

9.判断一个游戏系统设计的好坏因素
a.系统负荷的大小(会不会因为过于复杂而造成过多的额外成本)
b.是否方便多人开发
c.是否方便测试
d.要方便特定的使用人群使用

10.关于编程的一点小经验
不要做过多的设计,因为你的代码总有可以优化的地方,实际情况下实践的测试反馈往往比纯构思要好的多

11.关于序列化
序列化功能是将对类象以字节流的形式输出,游戏中的存档功能几乎都是使用序列化去做的。

12.与特效系统紧密相关的内容
视频中前面分析了特效系统,但是实际上他的特效系统不仅仅包含特效,还有镜头管理与音效管理两个内容。
其实授课者师将游戏中基本的表现内容都整合到其特效系统里面了,可能是因为镜头,音效都与特效紧密联系,如果拆分开来势必导致表现不匹配,操作复杂等各种问题。

13.一个合格的系统公交应该有的功能
a.代码编辑
b.可视化资源编辑窗口
c.提供大量的表现效果功能
d.提供了整套编辑元素序列化方案
e.提供资源管理方案
d.同意的构建流程
f.可预览的运行环境

最后对整个课程做一个简单的总结:其实整个视频就是引导你分析并完成了一个增加美术策划开发效率的一个工具,该工具与具体的引擎无关。
在不同的项目里面大家对工具的需求都是不同的,所以经常会有引擎组的人员去负责相关工具的开发。视频中的特效系统工具看来还基于Unity的,如果换到一个不太成熟的引擎估计很难移植。另外,任何一个工具可能在一些项目中很有意义,单不代表任何项目都适合。


上一篇:游戏开发入门(六)游戏物理引擎
下一篇:游戏开发入门(八)游戏中的场景管理( 待更新 )

原文链接(转载请标明):http://blog.csdn.net/u012999985/article/details/79249278

游戏开发入门(七)特效系统相关推荐

  1. java游戏开发入门(七) - 计时器

    java游戏开发入门(七) - 计时器 前言 函数说明 在一秒钟之后执行一次 每隔0.5秒执行一次 实例 目标效果 敌方实体 定时创建敌方实体 碰撞效果 效果展示 完整代码 HelloWorldApp ...

  2. python 游戏开发_Python游戏开发入门

    spContent=--玩游戏的最高境界是什么? --当然是设计一款属于自己的游戏! --设计游戏不是目的,从游戏看道理,从道理看人生,人生何尝不是属于自己的游戏? --"弹指之间·享受创新 ...

  3. 游戏开发入门(五)游戏动画系统

    视频链接:游戏开发入门(五)游戏动画系统(8节课 时常:约2小时30分钟) PPT比视频要块一些 第二节与PPT对不上 视频中杂音太大,如果带耳机还听不清的话,建议直接看内容即可 笔记与总结(请先学习 ...

  4. java游戏开发入门(十) -粒子特效

    java游戏开发入门十 - 粒子特效 java游戏开发入门十 - 粒子特效 前言 编码 创建一个粒子发射器,并将粒子发射器添加到实体对象 效果图 完整代码 完整项目 java游戏开发入门十 - 粒子特 ...

  5. 游戏开发入门系列(目录)

    更新:清华大学美术学院与腾讯游戏学院合作推出了一个新的游戏开发入门课程,相比原来的内容要更丰富一些,我个人也更推荐这门课程,链接如下. https://next.xuetangx.com/course ...

  6. 游戏开发入门(八)游戏中的场景管理

    视频链接:游戏开发入门(八)游戏中的场景管理(5节课 时常:约2小时07分钟) 授课者通过2D围棋的例子,逐步拓展成3D的虚拟游戏世界.这个3D游戏世界基本上就可以涵盖市面上所有类型的游戏了,我们通过 ...

  7. 游戏开发入门(二)游戏开发概述

    这篇文章主要以问题的形式给大家解答下面几个问题: 1.游戏是如何开发出来的,开发流程大概是什么样子的? 2.游戏相关的职位都有哪些? 3.开发游戏需要哪些技术或能力? 4.程序员一般负责的内容有哪些? ...

  8. unity 3d网络游戏实战(全).pdf_“游戏开发入门指南——Unity+”的食用指南

    虽然专栏的文章已在置顶中按内容分好类了([置顶]游戏开发入门指南专栏目录),但不排除仍然有初学者面对繁杂的内容感觉无从下手.因此额外带来一篇食用指南,旨在给想要通过本专栏学习游戏开发的同学一条相对容易 ...

  9. “游戏开发入门指南——Unity+”的食用指南

    "游戏开发入门指南--Unity+"的食用指南 虽然专栏的文章已在置顶中按内容分好类了([置顶]游戏开发入门指南专栏目录),但不排除仍然有初学者面对繁杂的内容感觉无从下手.因此额外 ...

最新文章

  1. Android Gesture 手势识别使用实例 - Android - mobile - ITeye论坛
  2. 【图的DFS】图的DFS非递归算法
  3. OpenReports中文支持方案
  4. pdf安装包_有么有pdf控件,不需要用户安装任何安装包直接打印的?
  5. Docker最全教程之使用Tencent Hub来完成CI(十)
  6. 为什么我喜欢单独编程
  7. 数据装载服务器_操作事项_06
  8. [javaEE] EL表达式调用java方法
  9. 【java】ASM代理方式 Byte-Buddy代理方式 Javassist代理方式
  10. Linux使用Mac键盘,System76 推出 Linux 键盘 看完手痒了!
  11. Windows批处理BAT脚本
  12. 【ROS学习笔记】(六)客户端Client的编程实现
  13. 移动互联网实时视频通讯之视频采集
  14. python把工作簿拆分为工作表_python利用openpyxl拆分多个工作表的工作簿的方法
  15. win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)
  16. 淘宝API接口:item_search - 按关键字搜索淘宝商品
  17. 64位Win10 2004正式版_MSDN我告诉你win10 2004镜像下载
  18. LoraWAN源码学习(1)--通道选择详解
  19. 笑一笑-道高一尺魔高一丈
  20. android ndk如何安装,android NDK安装

热门文章

  1. 低成本网站渗透测试怎么找
  2. 手机端APP促销优惠券优惠活动页面设计模板
  3. Recovery简介
  4. 【撕掉单词书】杨萃先十点课堂视频
  5. CC2530 定时器应用
  6. android虚线如何定义xml,「Do.023」为啥用XML定义的虚线显示成了实线
  7. 炫界 (302) -(查动简)_原302张鸿飞主任退休了吗?菊梅医生:乙肝妈妈的母乳喂养...
  8. 5G时代来临,小程序将成为新的发展方向
  9. TPS60403DBVR 德州TI 具有固定 250kHz 操作的 60mA 电荷泵电压反向器
  10. 获取钉钉花名册接口和枚举类