clumsy-bird · ellisonleao/clumsy-bird
Clumsy Bird 是一个使用 MelonJS 游戏引擎编写的 Flappy Bird 克隆项目,语言为 JavaScript,仓库话题包含 flappy-bird、game-development 与 melonjs。README 说明可在本地安装 Node 与 Grunt 后执行 npm install、grunt connect,再访...
该仓库是《GTA III》PC 版的源码重建(反编译)工程,README 内容即 re3 项目本体。项目的核心思路不是一次性重写,而是按“忒修斯之船”的方式,把原版游戏中已有的二进制实现一块一块地换成本工程自己编写的 C++ 代码,并保证在替换的每一步之后游戏都仍然可以正常启动与游玩。换句话说,这是一个长期演进的逆向工程:从函数级、类级逐步逼近“全部代码都是自己写的、但行为与原版等价”的目标。仓库名中的 gta3-decomp-alt 与 README 中的 re3 标题相呼应,说明它是同类反编译工程的一个镜像或分支变体;GitHub 上的仓库描述本身带有针对发行商 Take-Two 的情绪化措辞,这一点也提示此类项目与版权方之间存在长期紧张关系。
在运行方式上,README 给出了相当明确的说明:re3 本身不附带任何游戏资源,必须自备一份正版《GTA III》(README 直接指向 Steam 商店页)。使用流程是先用官方渠道买到游戏,再把编译产物或从构建流水线下载的 re3.exe 放进 GTA3 安装目录后运行;如果希望启用俄语语言包、菜单地图之类的可选特性,可以把仓库 /gamefiles 目录下的文件复制到游戏根目录。这个设计决定了它的定位:它是一份“可执行代码”的重建,而不是一份可以直接双击运行的独立开源游戏,玩家侧的体验仍然依赖原版资产。
技术实现上最值得关注的是渲染层。re3 并没有直接使用原版的 RenderWare,而是接入了完全自研的 RenderWare 替代实现 librw,它作为子模块随仓库一起拉取,同时支持通过 LIBRW 环境变量指向开发者自己的 librw 副本,方便并行调试渲染器。README 的构建状态表列出了 Windows 平台上的两条图形后端:Direct3D9(librw_d3d9-mss)与 OpenGL 3.3(librw_gl3_glfw),每条后端又分 Debug 与 Release 两种产物,并带有 AppVeyor 的 CI 徽章和 Bintray 下载入口。音频方面,README 特别提示在 Windows 上选择 OpenAL 时需要额外阅读 wiki 中的专门说明,说明音频后端是可配置、需要手动准备运行环境的。
构建流程方面,Windows 下需要 Visual Studio:首先以 --recursive 参数克隆仓库以确保子模块到位,然后在根目录执行 premake-vsXXXX.cmd 生成 Visual Studio 工程,再用 IDE 打开编译。若选择 64 位 D3D9,需要自行从微软获取 64 位 DirectX 9 SDK,因为项目不分发该 SDK。此外可以设置 GTA_III_RE_DIR 环境变量指向 GTA3 根目录,让构建后脚本自动把可执行文件拷贝过去,省去手动搬运的步骤。项目还在 src/core/config.h 的末尾集中放置了大量编译期开关,例如 FIX_BUGS 会修复开发过程中发现的若干原版缺陷,适合按需开关。Linux 与 FreeBSD 则分别有对应的 wiki 构建页面,属于官方文档中明确列出的支持路径。
完成度方面,README 专门维护了一份“尚未逆向或不完整”的类清单,这本身是判断工程进度的好材料:CMemoryHeap 只在 PS2 版本中存在;NameGrid.cpp 只出现在移动端(可能是极早期的玩家名输入界面或多人模式残留);PedDebug.cpp、HandlingMgr.cpp 中的调试函数、CVehicle::ProcessBikeWheel 的早期摩托车轮代码、CAutomobile 与 CBoat 的 DebugCode 及若干 handling 调试函数同样只在移动端版本里有对应实现;TexturePools 则仅存在于 PC 版,是对 RenderWare 的一处微小改动,工程判断为实际并不需要。这些条目说明该工程在重建过程中同时参照了 PC、PS2 与移动端多个版本的代码痕迹,工作量与考证难度都不低。
适合学习的地方在于:它是一份非常真实的大型 C++ 游戏代码库案例,可以观察渲染抽象层如何替换商业中间件(librw 对 RenderWare 的替代)、跨平台图形后端(D3D9 与 OpenGL 3.3)如何共用同一套游戏逻辑、预编译宏如何控制平台差异与缺陷修复,以及大型项目如何通过编码规范文档约束协作。需要注意的风险也很多:README 中的 Bintray 下载徽章指向的服务已经停止运营,链接很可能失效,实际获取二进制应优先考虑自行编译;AppVeyor、Discord 等外链在部分网络环境下访问受限;仓库描述的情绪化措辞与项目性质意味着代码与资源的授权、合规状态都需要使用者自行核验,本项目不含任何游戏素材,也不应被当作可以合法分发的完整游戏。代码完成度、可用平台与授权情况均建议以官方仓库的最新状态为准。
Hypersomnia 是 TeamHypersomnia 用 C++ 从零编写的一款多人俯视角(top-down...
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
micropolisJS 是把 Micropolis(开源版《模拟城市》类城市模拟游戏)移植到 J...