前段时间用godot做了一个小小游戏demo,算是入门了一下这个引擎,后面可能会继续学习,我会记录一些学习笔记,通过记录笔记学习会更快一些,希望大家多多交流。
官方给了一套很好的实例项目,是一个学习的宝库。这个仓库非常好,初学者我非常建议每个project都打开运行一下,能学到不少东西。
https://github.com/godotengine/godot-demo-projects
并且还给了一个可玩的射击类游戏demo
https://github.com/godotengine/tps-demo
godot是个开源引擎,包括编辑器运行时的代码都是开源的,最新版本是godot4.3
godot引擎的作者非常有意思,他不喜欢引入第三方插件,几乎所有的东西都自己来写,包括脚本系统和物理引擎都是自己写的。
开始godot使用了lua,但是多线程/拓展方法/原生向量/垃圾回收等这几方面第三方解释语言无法和Godot引擎结合的更加紧密,所以作者开发了gdscript语言,类似python语言。在引擎源码中他写了一套解释器来执行gdscript语言,ios热更新就这样天然被支持了,全平台都能很好的支持了gdscript语言。
解释形语言运行效率是会打折扣的,godot还支持了C#语言,作者在新版本中已经全面拥抱.NET8,放弃mono,godot中是没有unity这种il2cpp技术的。C#效率会比gdscript语言更高,但是iOS没办法热更新,iOS使用AOT,其他平台则使用JIT执行(可以热更)。
gdscript语言被发明出来的时候肯定是没有IDE支持的,所以godot作者又写了一个IDE内置在自己的引擎中方便开发者编码。目前来看我感觉IDE可以选择JetBrains Rider ,有gdscript语言的插件,还有C#语言的插件,支持调试下断点都很方便。
godot的shader语言是gdshader,语法类似glsl,也可以在他写的IDE里面写shader.
godot还提供混合编程,gdscript和c#混合调用,gdscript本身可以更新,这样给热更新提供了一种新可能。
支持C++拓展, GDExtension API 的形式正式提供,不需要修改引擎源码使用C++代码。
godot4.3目前c#现在是不支持web平台的,这样微信小游戏就无法支持,如果使用gdscript语言就比较好支持微信小游戏,网上有开源解决方案。但是我感觉应该有不少坑需要填,对于微信小游戏这块unity团结引擎确实强~
https://github.com/godotengine/godot/issues/70796#issuecomment-1618006609
作者大概解释了一下,游戏引擎的入口是C++并非C#,它需要通过C++来调用C# 目前.NET版本不支持,需要等NET8,可是.NET8已经发布,他们上周又尝试了一次还是失败了。(可以持续关注)
Godot和Unity开发上有个很大的区别,godot是完全的面向对象模式,而Unity是面向组合模式开发(挂脚本),Godot只能给一个对象绑定一个类,并且它只能单向继承。
我在列举一些我看到的比较有意思的功能
PBR默认材质的功能比unity要全
支持像unity那种shader graph连连线制作shader的功能。
CPU和GPU粒子,体积雾
3D和UI之间叠层穿插提供了比较好的解决方案,3D界面很好支持,SubViewport
3D和2D 导航网格寻路
3D瓦片地图
还有很多我也在慢慢探索中…
- 本文固定链接: https://www.xuanyusong.com/archives/5126
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表