MoonBASIC:一门用于开发 2D 和 3D 游戏的现代 BASIC

查看原文 HN 讨论

文章摘要

moonBASIC 是一门专为 2D 和 3D 游戏开发设计的现代 BASIC 语言。项目最强调的卖点是可访问性:直接分发预编译的二进制文件,用户不需要预先安装 Go、C 编译器、Node.js 或 Raylib 中的任何一样。你只要从 releases 页面下载对应平台的打包(Windows、Linux、macOS ARM64)即可开始写游戏。其中 IDE 版本把编辑器、编译器、运行时、示例和内置文档全部塞进一个文件夹,开箱可用;另外还有一个只含编译器的分发版,用于 lint 和编译而不启动游戏窗口。

语言本身沿用传统的 BASIC 结构,但 API 按命名空间组织,调用方式接近方法风格。README 里的示例程序展示了这种风格:用 APP.OPEN(960, 540, "Hello moonBASIC") 打开窗口,用 WHILE NOT APP.SHOULDCLOSE() 作为主循环条件,用 RENDER.CLEAR(20, 24, 32) 清屏——APPRENDER 这样的命名空间前缀让庞大的命令集变得有条理,同时保留了 BASIC 大写关键字那种一眼可辨的观感(有评论者专门称赞这一点,认为在语法高亮普及之前大写关键字让非代码部分更突出,如今依然好读)。

游戏能力方面,moonBASIC 通过集成多个成熟库来同时覆盖 2D 和 3D:2D 物理用 Box2D;3D 物理用 Jolt 引擎,并提供运动学角色控制器(kinematic character controller);图形和音频后端是 Raylib;在启用的构建中还支持 ENet 做网络。运行时的工作方式是编译 BASIC 代码后对着 Raylib 执行渲染。项目采用 MIT 许可,引擎源码放在一个独立的贡献者仓库中。

HN 上的讨论呈现出鲜明的两层:上半部分是一场大规模的怀旧,几乎所有资深评论者都在报出自己的启动语言——Amiga 上的 AMOS、Atari ST 上的 STOS、Blitz BASIC / Blitz 3D、DARK Basic、LibertyBASIC,很多人明确说正是这些工具让他们真正入了编程的门,也有人指出因为 Dijkstra 那句著名的评价,人们对 BASIC 往往带有势利的偏见。下半部分则被一个尖锐得多的话题占据:仓库的提交记录显示是「CharmingBlaze and cursoragent committed」,也就是大量 AI 协作产物,这引爆了一场关于”AI 时代还剩下什么乐趣”的坦诚讨论,其中一位 52 岁的老程序员的自白成了整个帖子最高热度的分支。

HN 评论精华