我对游戏引擎的一些看法
在 IT 业界里,与一些程序员聊天时,可能聊到一些游戏的画面如何好看。对于不开发游戏的程序员来说,他们很可能会认为主要由美工在三维软件里创建资源,然后放进所谓“游戏引擎”的黑盒中,就能得到这些结果。
但这个黑盒到底做了些什么才能把图形画出来?除了我们肉眼看到的图形之外,游戏引擎还做了什么工作,因而才被称为游戏引擎而不是图形引擎?不开发游戏的程序员可能很难想象出来。甚至由于近年闭源的 Unity 引擎在商业上的成功,即便是游戏程序员对于这个黑盒的了解程度也比较有限。
从软件开发的角度来说,抽象通常是好事。我们一般不需要了解每个 CPU 的半导体制作工序,不用知悉某操作系统的文件系统采用了哪种数据结构。那为什么巿面上有这么成熟的游戏引擎,多数国际游戏开发商所制作的顶级游戏会采用自研游戏引擎?
我认为,一般商用游戏引擎以通用性、易用性为目标,但游戏是多元化的,不同类型的游戏有不一样的需求,同时顶级游戏会尝试研发更前沿、更极致的体验,易用性对于专业团队来说反而是次要的。
自主研发游戏引擎,不仅需要大量资金,还需要专业技术人员。你需要找到最好的游戏引擎开发人员,然后让他们长期投入这样的技术建设,而不是开发一些短期能赚钱的项目。我相信,这种长期投资对于国内游戏业的发展非常重要。
前些年国内手游的井喷式爆发,导致每款游戏的开发周期从以年计算缩短至以月计算,自研引擎难以跟上这种研发节奏。Unity 的成功也促进了游戏公司在商业上的成功,但同时我感到业界的技术人才也出现了严重的断层,新入行的游戏程序员在面对黑盒时大部分情况下只能靠猜,对性能的敏感度也在降低。
我个人认为,即使使用通用的游戏引擎,了解游戏引擎的原理和实现对于技术成长也非常重要。知道黑盒的原理和实现,一方面能在使用时更得心应手,另一方面可以针对项目的特殊需求去扩展游戏引擎的功能。近年 Epic Games 对移动平台的投入,以至提供 Unreal Engine 的源代码,吸引了不少项目采用。
总之,了解游戏引擎的理论和实现已经成为游戏项目中的技术关键之一。
游戏引擎技术在国外发展十分迅速,根本原因在于国外的从业者有很扎实的基础,每一代引擎都是根据游戏迭代而来的。国内游戏行业起步相对较晚,再加上从业者有时急于求成,引擎的人才积累远远不如国外,导致国内的自研引擎企业寥寥无几。学习游戏引擎开发的门槛很高,不具备一定知识是很难自学的,这就让很多想学习引擎的人觉得遥不可及。
但这个黑盒到底做了些什么才能把图形画出来?除了我们肉眼看到的图形之外,游戏引擎还做了什么工作,因而才被称为游戏引擎而不是图形引擎?不开发游戏的程序员可能很难想象出来。甚至由于近年闭源的 Unity 引擎在商业上的成功,即便是游戏程序员对于这个黑盒的了解程度也比较有限。
从软件开发的角度来说,抽象通常是好事。我们一般不需要了解每个 CPU 的半导体制作工序,不用知悉某操作系统的文件系统采用了哪种数据结构。那为什么巿面上有这么成熟的游戏引擎,多数国际游戏开发商所制作的顶级游戏会采用自研游戏引擎?
我认为,一般商用游戏引擎以通用性、易用性为目标,但游戏是多元化的,不同类型的游戏有不一样的需求,同时顶级游戏会尝试研发更前沿、更极致的体验,易用性对于专业团队来说反而是次要的。
自主研发游戏引擎,不仅需要大量资金,还需要专业技术人员。你需要找到最好的游戏引擎开发人员,然后让他们长期投入这样的技术建设,而不是开发一些短期能赚钱的项目。我相信,这种长期投资对于国内游戏业的发展非常重要。
前些年国内手游的井喷式爆发,导致每款游戏的开发周期从以年计算缩短至以月计算,自研引擎难以跟上这种研发节奏。Unity 的成功也促进了游戏公司在商业上的成功,但同时我感到业界的技术人才也出现了严重的断层,新入行的游戏程序员在面对黑盒时大部分情况下只能靠猜,对性能的敏感度也在降低。
我个人认为,即使使用通用的游戏引擎,了解游戏引擎的原理和实现对于技术成长也非常重要。知道黑盒的原理和实现,一方面能在使用时更得心应手,另一方面可以针对项目的特殊需求去扩展游戏引擎的功能。近年 Epic Games 对移动平台的投入,以至提供 Unreal Engine 的源代码,吸引了不少项目采用。
总之,了解游戏引擎的理论和实现已经成为游戏项目中的技术关键之一。
游戏引擎技术在国外发展十分迅速,根本原因在于国外的从业者有很扎实的基础,每一代引擎都是根据游戏迭代而来的。国内游戏行业起步相对较晚,再加上从业者有时急于求成,引擎的人才积累远远不如国外,导致国内的自研引擎企业寥寥无几。学习游戏引擎开发的门槛很高,不具备一定知识是很难自学的,这就让很多想学习引擎的人觉得遥不可及。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算