《Unite 2019》笔记整理

目录

《头号玩家》Unity虚拟拍摄方案解析
用刚体控制角色移动的实践
Marvelous Designer 动画创作工作流在 Unity HDRP 的实现
UDP助力手游四海为家
二次元向高品质着色器解决方案:Unity-Chan Toon Shader 2.0 介绍
《不可思议之梦蝶》从 PC 版移植到 Nintendo Switch 经验分享
游戏开发者出海监测的几个关键问题
爆款的诞生:《胡闹厨房2》的多人游戏模式解决方案
如何将游戏转为 DOTS 模式
使用 Unity Tiny Mode 进行原型设计
闪耀暖暖技术分享:2D 到 3D 的进化与创造之路
Unity AI 自动化游戏测试
游戏架构和云服务的耦合前瞻 —— 匹配对战和连续大世界
提升收益的组合拳:广告变现 与IAP 内购
Unity 轻量级渲染管线(LWRP)源码及案例解析
Unity 游戏开发优化案例
Unity 的 Asset 管理和序列化
Unity 中的实时光线追踪技术剖析
基于 Unity 的手游基础服务框架的研发
一步解决 Unity 游戏新安全风险
媒体报道

以往笔记

Unity2018
Unity2017上
Unity2017下

《头号玩家》Unity虚拟拍摄方案解析

媒体报道

用刚体控制角色移动的实践

用CharacterController控制的角色与场景交互比较简单
用Rigbody交互比较真实自然
CharacterController仅适用于标准FPS移动

落地检测方法
1. 射线检测点
2. Rigbody.velocity < 0

  • 可以用速度变化计算落地伤害
  • 可以用水平方向的速度变化判断角色是否被推走
  • 调整Rigbody.drag的值可以表现浮空效果
  • 可用于计算斜面行走的体力消耗/移动速度

超大型角色
用动画控制移动,用物理运算挤开玩家

要注意FixUpdate在一个Update周期之间可能调用多次

斜面上的地形模拟

  1. 设置Physics Material
    • 墙壁的 friction 系数小
    • 地面的 friction 系数大
  2. 根据Rigbody.velocity更改角色的动画

Marvelous Designer 动画创作工作流在 Unity HDRP 的实现

制作过程

  1. 服装在Marvelous Designer制作(不需要专业服装知识)
  2. 在Maximo制作板片
  3. 在Marvelous Designer进行布料模拟
  4. 在Unity创建动画(设置高清渲染管线)

制作服装

  1. 方法一:自己制作
    • 在various patterm下载想要的服装款式
    • 以该图片为背景描绘轮廓
    • 会遇到身材不匹配的问题,MD可以自动调节
    • 手动微调
  2. 方法二:直接购买,也有免费素材
  3. 方法三 使用Flatten功能

制作板片

  1. 打开Mixamo网站
  2. 上传FBX
  3. 选择重要连接点
  4. 导出

布料模拟

  1. MD是最容易,准确率最高的布料模拟软件
  2. 问题解决
    • 大多数问题都是动作太快,可以通过拉长模拟时间解决
    • 不建议用normal模式,该模式一般用来快速预览,在complete模式下大部分模拟都比较稳定
    • 调节 time warp ,但是在快速动画中会出现的褶皱不会在慢速出现,不推荐

导入Unity

  • Unity支持Pc2格式
  • alembic格式更好,但是需要安装alembic插件
  • Post Processing 后期处理(校正颜色,环境光散射,实时查看景深)
  • 通过Unity Recorder导出视频,(截图方式,方便后期,时间也快)

Real Time(实时渲染)

  1. 加载布料引擎
  2. 放服装进入游戏

UDP助力手游四海为家
  1. 东南亚
    • 本地化很重要
    • 东南亚国家80%玩家没有信用卡,支付成功率很低
    • 通过弹出Web页面实现第三方支付
  2. 韩国
    • 总量200-2500万人
    • 通常关注留存,用户体验
    • 政府要求较高,需提供相关文件

二次元向高品质着色器解决方案:Unity-Chan Toon Shader 2.0 介绍

UTS组成

  • Base Color
  • 1st Color
  • 2nd Color

Github地址

方便的用户手册以及操作界面
可以直接在booth购买预设方案

《不可思议之梦蝶》从 PC 版移植到 Nintendo Switch 经验分享

