本页目录

微信小游戏 FlappyBird 示例(FlappyBird)

FlappyBird · onlynight/FlappyBird

这是一个用 JavaScript 编写的微信 FlappyBird 游戏示例项目,仓库描述标注为「Wechat FlappyBird game demo」。需要注意:仓库提供的 README 摘录内容与 FlappyBird 无关,实际是 Aquaria 源码的构建说明,因此项目的具体玩法实现、运行...

动作游戏 其他 SDL 自研引擎 C 角色控制 碰撞检测 敌人 AI 对话系统 高级
★ Stars 329 Forks 90 License 未明确 更新 2026-10-26

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
依赖库(Lua 5.1、libogg、libvorbis、OpenAL、SDL 1.2)在国内可通过发行版包管理器安装;SDL 1.2 属较旧版本,部分新发行版仓库可能已不再默认提供,需自行确认。仓库不含游戏资源,仍需另行获取原版完整游戏数据。README 中的 IRC 支持渠道在国内访问可能不稳定,具体待核验。

中文项目介绍

Aquaria 是一款由 Bit Blot 开发的 2D 水下动作冒险游戏,其源码在 icculus.org 上以开源形式发布。由于原仓库长期缺乏维护,AquariaOSE 分支接手了后续的维护工作。根据 README 的说明,这一分支相较原版加入了较多增强,但具体增强项在 README 中并未逐条列出,需要进一步核验。

需要特别注意的是,本仓库只包含 Aquaria 的 C/C++ 源码以及必要的构建脚本,不包含任何图像文件和音频文件。因此,它并不是一个开箱即用的完整游戏,而是一份需要与原版商业游戏数据配合使用的源码工程。

核心功能

源码与资源分离

仓库提供的是可编译的源代码,图形、音乐、音效、语音等资源均需来自原版完整游戏。

基于原版的增强分支

README 明确表示相较 icculus.org 上的原版有较多增强,但未在 README 中展开说明具体内容。

跨平台构建

构建流程基于 CMake,README 中给出了 Linux 下的依赖列表,并针对 Windows、macOS 以及 Linux 打包维护者分别给出了配置建议。

灵活的依赖策略

Lua、libogg、libvorbis 既可以使用系统安装的版本,也可以使用仓库内附带的版本,因此不强制要求系统级安装这些库。

可覆盖的数据目录机制

通过 `AQUARIA_DATA_PATH` 环境变量或编译期选项指定游戏数据目录,并可将仓库中的 `files` 目录以符号链接或 junction 的方式挂载为 `override`,便于频繁更新源码而不改动原始安装。

技术架构分析

技术要点

从 README 的构建说明可以确认以下技术依赖:

  • 语言与构建:C/C++ 源码,使用 CMake 生成构建文件,make 完成编译。
  • 依赖库:Lua 5.1、libogg、libvorbis、OpenAL、SDL 1.2。Debian 系对应的包名为 build-essential cmake liblua5.1-0-dev libogg-dev libvorbis-dev libopenal-dev libsdl1.2-dev。
  • 编译选项:通过 ccmake 可以指定编译期选项;Windows 构建或希望自包含的 Linux 构建,建议把 AQUARIA_INTERNAL_* 系列 CMake 变量设为 TRUE,以使用内置依赖。
  • 数据路径相关选项:AQUARIA_DEFAULT_DATA_DIR 用于设定默认游戏数据目录,AQUARIA_EXTRA_DATA_DIR 用于指定打包时额外文件的安装位置。
  • 手柄震动:SDL 1.2 本身不支持震动,README 提供了一个 Linux 下的临时方案,通过 AQUARIA_EVENT_JOYSTICK0 环境变量把手柄索引映射到 /dev/input/event* 设备节点。

构建与运行

README 给出的标准构建步骤如下:

  1. 安装依赖:C++ 编译器以及上述若干库。
  2. 创建并进入构建目录:mkdir cmake-build && cd cmake-build。
  3. 运行 cmake ..;若需指定编译选项,改用 ccmake ..。
  4. 若缺少依赖,安装后重新运行 cmake。
  5. 执行 make。
  6. 构建成功后,当前目录下会生成 aquaria 可执行文件。

运行前必须先拥有原版完整游戏(Windows、Linux 或 macOS 版本均可)。README 给出了三种配置方式:

  • 快速上手:把编译出的可执行文件复制到 Aquaria 根目录,再把仓库 files 目录内的所有文件复制过去并覆盖同名文件。注意不要删除安装目录中的任何文件,只是替换其中一部分;在 macOS 上用 Finder 操作时要小心,它会替换整个文件夹而不是合并。
  • 频繁更新或参与开发:Linux/macOS 下设置 AQUARIA_DATA_PATH 指向安装目录,并在该目录内创建指向仓库 files 目录的 override 符号链接;Windows 下建议使用 junction(硬链接扩展工具)把 files 链接到编译输出目录。
  • Linux 打包维护者:固定 AQUARIA_DEFAULT_DATA_DIR,确保包内包含 files 目录的全部文件,并用 AQUARIA_EXTRA_DATA_DIR 指定这些额外文件的安装位置;同时需要保证 ~/.Aquaria/_mods/*/scripts/ 下的 mod 脚本与仓库 game_scripts/_mods 保持同步。

若想游玩随附的默认 mod,还需把 game_scripts/_mods 复制到本地的 _mods 目录。遇到问题时,README 指向 IRC 频道 #bitblot @ irc.esper.net 获取支持。

补充说明

学习建议

这份仓库更适合作为「商业游戏源码开放」的工程案例来阅读,而不是入门教程:

  • 想研究 2D 动作冒险游戏的 C/C++ 工程组织、CMake 多平台构建与外部依赖管理,可以从构建脚本和目录结构入手。
  • 想了解游戏逻辑与数据分离的设计,可以重点观察 scripts、data、game_scripts 等目录与可执行文件之间的配合方式,以及 override 覆盖机制。
  • 由于仓库不含美术与音频资源,阅读代码前需要自行准备原版游戏数据,否则无法实际运行验证。
  • README 中提到的「较多增强」未逐项列出,建议结合提交历史与代码 diff 自行核对,不要预设具体功能。

开源许可证与版权说明

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

相似项目