本页目录

维京棋 Hnefatafl(Rust 实现)

hnefatafl · dcampbell24/hnefatafl

用 Rust 编写的 Hnefatafl(维京棋,tafl 类棋盘游戏)项目,标签含 board-game、strategy、viking-chess;README 显示项目名为「Hnefatafl Copenhagen」,并提供 docs.rs 文档与 Discord 社区入口,采用 AGPL-3.0-or-later 许可。仓库描...

★ Stars 8 Forks 5 License AGPL-3.0 更新 2026-11-06

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
需自备正版游戏数据;Linux/macOS 依赖 SDL2,可用 apt/brew 安装;GOG 安装包可用 innoextract 提取资源;GitHub Releases 下载可能需代理,待核验。

中文项目介绍

《辐射社区版》是对 1997 年经典等距视角角色扮演游戏《辐射》(Fallout)的一次完整引擎重实现。它并非简单地把老程序打包兼容层,而是用 C++ 重新写出一套可运行的 Fallout 引擎,在其上加载玩家自备的原版游戏数据资源,从而复现原作的玩法、地图、对话与战斗体验,同时修掉原版引擎长期存在的缺陷,并加入少量体验层面的优化。项目的代码基础来自 Reference Edition,对应的是 1997 年 11 月发售的 v1.1 版本。作者在 README 中明确说明:必须自持正版游戏才能游玩,可在 GOG 或 Steam 购买,然后下载最新 release,或自行从源码构建;项目另提供由 CI 产出的 debug 构建,供测试者尝鲜。

多平台支持是这个项目最实在的价值。Windows 下最简单的用法是把 fallout-ce.exe 复制进游戏安装目录,它可以直接当作 falloutw.exe 的替代品启动。Linux 需要一个包含数据资源的 Windows 版安装目录作为基底,把 Fallout 文件夹拷到任意位置,再把 fallout-ce 放进去,安装 SDL2(例如 sudo apt install libsdl2-2.0-0)后运行即可;如果手上只有 GOG 安装包,也可以用 innoextract 只抽取 app 部分,再把目录改名成 Fallout。macOS 要求 10.11(El Capitan)以上,在 Intel Mac 与 Apple Silicon 上都原生运行;除了复用 Windows 版数据,还支持以 MacPlay / The Omni Group 的旧 Mac 版为基底,从应用包 Contents/Resources 里取出 GameData 使用,Homebrew 用户同样可以用 innoextract 解包。Android 与 iOS 也有对应构建:Android 需要把 master.dat、critter.dat 和 data 目录拷到设备上,首次启动会弹出文件选择器导入数据;由于原作是为鼠标设计的,触控方案类似触控板——单指移动光标、单指点按为左键、双指点按为右键并切换光标模式、双指滑动用于滚动地图、世界地图和背包列表。README 特别提醒,Android 上 release 与 debug 属于两个不同的应用,各自需要独立的数据副本与存档,这是有意为之,普通玩家跟进 release 版即可。iOS 则通过 AltStore、Sideloadly 等侧载工具安装 ipa,首次运行会报找不到 master datafile 的错误,这一步是为了让应用在系统的文件共享中暴露出来,随后用 Finder 或 iTunes 把数据文件拷进 Fallout 应用目录。

核心功能

核心特性

配置环节是这个项目比较“硬核”的地方,README 花了不少篇幅。主配置文件 fallout.cfg 中有 master_dat、critter_dat、master_patches、critter_patches 等条目,取决于你的发行版来源,游戏资源文件名可能全部小写也可能全部大写,需要让配置项与实际文件名一致,或者反过来重命名文件。音频目录 sound(内含 music)既可能位于 data 下,也可能直接位于 Fallout 根目录,需要相应调整 music_path1,通常写成 data/sound/music/ 或 sound/music/,并且路径大小写要与实际完全一致(从光盘安装的版本可能是 SOUND/MUSIC/);而 ACM 格式的音乐文件本身则应统一大写。第二个配置文件 f1_res.ini 用来设定窗口宽度、高度和是否全屏,例如 1280x720 窗口模式。作者给出的建议是:桌面端随意;平板填写设备的逻辑分辨率(如 iPad Pro 11 是 834x1194 点,而不是 1668x2388 像素);手机把高度定为 480,再按屏幕宽高比推算宽度(20:9 的机型就是 480*20/9≈1067)。README 也坦白,这些设置未来会做成游戏内界面,目前只能手改 ini。

从贡献方向可以看出项目的长期路线。其一,是把实现基线从 v1.1 升级到 1998 年 3 月发布的 v1.2,后者至少包含重要的多语言支持;其二,是把《辐射 2》(以及 Sfall 的一些补充)中被验证好用的改进与体验优化回移到初代引擎,但作者提醒这是两款不同游戏,玩法平衡本身很脆弱,回移时需要谨慎。同一作者还维护着《辐射 2》社区版仓库 fallout2-ce,两者思路一脉相承。

技术架构分析

技术要点

技术层面上,这是一个规模不小的 C++ 工程:底层借助 SDL2 处理窗口、输入与音频等平台差异,上层则是对原作引擎逻辑的重新实现,包括地图与等距视角渲染、角色与物品数据、对话与任务状态、存档读写、UI 与分辨率适配等一整套 RPG 运行时设施。对于想学习“老游戏引擎逆向重实现”这件事的人来说,它的价值在于展示了一条可复制的路径:先确定一个明确的版本基线,逐模块替换可执行文件而不改动原始数据资产,用跨平台抽象层承接系统差异,再通过 CI 持续产出可测试的构建。

需要注意几点。仓库源码采用 Sustainable Use License,并非 OSI 认可的传统开源许可,二次分发或商业使用前应仔细阅读许可证文本;项目本身不附带任何游戏资源,运行前必须自备正版数据;配置依赖手工编辑 ini,对新手有一定门槛,尤其是文件大小写与音乐路径这两处最容易出错;README 中提到的升级到 v1.2、回移《辐射 2》特性都还是待办目标,不应视为已实现的功能。

开源许可证与版权说明

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

相似项目