用了很多插件,见链接

  1. 不能使用Unity Input
  2. Rewired插件可以提供很好的支持
  3. HD震动,加速计,参考范例
  4. 注意Joy-con 的五种输入方式
    alt

  5. 存档I/O需要重写

  6. 没有默认的奖杯界面,需要自己制作
  7. 内存较小 1G内存
  8. 插件需要平台授权费
  9. 声音格式
    • 支持Opus格式硬解压
    • 使用Wwise,选择OpusNX格式

优化
1. 使用git来管理不同版本
2. 将声音使用steam方式读取
3. 通过Console -> Editor Log 查看资源实际占用
4. 用二分法排查SDK导致的崩溃

游戏开发者出海监测的几个关键问题

追踪链接:(监测广告推广的效果)
国外三家:

  • Kochava
  • Google
  • Adjust

国内两家

  • Talking Data
  • ShareInstall

如何选择渠道 如何防止假量 几个有用的功能 如何精准定位受众

如何选择渠道
自归因渠道:计费由渠道方自行决定

  • Google
  • Search Ads
  • snapchat
  • facebook
  • twitter
  • Display & Video 360

非自归因渠道:

  • Amazon
  • Moloco
  • Pinterest
  • Criteo
  • Unity Ads

每个季度的报告可以去kochava官网下载
2019第一季度的报告在这里

假量分析
10大推广渠道,84%产生假量
27%的安装是虚假的
70%的假量是安装劫持(监听到App安装后,上报一条广告点击事件,2016年由以色列人发现)
安卓45%的点击是假量,IOS平台少于1%

2019年假量有所收敛,原因是记者报道,google下架了百度的48款产品也是原因在此。
今日头条开始与Google/FB竞争渠道市场。

防假措施
1. 全球假量黑名单
2. 防伪控制台
3. 屏蔽“广告堆叠”等造假措施

对开发者有用的功能
1. 永久排重(避免重复计算,永久保留原始数据)
2. Tracker归因窗口,(按照广告类型区分结算时间)
3. 实时查看留存
4. 花费以及ROI监测
5. 源数据SQL查询
6. 漏斗分析以及客户召回(可以向流失用户推送定制化消息)
7. 跨设备监测

如何进行精准定位

  • 可选择多个维度进行投放“例如选择有Unity游戏的用户”

爆款的诞生:《胡闹厨房2》的多人游戏模式解决方案

媒体链接

如何将游戏转为 DOTS 模式

DOTS=

  • JosSystem
  • ECS
  • Burt Compiler
  • Project Tiny

使用DOTS的理由:

  • 性能高
  • (这里我补充一点,ECS的架构在编写代码时效率也是非常高的,结构简洁清晰)

使用Unity Tiny进行原型设计

传统迭代方式:

  1. 概念
  2. 设计
  3. 开发(最耗时)
  4. 安装
  5. 测试
  6. 反馈(回到1)

使用Unity Tiny砍掉开发流程,通过架设Web服务器的方式,跳过编译环节
要求:

  • 确定所有可调的参数
  • 将参数集中在一个类里

闪耀暖暖技术分享:2D 到 3D 的进化与创造之路

媒体链接

Unity AI 自动化游戏测试

通过蒙特卡罗方法预测玩家行为

  • 记录选择路径
  • 取选择的方向
  • 取选择的概率(有随机性的情况下)

C Value :好奇心/贪婪之比

最后根据AI的平均胜率判断关卡难度
更深的网络层数可提高AI能力

游戏架构和云服务的耦合前瞻 —— 匹配对战和连续大世界

匹配对战游戏服务器架构 架构构图

弹性伸缩

  • 解决痛点,业务规模呈周期波动
  • 容器服务(TKE),秒级启动

延迟问题

  • 现有方案:根据玩家的网络情况把不同玩家匹配在一起
  • 前瞻:根据匹配成功的玩家快速启动示例(就是服务器在有玩家匹配的情况下按需启动)

连续大世界
目标

  1. 复杂计算
  2. 支持超大世界场景
  3. 场景无缝切换
  4. 拓展不需要停机维护

方案 架构图2

  1. 分布式架构
  2. 基于空间位置作为索引保存数据
  3. 以矩形为基础进行数据储存并记录边界信息
  4. 实现实体在保管者的移动和保管范围的扩缩

