Godot是一款多功能、跨平台的2D/3D开源游戏引擎。可运行于Windows、macOS、Linux等多种操作系统,创建的游戏则可运行于PC、Android、iOS和HTML5等平台执行[1]。
既然是开源的,那么在引擎出了问题的时候,除了向维护者反馈外,我们也是可以自己进行修复的(当然你需要有相应的知识和能力)。修复完的代码当然也可以再被合并到Godot引擎中去,从而造福更多的用户。
那么如何向Godot引擎提交代码?首先你需要拥有修复引擎问题的能力(或者是增加新的功能的能力),毕竟有了代码才可以提交。根据笔者的经验,你至少需要:
- C++编程能力
- 定位问题的能力,或者说找bug的能力
- 阅读文档的能力
- 相关领域的知识(比如:渲染、物理模拟、脚本语言等等)
- 英语沟通能力
- GitHub使用经验
我们将会假设你已经具备了以上的能力。
贡献代码的第一步是将引擎代码在自己的电脑上跑起来!关于这部分的内容,官方文档有很详细的阐述:https://docs.godotengine.org/zh_CN/latest/development/compiling/index.html
此外,你需要fork一份自己的代码仓库:
在提交代码的时候,你只能向自己的仓库提交。在确认无误后,才能向官方仓库提交Pull Request。
那么,如何开始呢?最好的办法是从现有的issues中找到一个你可以处理的问题,从修复这个issue开始(请先确认这个issue目前没有人在负责,比如这个issue是没有相关pr的)。为了培养新的代码贡献者,仓库维护者会专门给相对简单的issue打上junior job的标签,你可以在这些issues中挑选。你还可以筛选你正在使用的操作系统,毕竟在windows下修复一个mac的问题多多少少会让人感到头大:
之后就是没日没夜的debug生活了!等到完成了问题的修复,你就可以将代码push到你自己的远程仓库。在push前请将你自己的仓库的GitHub Actions启用,它会帮助你完成一系列的检查,避免提交PR后再检查出问题返工。这些Actions脚本都是别人已经配置好的,它们可以帮助你检查:
- 编码是否符合规范
- 代码格式是否符合规范
- 代码是否可以编译
对此笔者的建议是:
- 确保你的文件始终是UTF8编码的
- 如果你使用Windows,注意检查你的\r\n和\n换行
- 为你的IDE配置clang-format插件,自动帮助你格式化代码
- 自己在本地进行一些测试
- Commit Message可以参照别人的格式
- 不要把无关的修改push上去(比如为了方便调试做的输出,自己随手添加的便于理解的注释等等)
push上去的代码如果通过了所有的检查,你的界面应该是类似这样的(有一个绿色的√):
确认无误后,就可以到官方仓库提交PR辣!一定要在PR中注明自己都干了些什么,最好给上自己修复的issue的编号。之后就会有仓库维护者来review你的代码,给你的代码提一些建议和意见。按照维护者的要求进行修改,他们就会允许你的代码进行测试(第一次提交PR需要维护者提供Actions的权限。其实你在自己的仓库已经跑过一次了,多半是不会有问题的)。全部通过后你的代码将会被合并到主分支中,你的本次任务也就完成了!
参考资料
- https://zh.wikipedia.org/zh-cn/Godot
暂无关于此日志的评论。