godot是一个开源的游戏引擎,刚好他要出4.0了,学习一下他的基本功能。
我不会其他的引擎,但是我就是从源码开始,想看下引擎有什么功能。而且我相信他会比Unreal和Unity这种简单很多。
godot官网,godot github,这两个官网。
构建
这个项目使用了c++编写,这很正常,正常游戏引擎都是c++。
scons
这是一个使用scons构建的项目。scons类似于make,区别不大,比cmake偏任务管理一点。这是个python编译工具,所以项目里会有一些python脚本。
SConstruct
是类似 Makefile
的标志性文件,是项目命令的存放处。
输入 scons
一键开始编译,然后运行。它不自带安装,所以我们也不安装了。
删除产物是 scons -c
文件
一个引擎的代码其实是两部分构成的,一部分是编辑器,还有一部分是运行时。特别因为是C++的代码,所以经常需要一个抽象来给这两个不太相同功能的用。
编辑器是一个桌面软件,主要是界面的操作。像 vscode
这种是富文本编辑器。游戏编辑器比富文本还要富一点,但是很多通用的功能会少一点。
运行时是真的引擎,是游戏运行的多媒体环境。要求性能很高,然后还有一个脚本语言的运行时。
所以编辑器是很难做的一个东西。
thirdparty
他用了一些三方库在 thirdparty
文件夹下,都是拷贝源代码。
其中有一些是很基础的,每个发行版会携带的,比如harfbuzz,还有一些是比较前沿的,比如embree。
core
包括了C++语言层面的抽象。众所周知,C++不抽象一套对象什么的东西,浑身难受。
比如各种池,各种异步,跨编译器抽象,设计模式抽象。
driver/platform
这两个是多媒体方面跨平台的功能,分两个文件夹估计因为driver本身是跨平台的。platform更底层一点。
driver里面就是图片,视频,音乐,渲染这种,编辑器引擎都能用。
platform是给最后引擎编译生成的二进制的库,都是安卓ios单独的代码什么的。编辑器用不到,如果你也是编译的,可以看到这里没有 .o
产物文件。
scene
如其名,是场景的功能
modules
最后在编辑器里呈现的功能在modules里面,可以看到里面都是游戏的术语了。
editor
编辑器合体。
main
编辑器之上的cli功能抽象。
server
他甚至还有个server
渲染
渲染用了vulkan
物理
物理用bullet,我都看到了
使用
./godot
打开引擎,是一个项目列表。因为我没有项目,所以这些项目也不知道存放在哪个文件夹下,应该是某个Desktop缓存吧,因为 .local/share/godot
下面已经有东西了。
他还有个模板,可以从官网上下一些模板,不过现在还没有适配4.0的。
这里直接新建一个。
他宣传自己是一个全节点化的引擎,确实,编辑之前需要选择一个根节点,预设了2D,3D,ui节点。确实,开发的时候就2d3d,要上线都是ui。
左下是资源,非常熟悉了。
左上角场景也在很明显的地方。
它和其他引擎一样用的是自己的脚本语言, GDScript
。这个语言有点像Python,反正是个不太行,但是很正宗的脚本语言。
他的脚本也是附着在东西(Actor/Sprite)上的,就还行。
然后我不会了,动手做游戏太难了。有缘再见。