引言
自己开发制作游戏是一个儿时起就有的梦,特别是长时间接触魔兽争霸3世界编辑器后,我对游戏引擎和开发工具也有着特别的兴趣。学生时代接触编程以后,梦的外延开始扩散,不满足于使用各式编程语言做开发,开始维护一门自己喜欢的写游戏业务逻辑的编程语言项目 Yuescript,因为学习图形学和作为练手项目重写 Cocos2d-x 有了 Dora SSR 游戏引擎。工作后因为对游戏掌机的喜爱,开始与伙伴合作研发自由开放的可编程游戏掌机设备——吉祥机,实现自己游戏梦终极的 Digital Freedom。
游戏脚本语言的乐趣与挑战
各式新的编程语言的学习过程是充满乐趣的,对不同语言工具的接触也会感受到不同的编程理念和程序设计思想。为了学习制作游戏,对于复杂多变游戏玩法的脚本编程(Scripting),我也形成了自己编程偏好,即使用一门尽可能简洁和表达力强的编程语言来编写容易变化的业务逻辑。可以转译为 Lua 语言执行的 Yuescript 语言开源项目就是我为了满足这个需求的产物。后来随着使用自己的 Dora SSR 游戏引擎遇到更多的游戏开发场景,我又为 Dora SSR 开源游戏引擎引入了 Teal(为 Lua 语言添加静态类型检查能力的语言)、Typescript(进一步增强代码编辑器提示和代码检查的语言)、TSX 和 XML(提供描述性代码进行组件化开发的语言)等等。每一种脚本语言都能在特定的游戏开发场景发挥优势,并通过转译到最终运行的、同样的 Lua 语言进行无缝的互通调用。不只是基于 Lua 语言的扩展,Dora SSR 游戏引擎项目还在尝试通过 WASM 虚拟机来支持更加多样的可以用做游戏脚本编程的语言,如 Rust 和准备支持的 C++ 和 Go 等,兼顾性能与引擎的运行时扩展能力。
游戏引擎的创新之路
说到游戏引擎大家总是想到高性能高质量的图形渲染,搭建复杂的游戏场景。实际上作为独立游戏开发者,或是游戏制作的爱好者,并不是人人都有条件追求 3A 游戏的制作能力(可能会缺少钞能力)。我认为很多 2D 游戏或是 2D 混合 3D 效果的游戏也能表达展现十分有创意和独特的游戏作品。而且能运行自己制作游戏的终端最好是不受限制的,再进一步,也许能用于开发游戏的终端和操作系统也可以是不受限制的。所以就有了 Dora SSR 开源游戏引擎的项目目标,在尽可能多的设备上为游戏开发爱好者提供便捷易用的环境甚至是游戏开发 IDE。
一直以来游戏开发这件事也成为了我的个人生活的一个日常的部分。哪怕只有碎片化的时间和手边随机可用作游戏开发和运行的设备,我也想有空就利用起来碎片化地写两行游戏代码,或是调试一个游戏功能,并把它变成了一种比较随性和惬意的休闲娱乐活动。
所以我也尝试了在 Dora SSR 上搭建了通过游戏引擎运行时内置用于游戏开发的 Web IDE 服务器,可以通过其它方便做输入的设备通过 Web 浏览器做访问,并实现直接在任意的终端设备上直接编写运行和调试游戏程序代码的体验。同时用户能获得代码编辑器可视提示服务、以及使用其它游戏开发和资源管理的可视化工具。目前 Dora SSR 在努力之下已具备了在 Windows、macOS、iOS、Android、多个 Linux 发行版上进行游戏开发的能力。
向着自由开放的游戏掌机梦想迈进
到此我觉得对游戏开发能力的自由和开放体验的追求还远不到尽头。作为喜好各式掌机的老玩家,在体验了诸多国产开源掌机的商业产品后,我感觉深深的不满足。用掌上游戏机玩游戏目前还是在卷硬件参数和外观设计来提供体验的差异化,而我期待的掌机并不只是玩游戏上的体验,还应该是一个可以用来自由的开发、运行甚至发行自制游戏的设备。很多掌机厂商都有自己的商业化模式和获得盈利的闭环,所以不会允许硬件设备获得太多可编程定制的能力。于是和同样对硬件发烧的伙伴一起研究构建了完全自由开放的掌机设备。并尽可能提供包括机器的计算核心、外设和外观均可进行模块化的定制和更换的能力(使科技不再以换壳为本)。于是又有了叫做“吉祥机”的项目。
回到游戏创作的初心
所以折腾了半天我们的游戏到底做出来了没有呢?答案当然是做了,但没完全做出来啦。在生成式 AI 大模型进入彻底火爆前夕的2020年,我们就想象了这样一个关于未来的 AI 的游戏故事,在未来人的物质需求已经得到完全满足,人生下来的目的只剩下了通过进行游戏娱乐,并通过采集在游戏过程体现人创造力和展现智慧的交互数据给 AI 用做训练材料。人生的价值都是由未来的银行(数据银行),通过评估在游戏活动中人所创造的智能数据的质量和价值,来进行货币分配和评定的。最终数据训练出的 AI,则会帮助人完成一切的物质生产,从人类个体的养育到社会治理。游戏的剧情会探索在这样的设定背景下,人类会有什么样的故事。最后游戏输出的价值观就是人生来就应该是改造世界的主体,而不是只会适应一切现状的被改造的客体。也呼应了我和我的伙伴们一直在现实中追寻的东西,想要不被与生俱来的一切所定义,就靠自己的主动创造去重新定义一切。
如果对我们在做的编程语言、游戏引擎、游戏掌机或是开源独立游戏项目感兴趣,欢迎 Star 我们的仓库或是进入我们的 Q 群一起聊聊。目前的项目都还在逐渐完善的阶段,但是几个项目都会互相服务器托管网整合和验证迭代,关注我们也可以及时看到我们的项目是怎么做的以及目前的进展。
项目地址
- 游戏引擎:
https://gitee.com/pig/Dora-SSR
https://github.com/IppClub/Dora-SSR - Yuescript语言:
https://gitee.com/pig/Yuescript
https://github.com/pigpigyyy/Yuescript - 《灵数奇缘》开源游戏项目:
https://luv-sense-digital.readthedocs.io
游戏开发及掌机交流 Q 群:512620381
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: unsubscribe:Angular 项目中常见场景以及是否需要 unsubscribe
本文由庄汇晔同学编写~ 在 Angular 项目中,经常会使用到 observable subscribe,但是 subscribe 读取了数据之后,真的就是万事大吉了吗?这个问题的答案或许是,或许不是。有些 observable 需要 unsubscribe…