alepoydes/alien-evolution-pyport

GitHub: alepoydes/alien-evolution-pyport

1987年ZX Spectrum游戏Alien Evolution的保真度优先Python移植版本,提供可检查运行时和确定性回放功能,面向数字保存与机器学习研究。

Stars: 1 | Forks: 0

# Alien Evolution [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0ef62363e8213839.svg)](https://github.com/alepoydes/alien-evolution-pyport/actions/workflows/ci.yml) [![Pages](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5bd92e6ed5213840.svg)](https://github.com/alepoydes/alien-evolution-pyport/actions/workflows/pages.yml) 1987 年 ZX Spectrum 游戏的保真度优先 Python/Pyxel 移植版本,设计为可检查且可复现的研究制品。 [在浏览器中游玩](https://alepoydes.github.io/alien-evolution-pyport/play/) | [文档](https://alepoydes.github.io/alien-evolution-pyport/) - 保真度优先的移植,在行为上与原版游戏高度一致 - 可检查的运行时,支持确定性回放、保存/加载和无头步进 - 混合版权仓库;版权边界已在 [RIGHTS.md](RIGHTS.md) 中说明 ![Alien Evolution 游戏截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6571ee8725213842.png) ## 概述 `Alien Evolution` 是一款发布于 **1987** 年的 **Sinclair ZX Spectrum**(48K 和 128K)等距视角动作游戏。你扮演 **CYBORG G4**,一个在核灾难后被部署到地表以控制外星爆发的仿生人。游戏看起来像一个紧凑的街机竞技场,但压力来自外星人的生命周期:如果你让它们活着,它们会**经历几个阶段进化**,变得更快、更具攻击性,并最终**产卵**,增加种群数量。因此,时刻面临的问题不仅是瞄准;还要决定现在必须消灭什么,以免日后不得不应对成倍的敌人。 本仓库是原版 ZX 游戏的现代 **Python/Pyxel** 保存移植。目标是保真度优先:在我们认为合理的范围内,尽可能在行为、时机和表现上匹配 8 位版本,同时也使程序更易于运行、检查和实验(包括无头步进、从记录输入进行确定性回放,以及用于可复现重置的状态快照)。 本项目还严重依赖 [SkoolKit](https://github.com/skoolkid/skoolkit) 和 [Fuse (the Free Unix Spectrum Emulator)](https://fuse-emulator.sourceforge.net/) 进行源码级分析,并依赖 [Pyxel](https://github.com/kitao/pyxel) 实现此保存移植。非常感谢这些项目及其维护者,他们使这项工作变得轻松许多。 ## 权利与保存声明 本仓库是一个混合版权的保存项目,并非一个统一采用 MIT 许可的游戏包。原有的 1987 年游戏 *Alien Evolution* 及其标题、视听表现、游戏资产、角色和其他原创表达元素,仍为其原作者及任何其他适用权利人所有。 仓库 [LICENSE](LICENSE) 适用于 Igor Lobanov 撰写的代码和文档,明确排除的路径除外。当前被排除在 MIT 授权之外的衍生自原版游戏的材料包括 `src/alien_evolution/alienevolution/blocks.py`、`figs/`、`recordings/` 和 `skool/`。权威的权利边界记录在 [RIGHTS.md](RIGHTS.md) 中。 本项目不声索原版游戏的所有权,也不作为其商业替代品呈现。其目的是保存、文档化、逆向工程、教育、长期可维护性和研究。Python 包仍可安装,但仓库和源分发故意采用混合版权。 ## 1987 年背景下的 Alien Evolution 为了正确理解 *Alien Evolution*,回顾一下 **1987** 年 ZX Spectrum 市场的样貌会有所帮助。当时机器普及,磁带分发成熟,玩家已经熟悉了 **等距视角** 游戏的“假 3D”语法,这是一种无需任何 3D 硬件即可暗示深度的经济方式。在这种背景下,一个成功的设计通常不在于拥有*更多*机制,而在于选择一两条玩家能感知到的互动规则。 ### 起源与发行 *Alien Evolution* 于 **1987** 年在 Spectrum 平台发行,由 **Gremlin Graphics Software Ltd** 出版,售价 **£4.99**,这使其完全处于大众市场磁带时代。 署名作者是 **Marco Paulo Carrasco** 和 **Rui Manuel Tito**,来自葡萄牙的青少年开发者。像许多 Spectrum 程序员一样,他们在“卧室程序员”的传统中工作:小团队、有限的资源,以及硬件能力与设计成果之间异常直接的关系。 一个具有重要历史意义的细节是,这不仅仅是一个针对英国平台的英国制作。后来关于葡萄牙电子游戏发展的历史著作(特别是 Nelson Zagalo 撰写的)描述了 Carrasco 和 Tito 从早期葡萄牙 Spectrum 场景到与 Gremlin 建立发行关系的历程,并指出 *Alien Evolution* 成为了他们**最大的商业成功**,据报道回报超过 **£20,000**,对于两个在家工作的 18 岁年轻人来说,这是一个非凡的结果。 ### 设计:升级、进化与繁殖 在叙事上,游戏是经典的 1980 年代科幻风格:人类在核浩劫后转入地下生存,并派遣仿生人 _CYBORG G4_ 从敌对的外星生命手中夺回地表。然而,在机制上,游戏更多是关于*遏制*而非灭绝。 决定性的规则很简单:如果你未能及时消灭外星人,它们就会变得更加危险。每个外星人都会经历一个包含多个行为阶段的进化序列(包括三个移动阶段),最后阶段是繁殖性的:它产卵,增加新的外星人,并迅速将可控的局面变成繁忙的局面。 该生命周期在一个非常 Spectrum 特有的空间工具包中展开:一个 **等距视角** 竞技场、可以在地图上传送你的 **传送点**,以及允许你诱捕、引导或阻挡移动的 **可推方块**。换句话说,游戏的难度不仅在于反应时间;还在于*空间管理*。你在可以部分重塑的走廊中引导种群,遵循一套将推迟击杀视为具有延迟成本的战略选择的规则。 ### 接受度、分发及其重要性原因 当时的杂志报道将 *Alien Evolution* 视为等距动作迷宫家族中一个称职且略显独特的作品,而非一次性的授权产品。1987 年的评论得分往往集中在 70 多分到 80 分左右(例如:**Crash** 75/100,**Your Sinclair** 8/10,**ASM** 9/12,**MicroHobby** 7/10)。该游戏还通过欧洲分销渠道传播,包括同年由 **Erbe Software S.A.** 进行的再版发行。 其较长期的遗产虽不大但真实存在。一部分是文化上的:该游戏是 8 位设计师如何通过少数互动规则产生紧张感的一个紧凑范例。另一部分是方法论上的:原版 Spectrum 程序足够小,适合详细研究,这使其成为逆向工程和“软件考古”的良好样本;你实际上可以将低级实现选择与面向玩家的行为联系起来。 该移植通过将 *Alien Evolution* 转变为一个可检查、可脚本的现代程序延续了这一后续生命,同时记录了用于理解原始行为的证据链,并保持仓库的版权边界明确。 **历史参考(主要背景):** - World of Spectrum 条目(发布数据、制作人员名单、档案制品):https://worldofspectrum.org/archive/software/games/alien-evolution-gremlin-graphics-software-ltd - Nelson Zagalo (2015), *Video Games Around the World (Portugal)*(背景历史;参见图/说明页):https://www.researchgate.net/figure/Paradise-Cafe-1985-top-left-Alien-Evolution-1987-top-right-Portugal-1111_fig1_323255356 - 杂志评论汇总及来源/期号(Crash, Your Sinclair, ASM, MicroHobby):https://www.uvlist.net/game-11914-Alien%2BEvolution ## 项目目标 - 以易于在现代硬件上运行和检查的形式保存一款具有历史意义的游戏。这不是一个随意的重写:Python 函数映射到原始代码中的例程,Python 变量镜像原始数据块,因此游戏机制在行为上保持与源游戏等效。 - 将原版 ZX 版本视为制品:逆向工程数据格式、更新规则和 1980 年代后期 Z80 时代编程的典型实现模式。 - 记录游戏循环和运行时行为,以用于教育和长期可维护性。 - 提供用于自动化、机器人和机器学习研究(特别强调强化学习)的实用、可脚本化环境。 ML(机器学习)角度并非事后补充。8 位游戏作为学习环境占据了一个有用的中间地带:它们足够快且具有确定性,可以在普通硬件上负担*数百万*步,但它们仍然足够丰富,可以测试那些会破坏简单智能体的事物:来自像素的感知、风险下的探索、延迟后果以及具有不可逆状态变化的规划。 *Alien Evolution* 对此特别方便,因为其外星人生命周期产生了延迟的、复合的效应: - **“关于时间”的信用分配:** 最重要的错误通常不是错误的行动,而是遗漏的行动。允许外星人存活足够长的时间以进化(或繁殖)会在数十或数百帧后产生后果。 - **内源性非平稳性:** 有效难度部分受智能体控制。如果你保持种群年轻,环境仍然可控;如果你让它老化和繁殖,同一张地图就会变得混乱。 - **混合控制 + 规划:** 你需要短期视野的移动/射击 *以及* 关于何时进行清理、驱赶或诱捕种群的长期决策。 - **结构化难度和课程:** 生命周期为课程训练和阶段性评估提供了自然的进展(例如,“首先防止繁殖”,然后“优化清理速度”)。 - **多种观察模态:** 无头运行器可以逐帧输出 Spectrum 风格的屏幕位图和属性数据,这使你能够比较原始像素智能体与更结构化的表示。 - **作为一等功能的可复现性:** 来自记录输入的确定性回放,加上完整的状态保存/加载,使得进行受控消融实验、反事实推演(“相同的开始,不同的策略”)、离线数据集和习得行为的回归测试变得切实可行。 这对于研究来说还有一种很好的对称性:因为原始逻辑足够紧凑以至于可以逆向工程,你不仅可以使用现代学习方法来*玩*游戏,还可以*恢复*它:学习预测性的世界模型,从像素中提取对象级表示,并将习得的动力学与分析得出的基本事实进行比较。 ## 快速开始(交互式) ``` uv sync uv run alienevolution ``` 默认控制: - `W/A/S/D`:移动 - `Space`:动作/射击 - `E`:切换武器模式 - 桌面版作弊:输入 `lvl1`、`lvl2` 或 `lvl3`,然后暂停约 1 秒以应用 体验优化热键: - `F5`:快速保存 - `F9`:快速加载 - `F8`:回滚 - `F7`:手动检查点 作弊命令在 Web 构建中禁用。 ## 项目文档 - [README.md](https://github.com/alepoydes/alien-evolution-pyport/blob/main/README.md) 是主要概述:历史背景、Web 游玩链接和快速开始。 - [RIGHTS.md](RIGHTS.md) 是仓库混合版权许可边界的权威声明。 - [CITATION.cff](CITATION.cff) 提供用于研究和保存参考的引用元数据。 - [GAME_INFO.md](GAME_INFO.md) 将游戏作为面向玩家的系统进行解释:目标、控制、敌人进化、武器角色和关卡流程。 - [RESEARCH.md](RESEARCH.md) 记录了对原版 ZX 游戏的研究:运行时行为、数据模型、解码代码族和基于 Skool 的逆向工程材料。 - [PORTING_GUIDE.md](PORTING_GUIDE.md) 包含移植和运行时基础设施:共享契约、模块布局、文件 I/O、FMF/RZX 管道和可复现执行工作流。 - [CLI_UTILITIES.md](CLI_UTILITIES.md) 记录了命令行工具和实用的调用模式。 - [AI.md](AI.md) 专注于机器人和 ML 集成:控制接口、遥测语义和实用自动化策略。 - [DEVELOPMENT.md](DEVELOPMENT.md) 涵盖本地开发、测试、打包和 GitHub Pages 部署。
标签:1987 游戏, AI工具, headless 模式, Python, Python 游戏, Pyxel, Sinclair, ZX Spectrum, 像素风, 复古游戏, 复古计算, 外星进化, 开源游戏, 怀旧游戏, 无后门, 浏览器游戏, 游戏 preservation, 游戏移植, 状态存取, 独立游戏, 研究 artifact, 确定性回放, 等轴测视图, 街机动作, 逆向工具