这类技术传统上用于 RTS
成百上千个持续移动的士兵单位不可能逐个同步,于是只传输玩家输入(“我把鼠标移到这里”“我按了这个键”),其余一切由各客户端本地模拟——就像打电话下棋,你只需说“后到 H5”,而不必念出整个棋局状态。
Hypersomnia · TeamHypersomnia/Hypersomnia
Hypersomnia 是 TeamHypersomnia 用 C++ 从零编写的一款多人俯视角(top-down)射击游戏,仓库内同时包含游戏与编辑器,主题标签涉及 2D 射击、浏览器游戏与独立开发。README 提供了网页版入口 play.hypersomnia.io,并附 Windows、Linux...
Hypersomnia 是 TeamHypersomnia 团队(标注来自波兰 🇵🇱)开发的一款多人俯视角射击游戏,其最大特点是:整个游戏用现代 C++ 从零编写,没有使用任何现成的游戏引擎。项目自 2017 年起就已在线可玩,并且以 AGPL v3 协议永久免费开源。
按照 README 的自述,Hypersomnia 试图把几种气质揉在一起:
仓库同时包含游戏本体与编辑器两部分,首页提供浏览器直接游玩的入口,以及 Windows / Linux / macOS 三个平台的 CI 构建徽章与下载链接。
README 设有 “The story behind the code” 一节,讲述代码背后的来龙去脉,并链接到 PressKit 的 credits 页面致谢贡献者。团队的长期目标是把这个项目做成“终极开源射击游戏”——一个可以无限扩展的社区工程。
对学习 C++ 游戏开发的读者,Hypersomnia 的价值不只在玩法本身:一个不用引擎、跨浏览器与原生平台保持确定性、还自带地图编辑器的完整联机射击项目,是研究网络同步、ECS 组织方式与工程构建流水线的良好样本。
成百上千个持续移动的士兵单位不可能逐个同步,于是只传输玩家输入(“我把鼠标移到这里”“我按了这个键”),其余一切由各客户端本地模拟——就像打电话下棋,你只需说“后到 H5”,而不必念出整个棋局状态。
在所有操作系统上统一使用 `clang` 编译器(LLVM 默认符合 ieee754);Windows 构建加 `/fp:strict`;ARM 构建加 `-ffp-model=strict`;并用 **STREFLOP** 中的实现替换 `std::sin`、`std::sqrt` 等数学函数。README 也提到替换后 `streflop::sqrt` 曾成为性能瓶颈,随后做了进一步优化(原文在此处被截断)。
README 的目录中包含 How to build(如何构建) 与 Contributing(如何贡献) 两节,说明项目欢迎外部开发者参与;同时提供 Discord 与 Telegram 社群入口,以及面向记者的 PressKit 仓库链接。项目曾被 GamingOnLinux、GitHub Blog(Game Bytes)、Linux Magazine 第 275 期以及 Hacker News 讨论提及,README 中保留了这些报道的链接。
需要提醒的是:由于项目要求跨平台浮点严格一致,自行编译时对编译器与编译选项(clang、/fp:strict、-ffp-model=strict)有明确约束,具体构建命令请以仓库中的 How to build 章节与 CI 工作流文件为准,本文不对未在 README 中展开的步骤做推测。
README 明确列出的内容规模是:
游戏设定上有三大阵营,其冲突源于对“道德卓越”的不同理解:Metropolis、Atlantis、Resistance。README 用一段带叙事色彩的问答引导玩家选择立场——是为被不道德模拟出的低等宇宙复仇,还是支持残酷实验以掌控轮回,抑或加入在地下等待战争结束的文明。
此外,游戏首次启动会进入教学关卡(Tutorial),方便新玩家上手;README 也提供了官方预告片与地图制作教学视频的链接。压缩包体积仅约 30 MB,所有归档文件都做了数字签名,并提供了签名验证入口。
README 给出的获取方式包括:
如果你不想依赖公共服务器,README 提供了自建服务器生成器(hypersomnia.io/generator):通过几次点击即可完成服务器配置,官方戏称“再也不用读文档了”,并给出 Docker 与 AppImage 两条路径。
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...