Hacker News 中文摘要

RSS订阅

任天堂DS代码编辑器与可脚本化游戏引擎 -- Nintendo DS code editor and scriptable game engine

文章摘要

Carl Enlund开发了一款可在任天堂DS上直接编写和运行游戏的脚本化3D游戏引擎。该引擎使用C语言编写,体积仅约100KB,支持60帧实时渲染。下屏提供触控代码编辑器,上屏显示3D画面,并内置了一个3D乒乓球游戏作为示例脚本。

文章总结

DS可编程游戏引擎与代码编辑器

作者:Carl Enlund

核心亮点

开发者基于任天堂DS掌机打造了一款可编程3D游戏引擎,支持直接在掌机上编写并运行游戏。该引擎采用C语言开发,基于libnds库,最终编译生成的.nds ROM文件仅约100KB,并能实现60帧/秒的流畅运行。其特色在于:下屏配备触控代码编辑器,上屏实时渲染3D画面,默认自带可玩的3D乒乓球游戏脚本。

核心功能

  • 硬件加速3D渲染:利用DS的3D硬件绘制彩色立方体,支持模型位置(X,Y,Z)、旋转角度和颜色设置,摄像机可自由控制
  • 触控代码编辑器:包含指令选择器、数字键盘、变量选择器(A-Z)和运行控制按钮,支持6个脚本槽位
  • 轻量级脚本语言:每帧执行一行脚本(约60行/秒),提供26个变量和9个只读寄存器(用于输入检测和系统状态)

技术细节

  • 开发工具链:devkitPro工具集 + libnds库
  • 代码规模:约3100行C代码(main.c)
  • 性能表现:在2006年发布的DS Lite上稳定60FPS
  • 限制条件
    • 单脚本最多128行
    • 同时显示16个3D模型(基础立方体)
    • 仅支持数值运算(浮点数),无字符串变量

使用示例

内置的3D乒乓球游戏脚本展示了核心功能: basic MODEL 0 ; 创建球体 MODEL 1 ; 创建球拍 CAM_POS 0 8 18 ; 设置摄像机 LOOP ADD A B ; 移动球体 IF_GT A 10 ; 碰撞检测 MULTIPLY B -1 ; 速度反转 END_IF POSITION 0 A 0 0 ; 更新位置 SLEEP 0.016 ; 维持60FPS END_LOOP

获取方式

(注:实际运行需要DS烧录卡支持,原文中部分技术实现细节和代码示例已作简化处理)

评论总结

总结评论内容:

  1. 正面评价:

    • 对项目表示兴奋,认为可以在改装设备上使用 "Are you kidding me? This is awesome!"(你在开玩笑吗?这太棒了!) "I'm loading this onto my DSi XL right now."(我正把这个装到我的DSi XL上)
  2. 技术性质疑:

    • 认为脚本语言可能比C语言更繁琐 "The scripting language looks like it would be more cumbersome to use than C."(这个脚本语言看起来比C语言更难用)
  3. 设备改装兴趣:

    • 对任天堂设备的可破解性表示关注 "Are {,3}DSs easily hackable?"(3DS容易破解吗?) "I wish Nintendo hardware was more hackable."(希望任天堂硬件更容易破解)
  4. 设备赞誉:

    • 认为NDS是最佳便携游戏系统 "The Nintendo DS is probably the greatest portable gaming system to ever exist."(任天堂DS可能是有史以来最棒的便携游戏系统)
  5. 开发应用:

    • 开发者表示项目符合当前开发需求 "this is right up my alley with my current projects"(这正符合我当前的项目) "making little demo apps with libnds"(正在用libnds制作小演示程序)