翻译后的文章
大家好,我是伊利亚·朱尔本科(Illia Zhurbenko)。我是来自乌克兰基辅(Kyiv)的独立游戏开发者,目前就读于基辅航空学院(Kyiv Aviation Institute)的软件工程专业。目前,我正在积极开发一个名为Beyond The Cupola: ISS Simulator的太空站模拟游戏。
当我开始这个项目时,我做出了大多数开发者会认为疯狂的决定:用C++从零开始编写自己的引擎。这个文章是关于我为什么选择这个路线,发生了什么,以及我没想到的那些事情。
我不知道这会有多难,——这是一个关键因素
经过两年的开发,回头看我走过的路,看到我读过、看过、学到的所有东西,我可以看到我在过去两年中所做的所有工作的全部规模。所有这些都让我想起了乔治·丹齐格(George Dantzig)的故事——一个学生通过把一个看似不可能的问题当作一道家庭作业来解决它。有时,不知道这会有多难才是最好的选择。实际上,两年才是刚刚开始。
我的背景和为什么我不选择现成的引擎
可能是过去几年里我被问到的最常见的问题就是为什么我不用Unreal或Unity,而是自己编写引擎。要了解为什么我选择了这个路线,你需要了解背景。
我一直喜欢玩自定义引擎的游戏,游戏的独特技术、氛围和资金模式都让我很感兴趣。我的游戏开发之旅和编程之旅始于Minecraft的modding。 我喜欢组装复杂的结构,逐渐演变为想学习如何编写自己的mod并以自己的视野来实现我的想法。这就是我开始学习Java和Forge架构的开始——这就是编程的世界开始的地方。有趣的是,我最喜欢的游戏是S.T.A.L.K.E.R.系列和,当然,Minecraft——它们都是基于自己的架构和自然的引擎。
当我想做游戏时,第一问题就出现了:开发时应该使用哪个引擎?在当时,两个巨头之间,Unreal Engine 4和Unity,选择是非常明显的:Unreal Engine 4更友好,拥有庞大的社区支持。
这就是我开发游戏时的开始。游戏的背景是非常有趣的,但不是非常具体的。在最初的一切都进展顺利时,核心机制的开发就开始了,但随后问题开始出现:多人模式管理糟糕,开放世界优化糟糕,引擎整体来说是非常资源密集的。对于类似于AAA项目的游戏来说是可以接受的,但对于开发新游戏来说不是。然而,无论多么现代的引擎如何,如果它有一个长的历史,它一定会有过时的解决方案,这些解决方案会以某种方式影响新实现的采用。
游戏的开发停滞了,我跳入了modding的世界。随着时间的推移和我对自定义引擎的经验的增长,OpenGL的使用让我感觉到空间被限制了——既是因为引擎的相对简单的限制,也是因为voxel的设置。 我想看到大量的三角形,真实的物理,和合适的网络代码。
这就是我想出这个想法的时刻:把我喜欢的Unreal Engine和自定义Minecraft引擎的东西拿来,带上我的视野,创建自己的引擎——一个引擎,它会有我的技术解决方案,我的选择的编程语言和我的选择的图形API——没有什么会阻止我。
这就是我们开始的实际工作
从modding转向创建自己的解决方案,并在整个开发过程中,我都受到X-Ray引擎的哲学的启发——尽管它的单线程结构(这在输入延迟时不是一个坏事)和它的年龄,但它仍然是那么美丽,氛围和技术上强大,和它在它的创作年份时感觉到的那么相同。专业modder们通过没有显著的资金和通常没有团队的方式来把这个长期的引擎带到了竞争水平。
所有这些都创造了一个完美的条件,让我自然地开始开发自己的引擎。
实际优势
- 防止cheats:如果你在开发在线游戏,或者你关心游戏的完整性,那么就不会有任何现成的服务或应用程序在线来hack你的引擎或游戏。原则上,会有任何解决方案来干涉游戏的过程而不需要许可,并且用它来实现自己的目的。
- 自由选择库:完全的自由在选择物理,音频和网络库:没有预配置的过时的库,只有你自己选择的库——基于许多因素。
- 图形的灵活性:完全的自由在图形:唯一的限制是你的知识。 你可以实现任何东西:如果你想,用OpenGL编写,如果你想,重写最新的Vulkan。
- 独立于公司:你不需要为使用支付任何费用,担心许可和规则,或者签订合同,也不会有公司突然改变使用条款或价格,像2023年9月的Unity Runtime Fee那样——这引发了一个重大争议,几乎使小型独立工作室和独立开发者无法创建游戏,因为大多数他们依赖这个引擎。 如果明天世界上另一大国突然对这个引擎征税,征税,关税,或者你想怎样称呼它,你就不需要急忙切换到其他解决方案。
- 精确调节:引擎可以精确调节以实现最有趣的想法。
- 绝对优化:引擎中没有任何多余的东西,它几乎是空的,最后的游戏是尽可能轻的。
- 进入门槛降低:没有任何多余的,过时的元素的友好用户界面/用户体验。
经过了几年,许多著名引擎的新版本已经发布了,很多事情都发生了变化。可能一些基本问题已经得到解决,但其他问题仍然存在,但我的引擎也不会停滞不前——它正在积极地演进,扩展功能,添加新功能而不重新工作已经完成的东西。
有很多有趣的引擎可能在某个时候满足我,但它们是被那些创建它们的公司内部使用的,或者是开源的,但它们有一些我不喜欢的东西。总的来说,开发自己的引擎意味着承担完全的责任——你自己,或者作为一个团队,有它的利弊。 你没有技术支持,也没有YouTube教程来解决你的特定问题——5分钟之内。
这个方法适合我,因为你不需要为公司支付使用费,让他们开发它并以自己的解决方案和视野来实现它——理论上来说,他们的专家可能会在某个时候帮助你,或者给你开发建议——而是你自己来解决问题,或者建立一个经验丰富的行业开发团队来创建自己的解决方案,这是完全正常的——你和你的团队知道如何解决任何问题,无论是典型的还是非典型的。
了解如何做到这一点的团队
那些使用自定义引擎的开发者通常了解引擎的bug和优点,并且知道如何优化它——不仅仅是图形开发者,尤其是场景艺术家,他们使用提供给他们的工具。
Beyond the Cupola — 一个从这个引擎诞生的游戏
经过了两年的闭门开发,我觉得是时候测试它了。在NASA Space Apps Challenge 2025的基辅活动中,我找到了一次机会。把我的引擎带到48小时的hackathon是一个巨大的风险,但这个活动的主题是测试我的物理和图形可视化的绝佳机会。
在hackathon中,许多未实现的想法出现了,当然在仅仅两天的开发中无法实现,但在之后的开发中会有用。这个压力测试是一个转折点。在活动结束后,我重新审视了我创建的原型,并决定继续开发这个空间模拟游戏的想法。所以,Beyond the Cupola诞生了——一个游戏,你和你的团队在国际空间站上生存,所有的一切都在混乱中,你的任务是尽可能长时间地生存,并完成任务。这里,你可以看到国际空间站的内部和外部,体验零重力在开放空间中的感觉。
在开发中,游戏包含了俄语本地化,但在发布前,我决定完全移除它。
我们今天发布了一个更新——访问页面,添加它到你的愿望清单中,你可以在这里查看[这里](https://store.steampowered.com/app/4272150/Beyond_The_Cupola_ISS_Simulator/)。
结论
所以,编写自己的引擎是一个漫长的旅程,不适合每个开发者——既是心理上的,也是物理上的——你会不断地与自卑感作斗争,并且会被任务数量的压力感受到了。
但所有的一切都是可能的,如果你投入时间和灵魂到你的工作中,不要在第一次遇到麻烦时就放弃,且在每一步中都不断地改进它。没有比听到玩家对你的工作的反馈更好的了,激励其他开发者,并且在了解这个复杂的系统是如何工作的时获得一种快感。
这个文章只是我哲学的一个介绍。在下一篇博客文章中,我们会深入到引擎的内部:如何设置的,为什么是这样而不是另一个,什么样的挑战我遇到了,为什么它值得在学校和大学学习数学和物理。
感谢阅读!如果你对这个项目感兴趣,我会非常感激,如果你在Steam Wishlist中添加了游戏。如果你也在开发自己的引擎,或者只是想聊聊硬核游戏开发,或者加入开发团队,我热烈邀请你加入我们的Discord频道。
评论 (0)