在哪里找到你喜爱游戏的开源代码 — osgameclones 项目概览
有时候你想从工作任务中休息一下,在本地启动一个复古项目,看看它内部是如何运作的。但要找到传奇游戏作品的源代码并非易事。它们大多受版权保护,内部代码被锁在企业的保险箱里。然而,社区几十年来一直在创建克隆版本、重制版和开源引擎,使得在现代系统上运行经典游戏成为可能。
osgameclones 仓库可以说是此类项目最全面的数据库。它不仅仅是一个链接列表,而是一个由社区维护的结构化目录,已持续十多年。
为什么这对开发者有用
对于游戏开发来说,这个仓库就像一本解剖学教科书。如果你在编写自己的引擎,或者只是想了解像《 settlers 》这样的策略游戏如何实现经济系统,或者平台游戏中的物理效果,你可以在 C++、Python、Rust 甚至 JavaScript 中找到可运行的示例。
除了学习之外,这个项目对那些想为开源做贡献但不知从何入手的人也很有用。该数据库收录了数百款游戏:从简单的街机游戏到大型 RPG,其中许多游戏经常需要帮助来修复 bug 或移植到新平台。
数据库是如何组织的
项目作者采取了严谨的方法。他们没有将所有内容堆在一个庞大的 README 中,而是使用 YAML 文件存储数据。仓库有两个主要文件夹:
originals— 包含原始商业游戏的信息。games— 存放克隆版本和重制版的描述,以及仓库链接、官方网站和开发状态的链接。
有趣的是,该项目有严格的数据验证模式 via schema/games.yaml。这确保了数据库中没有失效链接或垃圾信息。如果你想添加一款游戏,你的 PR 将通过 GitHub Actions 进行自动化检查。
目录里有什么
数据库几乎涵盖了所有类型:
- 用于运行原始资源的开源引擎(例如,用于《上古卷轴:晨风》的 OpenMW 或用于《命令与征服》的 OpenRA)。
- 拥有自己图形和音效的完整克隆版本。
- 仅展示部分机制的技术演示。
排序是按字母顺序的,但 ScummVM 除外。这样安排是合理的:ScummVM 托管了太多冒险游戏,如果放在主列表中会直接淹没其他内容。
如何在本地运行项目站点
如果你不习惯通过 GitHub 界面阅读 YAML 文件,可以本地部署该项目。它使用 poetry 进行依赖管理,并用 make 进行构建。
对于容器化爱好者,Docker 也可用。启动过程是标准的:先构建镜像,然后运行服务器。
make docker-build
make docker-run PORT=3000
之后,目录可以在 localhost:3000 访问。容器内运行的是从这些 YAML 文件生成的静态站点。
如何帮助项目
项目依靠贡献者维持。如果你知道一个很酷的《Diablo》或《Dwarf Fortress》克隆版还没有列入列表,作者建议两条路径:在网站上填写表单或从模板创建 Issue。但对于开发者来说,最好的方式是直接编辑 games 或 originals 文件夹中的文件,然后发送 Pull Request。
顺便说一句,该项目积极参与 Hacktoberfest,所以在做有用的事情的同时,也是为你的个人资料赢得成就的好机会。
osgameclones 仓库对于那些热爱复古游戏并想深入了解其代码的人来说是一座金矿。项目本身没有复杂的架构(它只是一个 Python 静态站点生成器),但内容的价值弥补了一切。
谁应该来看看:
- 想要学习机制的有抱负的游戏设计师和游戏开发者。
- 正在寻找有趣的 Open Source 项目来贡献的人。
- 电子游戏历史爱好者。
该项目并非试图"消灭"商业游戏,而是通过开源帮助保留它们的遗产。很高兴看到数据库多年来一直保持更新。
相关项目