案例
Bravo:逆向实现的 Minecraft 服务端
以 Python 基于 Twisted 重新实现 Minecraft Alpha 与 Beta 时期多人游戏的服务端;其文档称这是从零编写的逆向实现,致谢了网络流量转储的提供者,并说明通用的 Minecraft 资料已贡献给社区 wiki。最终的 2.0 版支持 1.4.x 客户端协议,涵盖登录、区块传输、实体、服务端背包、光照、物理和 Anvil 存档,同时有意改变了区块加载和物品堆叠等行为。可插拔架构提供地形生成、季节和命令,另有几个小脚本用于查看数据包、NBT 和区域文件。
- 目标
- 游戏 · 协议
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 来源复核于
使用条件与局限
- 项目已停止维护:GitHub 简介标为 UNMAINTAINED,所审阅的 master 提交日期为 2014-09-09,比 2.0 标签(2013-01-10,也是 PyPI 上的最新版本)多 90 个提交。2.0 更新日志称新增 1.4.x 协议支持但不含服务端加密,停用了已失效的在线验证,并以 Anvil 取代 Alpha 和 Beta 存档格式;源码固定协议版本为 78。简介称运行创造模式大概是安全的,但仍缺少部分生存多人模式要素;功能列表等较早的页面早于这些 2.0 改动。
- 服务端不需要任何原游戏文件;玩家用自己拥有的对应版本 Minecraft 客户端连接,FAQ 表示 Bravo 不会替代客户端。仓库未提交游戏素材或 Mojang 代码:方块、物品和配方定义以 Python 表格写成,文档称 Bravo 未继承其他 Minecraft 项目的代码。
- 需要 Python 2.6 或 2.7(CPython 或 PyPy);requirements.txt 固定 construct 2.0.6 和 Pillow 2.4.0,并要求 Twisted 11.0+(含 Twisted Conch),IRC 和网页插件另需 Twisted Words 或 Web。它以 twistd 的 bravo 插件运行,按 bravo.ini.example 配置世界路径、创造或生存模式及 anvil 序列化器;数据包解析脚本仍导入 2.0 之前的模块路径。
- Travis CI 曾在 Python 2.6、2.7 和 PyPy 上用 trial 运行仓库内针对协议数据包、区块、背包、插件和序列化器的测试;这些测试检查 Bravo 自身代码,而非与 Mojang 服务端的等价性,本次审阅未运行任何程序。采用 MIT/X11 许可证,bravo/nbt.py 取自 Thomas Woolford 的 MIT 许可 NBT 库;Minecraft 及其客户端仍归 Mojang 所有。所审来源未确立 REA 或 AI 的使用。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.rst GitHub · bravoserver/bravo · 修订 7be5d79
- docs/introduction.rst GitHub · bravoserver/bravo · 修订 7be5d79
- docs/differences.rst GitHub · bravoserver/bravo · 修订 7be5d79
- CHANGELOG.rst GitHub · bravoserver/bravo · 修订 7be5d79
- bravo/beta/protocol.py GitHub · bravoserver/bravo · 修订 7be5d79
- bravo.ini.example GitHub · bravoserver/bravo · 修订 7be5d79
- requirements.txt GitHub · bravoserver/bravo · 修订 7be5d79
- .travis.yml GitHub · bravoserver/bravo · 修订 7be5d79
- LICENSE GitHub · bravoserver/bravo · 修订 7be5d79
- tools/parser-cli.py GitHub · bravoserver/bravo · 修订 7be5d79
- https://pypi.org/project/Bravo/2.0/
同分区更多条目:游戏
- RenderDoc · 工具
- AssetRipper · 工具
- Cpp2IL · 工具
- Il2CppDumper · 工具
- RenderDoc MCP · 集成
- UndertaleModTool · 工具