Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

protobuf format mismatch between this and current worldengine?

未关闭
#2 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
java
领域
backend

调研方向

从 WorldFileLoaderTest.java 开始,并使用 seed_17824.world 和 seed_1534.world 重现失败。比较 loader 如何处理两种 protobuf 格式,并确定兼容性边界。当当前的 WorldEngine 世界文件能够在没有缺少必需字段错误的情况下加载,且相关测试通过时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

I've tried to use this project to import information from a world file into a Java program (to paint a more detailed river map and a lake map, for example).
But even replacing

public void loadWorld() throws IOException {
    InputStream is = WorldFileLoaderTest.class.getClassLoader().getResourceAsStream("seed_1534.world");
    WorldFile.World worldFile = WorldFileLoader.fromInputStream(is);
    assertEquals("seed_1534", worldFile.getName());
}

with

public void loadWorld() throws IOException {
    InputStream is = WorldFileLoaderTest.class.getClassLoader().getResourceAsStream("seed_17824.world");
    WorldFile.World worldFile = WorldFileLoader.fromInputStream(is);
    //assertEquals("seed_17824", worldFile.getName());
}

in WorldFileLoaderTest.java (after placing the freshly generated seed_17824.world next to seed_1534.world in the filesystem) results in

Tests in error: 
  loadWorld(org.worldengine.world.WorldPainter): Message missing required fields: name, height, heightMapData, heightMapTh_sea, ...

A quick look with ghex into both seed_17824.world and seed_1534.world reveals that they look quite different (obviously only showing the first couple of bytes):

0A 09  s  e  e  d  _  1  5  3  4 10 80 08 18 80 08  " 80 98 C0 04 0A 80
 H 09 00 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 00 09 00 00 00 00

vs.

08 EE CA BD BB 05 10 80 80  L 1A 0A  s  e  e  d  _  1  7  8  2  4 20 D5
0E  ( F3 06  2 F3 D2 8E 07 0A FD 83 01 09 C2 F5  (  \ 8F C2 D5  ? 09 C2
F5  (  \ 8F C2 D5  ?
主要语言
Protocol Buffer
星标
7
派生
2
PR 合并指标
30 天内没有已合并 PR

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

相似的 Issue

更多 Backend & API Design Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。