TSC · Secretchronicles/TSC
《The Secret Chronicles of Dr. M.》是一款开源 2D 横版卷轴平台游戏,使用 C++ 开发,附带较丰富的图形与音乐素材,并内置关卡编辑器,支持在关卡中编写脚本以扩展内容。项目是已停止活跃开发的 SMC(Secret Maryo Chronicles)的分支...
Freeciv-web 是把经典开源回合制策略游戏 Freeciv 搬到浏览器里的完整工程。它并非单一的网页小游戏,而是由网页前端、C 语言游戏服务端、WebSocket 代理与进程管理器共同组成的多组件系统,目标是在任何支持 HTML5 的浏览器中还原「建设城市、收集资源、组织政府、组建军队,最终打造最强文明」的文明类策略体验。玩家既可以联网与其他玩家对战,也可以单人对抗电脑 AI;画面提供两套实现:一套是采用等距视角的 HTML5 2D 版本,另一套是基于 WebGL 的 3D 版本。
在玩法层面,项目延续 Freeciv 的回合制 4X 结构:地图以六边形或方格瓦片构成,玩家从初始单位出发探索地图、选址建城、安排市民在周边地块上产出粮食、产能与贸易,通过科技研究解锁新政体与新单位,再用外交、军事与扩张手段推进局势。README 强调「in-depth game-play and a wide variety of game modes and options」,即规则深度与可选设置都相当丰富。社区服务器所列的模式覆盖单人、多人、Longturn(长回合慢节奏对局)、Play-by-Email(邮件对局)与 Hotseat(同机轮流),说明这套网页客户端不只是演示,而是能承载真实长期对局的完整游戏。
技术实现是这个项目最有意思的部分。仓库由若干子模块协作:freeciv-web 是一个 Java Web 应用(同时包含 Metaserver),由 JavaScript、Java、JSP、HTML、CSS 编写,用 Maven 构建,跑在 Tomcat 10 与 nginx 之上;freeciv 目录是从官方 Git 仓库检出的 Freeciv C 服务端,并打了补丁使其支持 WebSocket/JSON 协议;freeciv-proxy 是 Python 写的 WebSocket 代理,浏览器端的请求先到 nginx,再转发给代理,最后以 Freeciv 原生 socket 请求发给游戏服务端;Publite2 则是 C 服务端的进程启动器,负责管理多个服务端进程并通过 Metaserver 检查容量;此外还有 pbem 模块用于邮件对局支持。3D 版本 Freeciv WebGL 使用 Three.js 引擎,模型相关流程还涉及 Blender,仓库 wiki 中有面向 3D 美术的模型贡献说明。
运行方式上,README 推荐用 Vagrant + VirtualBox 在 Windows、macOS 或 Linux 宿主机上快速拉起一台 Ubuntu 虚拟机,执行 vagrant up 完成编译与部署,之后访问 http://localhost 或 http://localhost:8080 即可试玩;登录虚拟机用 vagrant ssh,源码通过 /vagrant 目录挂载。也支持用 docker-compose up -d 以容器方式构建运行。手动安装则需要准备 Tomcat 10、Java 11 JDK、Python 3.6、Pillow、MariaDB、Maven 3、nginx 1.11+、Tornado 6.1+、Jansson 2.6、liblzma-dev(用于 XZ 压缩存档)、MySQL Connector/Python 以及 pngcrush 等一串依赖,装好后用 start-freeciv-web.sh、stop-freeciv-web.sh、status-freeciv-web.sh 启停与查看状态,日志统一写到安装目录下的 logs 子目录。官方还提示 Vagrant 方案大约需要 4GB 内存与 3GB 硬盘空间。
许可方面,Freeciv 的 C 服务端采用 GNU GPL,Freeciv-web 网页客户端采用 GNU Affero GPL v3,README 中的 License 文件给出完整条款。也正因为 AGPL 的要求,README 特意列出了已知的合规线上服务器:主社区站 freecivweb.com(单人、多人、Longturn、邮件对局、Hotseat)、提供 WebGL 3D 单人体验的 FCIV.NET,以及 moving borders。想直接体验而不想自建的玩家可以从这些站点入手。
从学习角度看,这个仓库是一个少见的前后端跨语言协作样本:可以观察到浏览器 JS 客户端如何通过 WebSocket 与传统 C 服务端通信、如何用 nginx 做协议桥接、如何用进程管理器为多用户分配独立对局进程,以及如何在 Three.js 中渲染策略游戏的瓦片、单位与地图。参与者可以从 GitHub issues 与 doc/TODO 里挑选任务,提交 Pull Request;项目在 GitHub Actions 上对每次提交做持续集成构建。需要注意的是,构建与运行以 Unix 类环境(Ubuntu)为准,README 特别提醒 Windows 用户注意文本行尾差异,编辑器若改写行尾可能让文件在虚拟机里失效,若在安装后改动共享文件,需使用尊重 Unix 行尾的编辑器或用 dos2unix 转换。整体而言,Freeciv-web 更像是「把一款成熟桌面策略游戏完整移植到 Web 并配套在线服务」的工程实践,适合已经了解基本策略玩法、想深入多人联机与服务端部署细节的开发者阅读源码。
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...
DDNet 是 Teeworlds 的一个模组,源自 DDRace,是一款免费的合作型 2D 平台跳...