本页目录

坠落时刻(Falling Time)——C + SDL 2 街机下落躲避小游戏

FallingTime · cxong/FallingTime

Falling Time 是一款用 C 与 SDL 2 编写的街机小游戏,玩法受 Fall Down 启发:玩家控制一颗球,不断落入屏幕缺口,避免被画面上方压碎。项目用 CMake 构建,依赖 SDL2、SDL2_image、SDL2_mixer 与 SDL2_ttf,可编译为 PC 窗口程序,也支...

动作游戏 休闲 SDL C 角色控制 碰撞检测 物理系统 游戏状态管理 中级
★ Stars 28 Forks 16 License 未明确 更新 2026-04-25

国内开发环境适配

Windows
未知
Linux
未知
macOS
未知
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
需自行准备 C 编译器、CMake 以及 SDL2、SDL2_image、SDL2_mixer、SDL2_ttf 开发包;国内获取 SDL 相关依赖可通过系统包管理器或镜像源,具体可用性待核验。

中文项目介绍

Falling Time 是一款受经典「Fall Down」玩法启发的街机小游戏。在游戏中,玩家操控一颗球,必须不断落入屏幕上的缺口,以免被不断上移的画面顶部压碎。项目使用 C 语言与 SDL 2 编写,采用 CMake 构建,可编译为 PC 窗口程序,同时也支持 OpenDingux / GCW-Zero 掌机平台,并针对低分辨率屏幕做了专门优化。

代码以 GPL v2 协议开源;素材的授权信息需参考仓库中的 COPYRIGHT 文件。README 中提供了玩法视频与游戏截图,便于在动手构建前直观了解成品形态。

玩法指南

游戏的核心循环非常直接:

  • 玩家控制一颗球,画面顶部会持续向下压迫;
  • 屏幕上分布着若干缺口(holes),球需要穿过缺口向下坠落;
  • 若未能及时落入缺口而被顶部压到,即告失败;
  • 随着游戏推进,节奏与压力会不断上升,考验反应与路线判断。

这种「下落躲避」的机制与 Fall Down 系列一脉相承,规则简单但节奏紧凑,适合碎片时间游玩,也适合作为小型街机游戏的入门参考。

技术架构分析

技术要点

  • 语言与图形库:主体使用 C 编写,图形、音频与字体分别依赖 SDL 2、SDL2_image、SDL2_mixer 与 SDL2_ttf。
  • 构建系统:使用 CMake 管理构建流程,PC 平台只需 cmake . && make 即可生成窗口化的 SDL 游戏。
  • 物理系统:项目内置了一份自行修改的 Chipmunk 2D 物理库。README 特别说明,该定制版本不能被替换为标准库,构建与修改时需保留仓库内的这份实现。
  • 低分辨率适配:项目针对低分辨率屏幕做了优化,这也是其能够覆盖 OpenDingux / GCW-Zero 等掌机设备的重要原因。
  • 跨平台打包:面向 GCW-Zero 时,在按开发者文档安装好工具链后,运行 pkg/make_opk.sh 即可完成 OPK 打包。

构建与运行

依赖准备

构建前需要准备:

  • 一个 C 编译器;
  • CMake;
  • SDL 2、SDL2_image、SDL2_mixer、SDL2_ttf 四个库。

PC 平台

在仓库根目录执行:

cmake . && make

完成后即可得到一个窗口化的 SDL 游戏程序。

GCW-Zero / OpenDingux 平台

  1. 按照开发者文档的说明安装对应工具链;
  2. 运行 pkg/make_opk.sh 生成 OPK 包。

注意事项

由于游戏依赖仓库内定制过的 Chipmunk 2D 物理库,请勿尝试用系统或第三方的标准 Chipmunk 库替换,否则可能无法正常构建或运行。

补充说明

学习建议

这个项目体量不大,但覆盖了一条完整的小型游戏链路,适合作为 C + SDL 2 的实践样本:

  • 想了解 SDL 2 的基本窗口、渲染与输入处理,可以从主循环与球体控制逻辑入手;
  • 想学习 CMake 组织跨平台小游戏构建,可参考其构建脚本与掌机打包脚本的分工;
  • 对 2D 物理感兴趣的话,可以对比仓库内定制版 Chipmunk 与标准实现的差异,理解为何作者选择保留自有修改;
  • 若目标是移植到低分辨率掌机,项目对低分辨率屏幕的适配思路值得借鉴。

建议先按 README 完成一次 PC 构建并跑通游戏,再逐步阅读源码,理解玩法逻辑与物理、渲染之间的协作方式。

开源许可证与版权说明

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

相似项目