Yes

Keep It Simple, Stupid.

LearnGameEngine-a0

Posted at — Nov 20, 2020

LearnGameEngine

写在前面的废话

以前说给前端同事写个底层的渲染教程,这个事情搁了很久,最近给想起来了,本身只准备写渲染的,然后又有小伙伴需要一份C/C++的教程,于是把编程加上了,现在这个教程只需要初中2年级就可以学习了。

如果有看了不懂的或存在错误可以给我私信勘误,我看情况对它修正。
如果是个游戏玩家,从中可以学习到如何让电脑打游戏更加流畅,购买到最合理的硬件。
如果是个文员,可以掌握到如何让电脑更流畅,获得更高的自动化办公技巧。
如果是策划,可以学习到脚本的基础用法,游戏策划可以学到美术或程序的工作量规划。
如果是是学生或者是游戏开发爱好者,可以学习到以上技巧和游戏开发必修知识,开发自己理想的游戏。
如果是美术,想升为TA技美必须要从教程开始学到结束:主要是渲染器与shader。
如果是测试,可以学习基础编程再转到python这些高级语言上,这是必修。

章节内容不会像CS课本那样专业且权威,字字珠玑,全覆盖知识。这教程主打兴趣驱动,快速理解为主,甚至为了更快的理解,会告诉你错误的理论,这就像小学时期,老师会教世界起源是大爆炸,到了大学会教到起源不是大爆炸,这些是为了方便当前层次的人理解而写出的错误理论。

所以优秀应当是愚蠢且容易理解的(PS:不要引用教程的内容,被人断章取义会很尴尬),到了后面层次会纠正原来说过的理论,这教程是精简后的必修知识,每篇都需要认真学完再继续下一篇,如果你是零基础的懒人,又想最快的学习编程,这篇教程应该是最好的。

更新是看情况周更。

简介

在这些年里图形卡设备更新换代,学习资料太少,过去的几年里出现了LearnOpengl, ogldev等等优秀的开源教程,可惜其中缺少核心的特性,如设备兼容,动画、粒子、级联阴影、环境光遮蔽等,在此编写的引擎内置的渲染器主要以LearnOpengl为基础,进行核心扩展改进嵌入引擎。

目标

只需具备初一数学基础(不具备看1小时的书应该就可以)
目标:达到C语言掌握(1天学时)C++入门(4小时学时)水准
并以此从零开始制作属于自己的游戏引擎:NoobEngine(中文名翻译过来叫沙貂引擎?)
下面的英文不必理解属于术语名字,你用翻译软件也翻译不好。
渲染器具备AAA引擎必备特性:Phong-Lighting(冯氏光照),Shadow-Mapping(阴影贴图),directional-light(平行光),point-light(点光),最后看时间扩展Cascaded-Shadow-Maps(CSM级联阴影)和Ambient-Occlusion(SSAO屏幕空间环境光遮蔽);
其他包括:骨骼动画运算器;碰撞器;网络通讯;设备控制器;脚本解释器。

渲染3D算法中,在全动态的Ray-trace GI算法出来之前,ShadowMapping算法依然是世界最优的,就算GI出来了,10年内手机也运行不动。

引擎不打算实现但可由个人扩展的特性:LOD,GI,Editor,FFT ocean,PBR,SSS,SSR 在保证性能足够的高的条件下,尽可能的运行在所有平台,目标在Macbook这类图形性能较弱的超级本上可以流畅运行。

设计

遵循Unix哲学一:小为美。(尽量解除耦合,抽中间件)
遵循Unix哲学二:让程序只做好一件事。 (同上)
遵循Unix哲学三:尽可能早地建立原型。 (以快速成型为目标,不浪费时间进行前期性能优化)
遵循Unix哲学四:可移植性比效率更重要。(No hacking)
遵循KISS原则:Keep It Simple,Stupid。(保持简单愚蠢,方便学习理解,性能优化放到最后)