案例

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 的使用。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.rst GitHub · bravoserver/bravo · 修订 7be5d79
  2. docs/introduction.rst GitHub · bravoserver/bravo · 修订 7be5d79
  3. docs/differences.rst GitHub · bravoserver/bravo · 修订 7be5d79
  4. CHANGELOG.rst GitHub · bravoserver/bravo · 修订 7be5d79
  5. bravo/beta/protocol.py GitHub · bravoserver/bravo · 修订 7be5d79
  6. bravo.ini.example GitHub · bravoserver/bravo · 修订 7be5d79
  7. requirements.txt GitHub · bravoserver/bravo · 修订 7be5d79
  8. .travis.yml GitHub · bravoserver/bravo · 修订 7be5d79
  9. LICENSE GitHub · bravoserver/bravo · 修订 7be5d79
  10. tools/parser-cli.py GitHub · bravoserver/bravo · 修订 7be5d79
  11. https://pypi.org/project/Bravo/2.0/

同分区更多条目:游戏

游戏分区全部 250 项资源游戏案例(205)