Unite2018 笔记整理

拖了10多天,终于找了一个空闲的周末把 Unite2018 的笔记整理了一遍
我保留了笔记中精华的部分,并在最后整理了其他媒体对一些分享的详细报道。

目录

育碧专业级产品线
利用PlayFab拓展海外市场
LightMap烘焙最佳实践
Unity优化误区
用unity打造AAA光影品质
线性空间与伽马空间
机器学习
《少女前线》CRI中间件
移动端优化以获得最佳后期效果
使用自定义渲染实现酷炫的纹理特效
优化MMRPG
Asset Bundles解析
Shader优化
媒体报道

育碧专业级产品线

管理的目的:
1.按时
2.预算合理
3.人才到位

4.工作氛围
5.质量

利用PlayFab拓展海外市场

游戏的趋势:Free to play
playfab将在明年推出中国版

运维:
1.收集数据
研究50级玩家的在游戏一开始的时候表现,从而引导1级玩家在一开始的行为。
好的游戏次留在60%
研究哪些玩家充值最多,都买了了些什么,他们的行为模式是什么。

当玩家做出你期望的行为时,发送一些奖励给他。

玩家分众:根据玩家分众,提供不同的内容(商店物品)

LightMap烘焙最佳实践

Enlighten -> 在unity5.0版本推出
Progressive -> 5.6(Preview) 在2018.1正式推出

1.全局降低间接光贴图
LightSetting -> indiret Preoluton (降低间接分辨率贴图)
建议值:
2-3室内
0-1室外

2.降低光照贴图分辨率
LightSetting -> resolution
建议值:
间接光贴图的十倍

3.减少reflection resolution (反射贴图分辨率)
3A 不超过512
moba 不超过256,一般游戏不建议超过64*64

4.减少Realtime UvCharts
查看charts: LightSetting ->使用progrsssive
ScenceView ->viewMode ->UVcharts

5.减少clusters
创建LightmapParameters
找到clusterResolution调整每个面最大有几个cluster
建议:
室内 0.3-0.6
室外0.1-0.3
查看Cluster:
scenceView -> clusters

6调整LightMapScale
查看LightMap的分布:
senceView -> bakeLightMap

7改变间接光质量:
Light Paramter -> Irradiance Quality

8解决颜色溢出:
UVPadding 分辨率不够,导致采样出错。

9 Compress LightMaps
有时压缩会得不偿失,压缩后要达到相同效果可能需要的大小更大

10 改变Light参数(光源)
bake shadow angle调高

11 Blur light map
创建Light paramter 设置blur 尝试 3-4 默认 2

12 解决 树叶发黑/石头发黑
给树叶单独加Light Paramter

13 彩色玻璃
meter Pass
stander 自发光 -> 自发光会影响烘焙

Unity优化误区

优化步骤:
1.收集性能数据
2.正确理解数据
3.按照性能影响大小进行排序
4.执行优化
5.比较结果

不同平台结果可能相差很大

用unity打造AAA光影品质

开发建议:
1、cpu粒子 300以内
2.光反射数量 1以内
3.合理使用点光源,控制点光源的范围,可以在性能开销不大的情况下获得很好的效果

i7 + 1070 145帧 在PS4 上才有30帧

线性空间与伽马空间

1.颜色信号与显示器输出
output = input^gamma

捕捉的颜色 != 显示的颜色

Gamma校正
output = input ^1/gamma
(储存时画面会变暗,预加亮)

2.Color Profile
1.颜色波长到数值的对应关系
2.帮助不同显示器结果一致
3.定义gamma值

3.sRGB
最常用的Color Profile
Gamma = 2.02(近似)
同样配置的可省略转换

4.Unity的伽马工作流程
原图 -> Gamma 校正 -> Fream Buffer -> 显示器

5.线性空间:
1.需要新硬件 OpenGL 3.0
2.alpha不做变换
3.只支持每通道9位色

PBR需要线性颜色空间

(要根据图片制作时的颜色空间来更改Unity的导入设置)

为什么有gamma颜色空间
1.历史原因
显示器电压和亮度不是线性关系

