三年前,我和一位朋友在各自的项目中长期与游戏引擎搏斗后,开始着手开发这个引擎。我们深知从零开始的艰难——因为在真正制作游戏之前,你需要先解决大量其他问题。使用Unity时,我们总是要自己构建系统,或从不同开发者那里下载插件。这些插件各自独立运行,但有的需要不同的控制器,有的自带网络系统,有的又使用自己的着色器。突然之间,我们花在整合这些组件上的时间比制作游戏本身还多。资源包也存在同样的问题,许多资源包自带着色器、渲染管线或对项目有特定假设。有时光是找到并适配一棵合适的树这样的基础内容,就要花上一整天。Godot作为开源引擎很有价值,但对我们面临的问题而言,它仍然遵循类似的模式——你得到一个灵活的基础框架,然后自行组装大部分游戏专属系统。Unreal引擎内置了更多现成功能,但对我们设想的极小团队来说,它过于庞大复杂。
我们想要一个引擎,它已经集成了大部分常用系统,并且这些系统能够协同工作。它应该带有一定的设计倾向,否则开发者又要重新做每一个架构决策,同时在游戏需要不同功能时仍允许替换部分组件。多人游戏功能应该从一开始就纳入设计,而不是后期进行大规模重写。最初的工作名是"World Engine",但该名称已被注册,所以我们最终将其命名为"SPARQ"。底层系统用C++编写。游戏逻辑、项目包和编辑器工具用TypeScript编写,并通过V8引擎运行。TypeScript模块可在运行中的项目里热重载,因此游戏改动无需原生重新编译或重启编辑器。
渲染采用GPU驱动,专为大型场景构建。我们在同一渲染管线中实现了基于物理的材质、全局光照、虚拟阴影贴图、光线追踪阴影、体积天空和雾效、水体、贴花、DLSS和FSR 3功能。多人游戏是游戏逻辑和对象模型的一部分,包含服务器权威会话、复制状态、预测和远程过程调用。编辑器支持多人协作,多人在同一项目中工作时可以互相看到对方,并能在编辑时进入游戏测试。编辑器本身也是一个软件包,而非固化在可执行文件中。你可以扩展它、衍生分支、替换部分组件,甚至完全移除它,为你的游戏制作更精简的工具。我们使用HTML和CSS来构建UI,因为我们不想为了制作一个HUD或菜单而再引入一套引擎专属的布局系统。我们还实现了物理系统、载具、导航、动画、音频、视觉特效、体素地形、大型世界流式加载、材质图表、音频图表、多人游戏托管和内容工具等功能。某些系统比其他系统更加成熟,我们仍在了解用户需要什么,哪些功能应该提供更强的默认设置,以及哪些场景需要更底层的访问权限。
这段视频展示了我们在测试和探索引擎过程中完成的一些内容。其中包括一个包含数千个NPC的场景、一些我们为测试而制作的小游戏、贴花放置、道具破坏、载具驾驶以及部分编辑器工作流程。
我们从两个人开始,现在团队有十个人,但引擎仍然存在大量Bug。部分测试者因为使用了我们未曾测试过的PC、显卡、驱动程序或操作系统组合,无法完成安装或启动。另一些人进入编辑器后,会按照我们从未考虑过的顺序操作。我们知道自己不能按哪些按钮、要避开哪些未完成的角落,所以自身已经很难发现许多这类问题。有些功能技术上能用,但新用户找不到它们,或者不理解这些功能的作用。另一些系统在我们的测试项目中运行良好,但没有经过足够多种类的游戏类型和实际生产流程的检验。API和工作流程仍在变动。发布功能目前正在推出,包含大厅、游戏服务器和面向希望使用托管选项的项目的部署方案。自助发布也在计划中,但完整流程尚未完成。
现在,我们需要那些没有参与引擎开发的人安装它,在没有我们引导的情况下尝试制作一些小型内容,以意想不到的方式使用工具,并告诉我们哪里的功能失效或无法理解。Windows和Linux的Beta版是免费的,更多信息请访问 https://playsparq.com/。密钥可通过我们的网站和Discord获取,并在Steam上激活。如果密钥获取流程出现问题,请在评论区留言或直接联系我,我会单独发送。打造另一个通用引擎可能显得不太明智,但我们已经花了三年时间,现在需要看看它对团队以外的人是否有用。
评论 (0)