|
基础方面:
熟练掌握C,C++基础,对内存分配,内存管理,生命周期有比较熟练的控制。熟练多线程编程,了解并行,并发原理,并尝试自己开发一款了解计算机组成,对硬件缓存,堆栈的优化,编译原理等有比较清楚的认识。做到对数据结构的灵活应用:如队列,堆,数组,哈希查找,二分查找。掌握基本算法,如排序算法,空间几何算法等。了解Unity中如Mono VM, IL2CPP, Boehm GC, Burst Compile这些实现的基本用途以及特性。掌握各种面向过程和面向对象编程的设计模式。进一步学习其他编程模式如面向数据设计,函数式编程等。学习一个图形API,如DirectX 11, DirectX 12, Vulkan等等都可以,对游戏引擎底层有一定了解。
引擎方面:
掌握基础的逻辑组件使用,如Navigation, UGUI, Macanim等,并尝试自己开发一套背包系统,一套FPS,TPS控制器。掌握一定游戏服务端开发技术。掌握一定数据库技术,能够完成游戏存档,读档,联机数据存储等需求。掌握Unity资源管理系统,包括新版本的Addressable, Scriptable Building Pipeline等,并尝试制定一套能够应付大量资源管理的工程流程。对性能优化如:逻辑执行优化,GC优化,算法优化,渲染优化。能够快速Profile并锁定性能热点,在因为性能需要权衡特性时,准确对游戏中的特性的重要性进行排序和分类,确定哪些该简化哪些该腰斩。熟悉Unity渲染,如SRP, Shaderlab等,能够独立开发一款五脏俱全的渲染管线。熟悉Unity编辑器与其他开发软件的互动开发模式,如Houdini Engine等。
本篇回答暂不涉及到美术,策划等方面。程序方面做到这些就差不多可以考虑开始开发一款Unity游戏了,但是开发中依然会遇到各种奇妙的问题,这个只能等开发者自己慢慢踩坑慢慢解决了。 |
|