2.精度原因
1.人眼对暗部颜色更敏感
2.暗部需要更多亮度
3.亮部可使用更低精度

为什么有线性空间
gamma空间会出错
out = 贴图^gamma x 光照 (错误)
out = 贴图 x 光照

如何选择
真实光照 -> 线性空间
要兼容openGL 2.0 -> gamma
2D 游戏 -> gamma
3D 游戏 -> 线性

PS
photo Shop -> Document Color Profile
Photo Shop 的图层混合是gamma变换

Unity是不做的,所以图层混合的效果是不同的,所以截图和游戏画面有差异

机器学习

《莫烦python》

《少女前线》CRI中间件

CRI: 为主机和PC提供音频中间件支持

1.实时避让
2.音效参数随机变换与控制
3.通过优先级设置音频触发条件(反复播放问题)
4.对BGM进行淡入淡出
5.利用动态参数实现互动音乐效果
6.批量管理音频触发条件
7.通过In Game View实时预览

画面
[sofolec2]
1.支持alpha通道 的轻量视频中间件
2.画质出色
3.使用场景丰富
4.降低开发难度

视频编码:
sofdec.prime ->支持alpha 软解码
H.264 -> 高压缩比 仅硬解码 不支持alpha
VP9 -> 即将上线 支持 alpha 高压缩比 软硬解码

用视频播放序列帧,简化游戏制作流程
新手引导播放录制好的游戏场景

视频分辨率 (1280 * 720)

移动端优化以获得最佳后期效果

Spellsouls[魔法主题卡牌]

1.PBR shading(黑暗真实)
2.光线区分
Blinn-Phong
Point Lights
Per Pixel

Forward Plus 渲染

bloom优化:
场景:将一张Bloom贴图与原资源混合
角色:给角色增加一个公告牌表现bloom

把事做对
做对的事

使用自定义渲染实现酷炫的纹理特效

链接

优化MMRPG

cpu
1.GC
2.序列化
3.GetsetAPI
4.Debug
5.闭包(不要使用闭包)

Camera.main每次使用也有开销

UGUI:
Mask -> RectMask2D 替换
GraphicRaycaster 去掉不必要的
LayoutOut 能不使用就不使用
Canvas.camera 不要为 null

静态合批
API: static BatchingUtility.Combine
使用插件 Mesh Baker

动态合批
1.定点限制 900以内
2. 有 Light Map 不能合批

2017.3支持32bitmesh合批,65k顶点
Batch不是唯一因素,关注setPass

instanceing -> 高通300系列无法使用
用高度图判断高度(以提高碰撞检测性能)

Asset Bundles解析

bundles : 包含平台相关的序列化对象
分为两种:场景bundle和perfab bundle

新的工具:
Asset Bundle Graph Tool 5.6 以上可使用
Assets Bundle Browser可查看AB大小

WebExtract
Binary2Text: 将bundle 2进制数据变为可读文本
命令: -petil -hexFloat(修复某些情况下导出数据看起来完全一样,其实在16进制下不同的问题)

load/unload ID 唯一

工具: Assets Bundle Inspector
通过C# mono 读取 Bundle,在监视面板查看

内存占用:
Serialized File
记录重建数据
14K File Read Cahe
TypeTree
可以关闭 Type Tree

Shader优化

在liner空间下用gamma有额外开销
float2 2D_TextureSize 可直接拿到贴图宽高
[PerRenderData]
不将Color序列化到材质球

应调整渲染顺序,最先渲染不透明物体

Grab Pass 起名后会优化性能,不必每次都抓取

用Shader feature 替代 muticomplete,不打包不需要的shdaer变体
变体收集器不能正确打包变体
使用空场景 -> 挂变体
放到Resources目录下

Assets Bundle 需将 Shader和材质放在一起。

媒体报道

从AAA游戏到实时渲染的动画电影
《旅行青蛙》小规模开发的匠心独运
育碧-《Eagle Flight》背后的研发
《崩坏3》:在Unity中实现高品质的卡通渲染(上)
《崩坏3》:在Unity中实现高品质的卡通渲染(下)
使用自定义渲染实现酷炫的纹理特效

kisence

潮落江平未有风。