架构图3

  1. 对运行规则进行切分
  2. 为每条规则建立事务集群,对实体保管者进行读写
  3. 规则模拟器独占写权限,分享区域边界读权限(边界大小:一个刚体的最大体积,AI:一个对象的最大视野)
  4. 玩家可看做一种特殊的规则模拟器

架构图4

提升收益的组合拳:广告变现 与IAP 内购

Unity Ads

  • 连接设备1.7B
  • 月视频展示次数 10.5B
  • 每日游玩时数 8.8B

优势:

  • 提前获得玩家类型
  • 提供内购广告和视频广告两种方式适应不同人群
  • 根据数据后台分析玩家属性(我们可以自己建立一个)

Unity 轻量级渲染管线(LWRP)源码及案例解析

对比:

  1. 传统渲染管线一个光源是一个pass,轻型渲染管线一个pass对应多个光源
  2. 轻型渲染管线对光源有限制 < 4个

尽量不要使用多摄像机,会造成比较大的性能开销
FPS游戏里枪支和场景是分开渲染的,一般场景的FOV是80,枪支是40

通过设置渲染顺序避免像素重复填充 在Camera中设置深度缓存

通过修改代码使运行时修改Render可行
将renderFeature 设为public

Unity 游戏开发优化案例

自研Batch合并工具调整参数来实现DrawCall与包体大小的平衡

材质:区分共享材质和区域材质
图集:大厅和游戏内做两套独立图集

Unity 的 Asset 管理和序列化

Unity 内置的序列化格式

  • Streamed Binary Read/Write
  • YAMLRead/Write
  • JSON Read/Write
  • Remap PPtm

Assets 导入管线:

  1. 分配GUID
  2. 创建.meta文件
  3. 序列化数据并保存在Library文件,()

GUID:

  • 分配给GUID
  • 长度为128bit
  • 保存在meta文件中

FileID:

  • 分配给Object
  • 保存在序列化文件中(Library)

GUID 和 文件ID

  • !u!4&998431354
  • Transform
  • Class ID:4
  • File ID: 4998431354

Import Assets
所有非unity原生的资源格式会根据setting和目标平台进行资源处理和序列化

Library Folder

  • metadata序列化文件
  • metadata的文件名就是他的GUID
  • 按照Assets GUID的前两位hex进行分组
  • 共256个文件夹

binary2text

  • metadata默认状态是二进制形式
  • 可以在这个路径找到 Unity\Editor\Data\Tools\binary2text

Shader Assets
* 读取shader时会解压缩,导致加载尖峰

Script Assets
只在Editor中被序列化的

  • m_script
  • m_Icon Unity调用Update等特殊API是将所有接口筹集到一个特殊容器中然后遍历,并没有用到反射。

Model Assets
勾选 mesh compress,会抹掉顶点,但会压缩,建议关闭。

Unity 中的实时光线追踪技术剖析

DXR结构:
结构图1 结构图2 结构图3 结构图4 结构图5

基于 Unity 的手游基础服务框架的研发

为什么不使用第三方SDK解决方案

  • 第三方SDK有滞后性
  • 想要的部分功能缺失
  • 缺少源码

每个功能是一个核心模块 建议使用Gradle进行编译,节约解决SDK冲突时间

经验:

  • 使用C# Attribute方便管理
  • 不要低估SDK维护成本
  • 自动化能大幅提升开发效率
  • 原生平台开发比较复杂

提问:
接入微信SDK时,若要求代码的包名与设置一致该如何解决?
答,自动生成并编译代码。

一步解决 Unity 游戏新安全风险

破解工具:

  • ILSpy
  • dnspy
  • Cheat Engine
  • Reflector

IL2CPP可以提升安全性,但是不够安全

反破解方案:

  1. 文件加密
  2. 方法加密 + 字符串加密
  3. 指令加密

在Projectsetting中勾选一下就可以生效 目前还在Demo阶段

有些开发人员调试开关打开project Setting.asset就可以找到,但是不会在面板中出现。

媒体报道

《使命召唤》手游引擎技术的升级与演化
用AR Foundation实现多平台AR的开发
爆款的诞生:《胡闹厨房2》的多人游戏模式解决方案
闪耀暖暖技术分享:2D 到 3D 的进化与创造之路
《头号玩家》背后的技术:Unity虚拟拍摄解决方案解析

kisence

潮落江平未有风。