拖了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是不做的,所以图层混合的效果是不同的,所以截图和游戏画面有差异
机器学习
《少女前线》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中实现高品质的卡通渲染(下)
使用自定义渲染实现酷炫的纹理特效