Skip to content

PANP2010/aevum

Repository files navigation

Aevum

大型模拟模组的确定性 DES 基石库。 让「观察某区域」等价于「该区域从创建起一直被连续模拟」——支持数百万区域规模, 玩家完全感知不到「区块卸载」。给殖民地 / 帝国 / 大世界类 Minecraft 模组当底层引擎。

许可 MIT · 状态 0.1.0 · 平台 纯 Java 21(核心零 MC 依赖)+ Fabric 参考绑定(MC 1.21.11)


这是什么

Aevum 是一个,不是开箱即玩的模组。它解决一个具体的硬问题:

原版 Minecraft 只 tick 已加载的区块。所以远方的工厂会停产、运输队会冻结、战争只在玩家在场时发生。 现有方案(强制加载区块)在「数百万 km²」尺度上会爆内存。

Aevum 的反转:世界的真相是一条全局确定性事件时间线,方块只是它在某地某刻的缓存。 玩家能看到的永远已物化;看不到的退化成离散事件模拟 + 惰性数学。一旦观察,所见与「一直在模拟」逐位相同。

你写领域逻辑(什么是城市、兵怎么打、货怎么运),Aevum 负责让它在百万区域尺度上确定性地、不被卸载阻塞地推进


已验证(不是 PPT)

主张 证据
成本 ∝ 锥内事件数,与世界规模无关 远程压测:固定 5000 事件/tick,区域 5M→10M→20M,中位耗时 4.38→4.67→5.65ms 几乎不变
数百万 km² 持续运行 20 TPS 2000 万抽象区域稳态 ≤7ms/tick(占 50ms 预算 14%),等效 20 TPS 不掉
观察即模拟,物化可见 bot 进真实 MC 1.21.11 服务端:seeded 0→12,金块柱出现在 (8,-60,8),离开后状态保留
MC 服务端稳态 20 TPS bot 瞬移 seed 1078 区域后,900 tick/45s = 20.00 TPS
客户端内存与世界规模解耦 1000 标记从 100 km² 到 1 亿 km²,序列化字节数完全相同
确定性 / 崩溃恢复 / 战争一致 144 判定性测试全绿(6 模块),含跨 JVM WAL 恢复、无观察战斗==在场

快速上手

dependencies {
    implementation("dev.aevum:aevum-core:0.1.0")   // 内核 + 公共 API
}
// 1) 你的领域状态
class MyWorld implements WorldState { /* 城市/库存/军队... + commitHorizon + stateHash */ }

// 2) 构造引擎
Simulation sim = Aevum.builder(worldSeed, new MyWorld())
        .cone(regionSpace)   // 大规模因果锥裁剪;或 .global() 作参考
        .build();

// 3) 调度领域事件 + 玩家观察时提交
sim.schedule(new MyEvent(fireAt, sim.nextEventId(), regionId));
sim.observe(playerRegion, currentTick);   // commit-on-observe:该区域追算到 currentTick

完整集成步骤见 docs/INTEGRATION.md


模块

模块 内容
aevum-core DES 内核(全局参考 + 因果锥裁剪)、确定性数学(定点/RNG/128 位距离)、公共 API 门面(Aevum/Simulation)、轨迹拦截、空间索引、T3 战略快照
aevum-model 节点经济:生产/消费/库存,闭式推进 + 边界事件
aevum-logistics 跨区物流闭环:产→运(时延)→消,物料守恒
aevum-store 持久化:WAL(内存+磁盘,CRC32)、快照、事件队列序列化(P1-P4 恢复=重放)
aevum-war 战争:时空拦截广相、确定性战斗、围城援军、AI 侦察迷雾、自驱动
aevum-materialize 物化:蓝图+增量、预算分片调度、地平线预物化、去物化捕获、datapack API
aevum-fabric MC 1.21.11 Fabric 参考绑定(ServerTick 驱动 + 物化 + T3 网络 + 客户端地图 HUD)

四条设计公理(库的契约)

下游接入时必须遵守,否则「观察 == 连续模拟」会穿帮:

  • A 确定性 — 定点数学 + seeded RNG + 有序容器,stateHash 可复现
  • B 完整调度 — 任何未来效果在起因处即 schedule(出发即预约)
  • C 观察即提交 — 只通过 observe 读区域状态,观察不改变结果,只强制计算
  • D 因果锥有界 — 定义合理 maxSpeed,cone 裁剪才正确

文档


构建

# 测试(纯逻辑,144 全绿)
./gradlew test
# 发布到本地 Maven 供下游依赖
./gradlew publishToMavenLocal

需 JDK 21。Fabric 绑定(aevum-fabric)需 Loom + MC 1.21.11,单独构建。

About

Deterministic DES foundation library for large-scale Minecraft simulation mods (colonies/empires). Observe == continuously simulated; cost independent of world size. Verified at 20M abstract regions on real MC servers.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages