unity3d框架的先进性

1.热更新

逻辑代码热更新, 是客户端框架的一个重要功能, 主要解决的是上线期的问题. 这个特性能及时的修复bug, 增加功能, 减少用户在游戏版本升级时候的流失(因为只需要小更).

不带热更新的框架, 通常意味着在这套框架上做的游戏没有什么上线经验.

目前, 较为常见的热更新方案是两种

  • lua代码热更新(最多)
  • c#代码热更新(要注意iOS也要热更)

2.实时战斗

这里有三个要求:

  • 实时性: 有接入过状态同步的战斗, 或者帧同步的战斗
  • 战斗逻辑大部分在lua层实现, 可以热更
  • 性能优化

实时性, 这里体现了客户端网络层代码和预表现层的实力, 能做到实时战斗的客户端不多, 帧同步的更少了.
战斗在lua, 则体现了对lua层与c#层之间的性能瓶颈的理解, 还有对战斗底层封装的完备性.
性能优化, 游戏中最耗资源的地方通常是多人同屏战斗, 对战斗的性能优化, 涉及了网络层, 竞技计算层和预表现层, 还有对美术规范(资源)的要求.

3.工具集

工具分成两大类,

  • (1) 度量工具, 了解指标
  • (2) 自研工具, 提高生产力

度量工具, 主要是unity自带的工具: Profiler, Frame Debugger, Occlusion Culling, Navigation, 还有就是Adreno Profiler(高通)等. 用度量工具的人, 基本就是程序员或者TA了, 他要能够熟练使用度量工具来定位问题, 找到性能瓶颈. (然后才会有解决性能的方案)

上海侑虎就非常擅长利用度量工具得出性能指标, 进而指导他的客户(游戏公司)调优游戏性能.

自研工具, 主要是集成在unity3d里, 给项目组成员使用, 也就是对游戏制作的整个pipeline非常了解, 把其中的每个节点可以自动化的部分, 制作成工具提高生产力.还有一些自研工具, 是集成在美术资源开发工具(3dmax)中. 除了提高生产力, 还能规范输出.

做自研工具的人, 最难的是他会了解所有相关岗位的业务过程. 并能制作工具来代替一部分的人工, 规范输出, 不给人工"犯错的机会". 举例: 战斗编辑器, 就是一个很核心的工具, 一定是做核心战斗的程序员写的. 让策划可以配英雄, 配技能, 配数值, 让美术调表现, 调性能.

4.美术规范和图形学(shader)

从2d到3d, 对于美术规范的要求大大提高.

首先是能提出并维护好美术规范,

  • 同屏面数
  • 材质球
  • 骨骼
  • 特效粒子
  • 贴图规格
  • UI图集打包
  • ...

接着是用什么机制(工具)来检查和保证美术规范达标, 从而在性能和表现中找到最优解.

图形学部分, 我想把shader先归类在这里. 因为美术规范和shader通常是TA的工作内容, 他们熟练使用度量工具找到性能瓶颈, 然后利用图形学知识, 找到高性价比的方式(比如shader)来实现表现.

5.工程管理

因为商业化项目都有保密的需求, 所以如何对工程进行加密, 混淆, 避免代码流出, 也是一个强需求. 成熟的团队里, 会有美术工程, 让美术人员在美术工程制作预制件, 再用工具导入到主工程中, 减少直接接触代码的人数.

多版本同时制作, 怎么同步代码和资源, 还有考虑到更新, 对工程管理的要求也很高.

想要解决问题, 要用好gitlab, 以及自动构建.

6.unity版本号

unity的自身bug是很多的, 但这几年快速发展, bug修复的也很快, 所以适当的跟进官方版本是必要的. 这代表着框架维护人员的技术实力和追求. 而能够知道每个版本之间的差异和升级框架所花费的代价, 就是对积累最真实的检验.

每次unity版本升级, 除了unity代码适配, 还要注意整个工具链的适配, 特别是使用了第三方工具的情况.

7.平台适配和sdk接入

需要掌握主流手机平台的特性与语言

  • 安卓
  • iOS

不同平台的语言特性各不相同, 至少要再掌握两种语言. 时不时的, 各平台还会有升级适配的需求, 比如新的iOS发布, https, 64位应用等等. sdk接入, 需要耐心.

总结

一个unity3d的框架, 所涉及的知识点是又宽又深. 所以能维护好这样框架的, 一个人是不够的, 需要的是一个团队. 能拥有这样的框架, 一定是一个团队多年的积累和验证.

人才, 是手游公司最核心的资产.¡

你可能感兴趣的:(unity3d框架的先进性)