开源游戏引擎
通过视频游戏,越来越多的学生正在学习开源世界。 像FreeCiv和Minetest这样的开源游戏邀请年轻的玩家来研究源代码,而像SpigotMC这样的项目则使他们能够编写插件来扩展自己喜欢的游戏。
不幸的是,用于构建游戏的开源工具并不具有相同的地位。 罗切斯特理工学院的学生Matt Guerrette希望通过其开源游戏引擎Hatchit来帮助改变这一现状 。
Hatchit简介
Guerrette和同学Arsen Tufankjian于2016年2月创建了Hatchit。他们认为,他们在课堂上和个人项目中使用的流行游戏引擎更注重设计,并且缺乏所需的技术细节。 他们共同决定构建自己的游戏引擎,其目标是使开发人员接触该过程的技术方面。 Guerrette说:“我们希望为您提供游戏引擎编程方面的更多访问权限。”
Hatchit用C / C ++编写,并获得GPL和LGPL的混合许可。 该项目最初旨在利用DirectX API进行开发。 但是,Guerrette和Tufankjian在开始时遇到了意外事件。 Nvidia与DirectX API竞争发布了Vulkan API。 他们试图同时支持两个API,但后来选择专注于Vulkan。
灵感
Guerrette希望通过Hatchit完成特定类型的任务:他希望能够构造渲染通道,而不是由引擎在内部对其进行处理。 较早的项目激发了对此功能的需求。 通过能够实时创建渲染通道,开发人员将能够创建类似于自定义着色器的东西,该着色器可以实时将顶点弯曲为笔直的几何形状。 他较早的项目《井井之地》(Mineshaft Mayhem )演示了此概念, 井井井架似乎是在翘曲和转弯,但实际上在编辑器中通道是直的。
现在发生了什么
自从开始该项目以来,Tufankjian毕业了,现在就职于Amazon Game Design。 整个夏天,社区开始对该项目表现出兴趣。 他们已经收到核心开发团队外部的一个成员的拉动请求,并且针对该引擎的不同存储库提出了多个问题。
Guerrette对于今年的项目有几个里程碑的想法。 他正在从事的最大任务之一就是实现并运行Vulkan渲染器多线程设计。 这极大地加快了在项目上工作时的渲染时间,并且也被证明是迄今为止最大的挑战之一。 除了多线程设计之外,他还希望使用JSON序列化游戏对象和组件。 这将使编辑器应用程序更容易使用Qt修改游戏数据和操纵配置。
公开工作的好处
在GitHub上进行该项目的工作以各种方式使该项目受益。 最有效的方法之一是让人们提出问题并引起对部分代码的关注。 Guerrette说:“让世界关注您的项目来发现错误是一件好事。” 在一种情况下,有人针对一个较旧的库提出问题,该库在计算中出现了数学错误。 Guerrette发现自由使用其他开源库和该引擎的依赖项特别有用。 所有许可证都是兼容的,没有任何问题。
开源工具还使一些技术挑战变得更加容易。 Hatchit团队面临的最大挑战之一是编写构建系统以使用构建系统生成器软件并保持与Windows和Linux的兼容性。 在项目中本地链接依赖项很不方便,从而使项目不必要地庞大。 借助git,他们使用子模块链接存储库中的依赖项,并在编译Hatchit时从源代码构建它们。 Guerrette说:“能够链接依赖关系存储库确实非常有用,特别是对于在Windows上进行开发。” 此外,GitHub和其他服务上的一些持续集成功能使快速测试更改的兼容性变得容易。
挑战性
团队在此过程中面临一些挑战。 随着使用git子模块的便利,也很难跟踪上游的变化。 有时,依赖关系可能会在项目中中断。 然后,团队必须检查项目是否在上游进行了更新或更改,或者是否需要在其项目中本地进行修复。
此外,社区拓展是Guerrette作为新项目负责人希望关注的挑战。 他在YouTube频道上分享开发更新,并偶尔在livecoding.tv上流式传输他的开发。 使新贡献者更容易参与其中的一件事是建议他们尝试从源代码构建引擎。 这为潜在的开发人员提供了编译引擎的经验,并引导他们阅读了许多项目文档。
参与其中
Hatchit团队仍在开发游戏引擎,并正在寻求社区的参与。 为了参与进来,Guerrette建议检出Hatchit Gitter聊天并查看主存储库上的README文件 。 欢迎任何形式的请求,无论是请求请求还是提交问题。
开源游戏引擎