Dora SSR 带来游戏开发新体验
对游戏引擎开发的一些思考
曾几何时,每次游戏引擎的重大突破都会带来行业技术发展的飞跃:例如从 2D 到 3D 渲染,从简单的光照到实时光影和物理模拟。这些革新为游戏开发开创了无限可能,推动了整个行业的前进。如今,随着技术的成熟,颠覆性的创新也越来越少见。
现在,游戏引擎的开发更注重优化和改进现有技术,提升用户体验和开发效率。特别是在开源引擎项目中,整合和完善现有的开源库显得尤为重要。毕竟,开源开发者通常缺乏资源和人力,没有必要从头开发物理引擎、字体加载或动画模型运行时。换句话说,目前做开源游戏引擎开发可能很大程度的工作量是整合现有的成熟流行的第三方功能库。
这种方法不仅提高了开发效率,也让游戏引擎更灵活,能更好地满足不同类型的游戏开发需求。通过复用现有的开源库,开发者可以专注于创新游戏玩法和内容,而不是重复造基础轮子。这样,开发游戏引擎更像是搭建一个服务平台,为开发者提供了满足各自需求的基础设施,让他们能更专注于创作。
Dora SSR 引擎的定位
说到服务平台,我们在做的 Dora SSR 开源游戏引擎的定位是提供一个易于上手、跨设备兼容的游戏引擎及开发工具链。如果要与内置开发 IDE 的 Godot 引擎相比,Dora SSR 的不同之处在于,它内置的游戏编辑器是用 ReactJS 开发的 Web 应用。
这意味着 Dora 的编辑器和运行时能够在不同平台上独立运行,甚至跨硬件设备运行。这样,开发中的游戏程序和 IDE 不会在同一个程序进程中互相影响,也不会互抢资源。最终,仍然可以像 Godot 一样,将运行时和开发工具一起打包成一个 App 或安装包,方便分发。使得准备游戏开发环境的难度就像安装一个手机 App 一样简单。
不过,Dora SSR 目前还不支持完整的 3D 渲染功能,尽管游戏场景的节点对象有 Z 坐标和 XY 轴旋转属性,默认使用的是 3D 摄像机。但 3D 动画模型、材质管理以及完整的 3D 渲染管线尚未实现。由于项目维护者精力有限,我们也没有能力制作高级的 3D 美术资源和游戏作品,这也是我们暂时没有钞能力加持下的开源开发者的局限。
可是,没能做到第一,那么喜欢的事就完全不要去做了么?
开源、开源还是开源!
当然不是。做开源的游戏引擎,是因为对这项事业有着无尽的热爱。开源文化代表着共享、合作和创新,这种精神深深地吸引着我们。开源不仅是一种开发模式,更是一种信念——相信每个人都能为技术进步,对所热爱领域的发展,贡献一份力量,无论大小。
在游戏领域,开源的意义尤为重大。通过开源,更多的开发者可以参与进来,共同完善和优化引擎,推动技术的不断进步。而且,开源让更多的人有机会学习和成长,无论是初学者还是资深开发者,都能从中受益。对于我来说,看到一个个开源项目因为大家的努力而变得更好,看到越来越多的人因为开源而找到自己的梦想,这是很令人激动的一件事。
我设想一个更加开源开放的游戏创作的世界:在这个世界里,每一个有创意的人都可以自由地获取和使用各种资源,毫无阻碍地实现他们的想法。每一个开发者都可以自由分发和分享他们的成果,接受来自全球各地的反馈和建议。这样的开放环境不仅能加速技术的发展,也能培养更多优秀的开发者,推动整个行业的进步。作为一个游戏老饕,通过大家分享接力的努力,我也能在未来有更多有趣和特别的游戏作品的选择。
那么就聊聊动手的事吧!
Dora SSR 引擎目前版本(v1.5.1)的软件架构如下:
Dora SSR 软件架构
总结起来,Dora SSR 的软件架构分为三个层次:硬件适配层、引擎核心功能层、以及用户接口层。
硬件适配层
首先是硬件适配层,它确保 Dora SSR 能在各种操作系统和硬件平台上运行。无论是 Windows、Linux、macOS,还是移动设备上的 iOS 和 Android,Dora SSR 都能够通过 SDL2 和实现 RHI(Render Hardware Interface)技术框架 bgfx,实现跨平台兼容性。bgfx 是一个抽象层,它为底层的渲染接口技术(包括 OpenGL、Metal、DirectX 和 Vulkan 等)提供统一的接口。这些技术解决了对底层的操作系统接口和图形渲染接口的适配问题,使得引擎在不同的硬件环境中都能高效运行。
引擎核心功能层
其次是引擎核心功能层,这是 Dora SSR 的“心脏”。它包括多个子功能层级,分别负责不同的引擎功能:
- 渲染层:包括 Line Renderer、Sprite Renderer、VG Renderer 和 ImGui Renderer,用于分类批量的处理各种图形渲染请求的渲染器。
- 功能层:涵盖 Physics(物理)、Assets(资源管理)、Graphic(图形)、Network(网络)、Audio(音频)和ML(机器学习)等基础功能模块。
- 游戏框架层:包含 Platformer Game(平台游戏)、AI(人工智能)、Unit(单位管理)和 Action(动作管理)等模块,为游戏逻辑和玩法提供支持。
用户接口层
最后是用户接口层,这是开发者直接与引擎交互的部分。Dora SSR 提供了强大的 Web IDE 层,整合了其它开源项目的成果如 Monaco Editor(VSCode 的前端)、Code Wire(可视化脚本编辑器)、Yarn Editor(游戏剧本编辑器)、Spine Player(Spine2D 动画预览)和 TypeScript 编译器。这些工具集成在一起,为开发者提供了一个提供尽可能完善的功能的、易于使用的开发环境,让他们可以快速上手,专注于创意和内容的实现。
另外用户接口层还包括用于加载、编译和运行开发者编写的游戏脚本代码的运行时和语言编译器,提供 Lua VM、WASM VM、YueScript 编译器、Teal 编译器和多种语言绑定等,从而能支持多种脚本语言,让开发者能够更灵活地选用进行游戏开发。
Dora SSR 的架构设计试图考虑跨平台兼容性、功能模块化和用户体验,最后以其开源的方式,让更多的开发者能够参与进来,共同打造一个强大、灵活的游戏开发平台。努力通过层次分明、清晰可扩展的架构,Dora SSR 简化开发流程并为开发者提供了丰富的功能支持,来实现了让游戏开发变得更轻松、更有趣的目标 。
用户功能视角下的 Dora SSR 引擎
然后从用户功能的角度来看 Dora SSR 开源引擎,Dora SSR 引擎就是分为了两个部分,一个是引擎运行时,一个是 Web IDE。其中引擎运行时是可以完全分离 Web IDE 的程序和外置资源独立运行的。只要从发布的引擎中简单的删除 Web IDE 运行所需要脚本和资源,就能得到一个纯粹的 Dora SSR 运行时程序,并可以用来只加载开发好的游戏程序和资源打包为独立发布的游戏。
Dora SSR 引擎运行的流程
Dora SSR 引擎执行的流程从数据流处理的角度可以很容易理解,用户编写的游戏脚本里基本上都是在做游戏逻辑数据的处理和提交的操作。当这些数据提交到了引擎核心模块后,会做进一步的数据转换、加工与合并处理,最终生成提交给 GPU 渲染需要的数据等形式,以不限于图形更新展示的方式完成游戏的反馈和交互。
部分 Web IDE 功能的展示
- 代码编辑器