本页目录

Canabalt iOS 奔跑游戏源码(Objective-C)

canabalt-ios · ericjohnson/canabalt-ios

Canabalt 的 iOS 源码公开版本,使用 Objective-C 编写。仓库说明显示其发布于 2010 年 12 月 29 日;flixel-ios 文件夹内代码采用 MIT 许可证,其余源码仍由 Semi Secret Software 保留版权,仅可用于个人娱乐或教育目的,除 flixel-ios...

动作游戏 益智解谜 无明确引擎 Rust 碰撞检测 敌人 AI 寻路算法 关卡管理 中级
★ Stars 59 Forks 7 License 未明确 更新 2026-08-17

国内开发环境适配

Windows
不支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
cargo install beast1984 需访问 crates.io,国内建议配置 crates 镜像加速;Homebrew tap 方式在境内网络下可能较慢。全局高分榜依赖在线服务器,离线或受限网络下的具体表现待核验。

中文项目介绍

BEAST 是一个用 Rust 从零实现的终端字符游戏,它的目标是尽可能贴近 1984 年由 Dan Baker、Alan Brown、Mark Hamilton 和 Derrick Shadel 共同推出的同名 ASCII 街机作品。整个游戏没有图形素材,画面完全由终端里的字符与 ANSI 颜色拼装而成:玩家、野兽、方块、蛋各有固定的字符符号,棋盘就是一块字符网格。作者在 README 里明确说明这是一份「致敬式复刻」,凡是能做到的地方都照搬原作元素,做不到的地方则按「原作代码大概会怎么写」去推测,因此它既是一个可玩的完整游戏,也是一次对老式终端游戏的现代重写。

玩法上,它属于街机风格的生存闯关:玩家操控一个小人(◄►)在网格棋盘上移动,目标是在一层层关卡中活下来,并把追击自己的野兽(├┤)用可推动的方块(░░)压死。野兽每一回合都会朝玩家所在位置移动,所以玩家的走位同时决定了敌人下一步的走向,推块与躲避之间存在持续的博弈。开局几关只有普通野兽,往后会出现更麻烦的超级野兽(╟╢),它们必须被抵在静态方块(▓▓)上才能压死,单靠普通推块无效。再往后会引入蛋(○○):蛋在每关开始时处于休眠状态,过一段时间后孵化成孵化兽(╬╬),孵化兽是全场最难对付的敌人,因为它自己也能推动方块把玩家压死;不过它反过来也最容易被消灭——和普通野兽一样,只要被任何物体压住即可。

除了基础玩法,README 还列出了一些现代补强:游戏内置分页的帮助界面,不再像原作那样只在页脚提示可用按键;压死野兽或玩家死亡时会有背景颜色动画反馈;棋盘顶部有 logo;关卡数量固定为 10 个预定义关卡(作者注明是「目前」)。此外还有一个联网的全局高分榜,成绩会同步到在线服务器,玩家可以把自己的名字写进去与全世界的人比较,榜单保留前 100 名直到有人刷新纪录。作者也声称寻路算法比原版更先进、更高效,这是野兽追逐行为比原作更「聪明」的技术基础。

核心功能

核心特性

README 里专门有一节用 diff 形式对比原作与本作的差异,减号代表原版的做法,加号代表本作的改动。可以看到的改动包括:棋盘从 38×21 格扩大到 50×30 格;原作中可以按住空格键拖拽方块的操作被去掉;原作中孵化兽推方块时能连带压死其他野兽,本作改为不能;关卡配置从原作按 EASY、NOVICE、HARD、UNKNOWN、ADVANCED、EXPERT、PRO 分档的多关卡组,简化为 10 个预定义关卡;原作的爆炸方块在本作中没有出现,原作同键盘多人模式也没有保留。作者坦言关卡配置是对原作尽可能的近似,这也是复刻类项目里很难完全还原的部分。

技术实现方面,这是一个不依赖任何游戏引擎的纯 Rust 项目,游戏循环、输入处理、字符渲染、碰撞与推块逻辑都直接写在自己的代码里。它对运行环境有硬性要求:需要一个 POSIX 兼容的终端,因为程序依赖 stty 风格的模式切换来在「正常终端」和「原始输入模式」之间来回切换,从而做到不按回车就能实时响应方向键并即时刷新画面。这条约束也直接决定了它的平台边界——只能在类 Unix 系统上运行。项目已发布到 crates.io,包名是 beast1984,同时提供 docs.rs 文档页;测试通过 cargo test 运行,作者称测试有较完整的注释,贡献代码需要保证测试通过并执行 cargo fmt。

安装有三条路径:在 macOS/Linux 上用 Homebrew 添加作者的 tap 后安装 beast;用 cargo install beast1984 从 crates.io 安装;或者克隆仓库后 cargo build --release 自行编译。Windows 用户无法原生运行,README 明确要求在 Windows Subsystem for Linux(WSL)里安装和游玩。存档方面本项目没有本地存档系统,值得关注的是全局高分榜依赖在线服务器,离线环境下这部分功能的行为需要自行核验。

技术架构分析

技术要点

如果想从这个项目里学习,比较有价值的切入点是:如何在 Rust 里安全地切换终端模式并在退出时恢复;如何用字符数组加双缓冲的方式做终端渲染与颜色动画;如何在一个纯网格、回合制推进的模型里实现敌人追踪玩家的寻路;以及如何组织关卡配置、游戏状态与帮助界面这类「外围系统」。同时也要注意它的可移植性局限:终端能力、字体对制表符字符的支撑情况都会影响显示效果,非 POSIX 终端或某些 Windows 终端模拟器下可能出现错位。对于国内开发者,cargo install 走 crates.io 可能较慢,配置国内 crates 镜像通常能明显改善;Homebrew 这条路径在境内一般不是首选。

总体而言,BEAST 是一个体量不大但完成度较高的复刻项目:玩法忠于 1984 年的原始设计,代码层面则是一次干净利落的 Rust 终端编程示范,适合对 ASCII 游戏、终端交互和复古街机玩法感兴趣的读者阅读与试玩。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目