跳到正文

Crate 与功能开关

Workspace 被拆分为职责明确的 Crate。多数应用只需依赖 elura 门面并启用对应 功能。

Workspace Crate

Crate用途是否作为应用依赖发布?
elura统一门面与功能选择是,推荐
elura-core协议、会话、路由、票据和实时通信原语低层集成时使用
elura-runtime生命周期、安全、管理服务和可观测性通常通过 elura
elura-gateway客户端连接与会话运行时通常通过 elura
elura-world命令与玩家状态运行时通常通过 elura
elura-room应用自有的房间成员和生命周期通常通过 elura
elura-aoi稀疏网格二维可见性索引通常通过 elura
elura-simulation确定性固定步长时序通常通过 elura
elura-netcodeTick 对齐、输入冗余、预测和插值通常通过 elura
elura-replication按观察者维护实体生命周期与状态同步通常通过 elura
elura-lag-compensation有界权威历史和倒带查询通常通过 elura
elura-net-sim确定性弱网模拟开发与测试
elura-monolith单进程 Gateway 与 World 组合通常通过 elura
elura-testkit可选 Transport 的全链路业务测试与压测开发依赖
elura-adaptersRedis、SQL、DNS、Kubernetes、Outbox 适配器通常通过 elura
elura-providers身份、OTP、短信和支付 Provider通常通过 elura
elura-cli项目脚手架命令作为工具安装
elura-load可选 Transport 的框架回归压测工具仅框架维护者;publish = false
elura-perf可复现的多 Gateway 回归环境仅框架维护者;publish = false

门面功能

elura 默认启用 gatewayworld。两者都包含 runtime,而 runtime 包含 core

Feature启用内容
coreelura-core
runtimecoreelura-runtime
gatewayruntimeelura-gateway
worldruntimeelura-world
monolithgatewayworldelura-monolith
roomelura-room
aoielura-aoi
simulationelura-simulation
netcodeelura-netcode
replicationelura-replication;内部使用 elura-netcode
lag-compensationelura-lag-compensation
net-simelura-net-sim
adaptersruntime、基础 elura-adapters
redisadaptersgatewayworld、Redis 适配器实现
sqladapters、SQL 适配器实现
kubernetesadaptersgateway、Kubernetes 适配器实现
adminadapters、适配器支持的管理能力
providerscore、基础 elura-providers
identity身份 Provider 集合;同时启用 gateway 时也启用 Gateway HTTP 身份桥接
notification-alisms阿里云短信通知 Provider
otpOTP 服务与存储集成
payment-alipay支付宝
payment-appleApple 购买验证
payment-douyin抖音支付
payment-quicksdkQuickSDK 支付
payment-wechat-mini微信小程序支付
payment-wechat-pay微信支付
full上述全部可选游戏原语、适配器和 Provider

门面导入

门面刻意保持较小的 Crate 根级:elura::Errorelura::Result 位于根级, 其余 API 按职责组织。

常用应用契约和运行时类型可从 Prelude 导入:

rust
use elura::prelude::{
    AdminServerConfig, Gateway, GatewayConfig, Identity, OnlineBackend,
    OnlineDirectory, OnlineStatsReader, Route, SessionEvent, SessionObserver,
    TcpConfig, TcpTransport, World, WorldConfig, WorldContext,
};

在线契约位于 Prelude,具体 Backend 仍需显式导入:

rust
use elura::adapters::online::RedisOnlineDirectory; // `redis`

需要在调用处明确职责时,使用领域模块:

rust
use elura::world::{World, WorldModule, WorldModuleRegistry};
use elura::world::middleware::LoggingMiddleware;
use elura::world::testing::{test_identity, WorldHarness, WorldTestClient};
use elura_testkit::{FullStackBuilder, FullStackLoadConfig};
use elura::gateway::GatewayInfrastructure;
use elura::{aoi, lag_compensation, netcode, replication, room, simulation};

具体基础设施和 Provider 实现不会加入 Prelude,应从对应的 Feature Gate 命名空间导入:

rust
use elura::adapters::discovery::{DnsWorldDiscovery, DnsWorldDiscoveryConfig};
use elura::adapters::replay::RedisReplayStore; // `redis`
use elura::providers::identity::GuestProvider; // `identity`
use elura::providers::payment::WechatPayPayment; // `payment-wechat-pay`

同时启用 gatewayidentity 后,Prelude 还会导出 IdentityHttpBackendIdentityHttpPolicyHttpAuthApiHttpBearerAuthAuthenticatedHttp 以及 HTTP Token 类型由常规 gateway/core Feature 提供。

这样可以在 Code Review 中直接看出 Redis、Kubernetes、SQL 或第三方 API 依赖。条目是否可用仍由 Feature 决定。Provider 操作使用 elura::providers::ProviderResult;启用对应 Feature 后,常用 Provider Trait 也可从 Prelude 导入。

示例

toml
# Gateway + World runtime only (default)
elura = "0.3.1"

# Generated split project with DNS discovery types
elura = { version = "0.3.1", features = ["adapters"] }

# Redis-backed distributed application
elura = { version = "0.3.1", features = ["redis"] }

# Kubernetes discovery and SQL account versions
elura = { version = "0.3.1", features = ["kubernetes", "sql"] }

# 权威实时游戏原语
elura = { version = "0.3.1", features = [
  "room", "aoi", "simulation", "netcode", "replication",
  "lag-compensation",
] }

CLI 会把自身对应的 Elura 精确版本写入生成清单。请让 CLI 与门面 Crate 使用同一 Release,确保生成源码与导入 API 一致。

Rustdoc

条目级签名查 docs.rs,架构和运维指南查本站:

  • https://docs.rs/elura
  • https://docs.rs/elura-core
  • https://docs.rs/elura-runtime
  • https://docs.rs/elura-adapters
  • https://docs.rs/elura-providers
  • https://docs.rs/elura-room
  • https://docs.rs/elura-aoi
  • https://docs.rs/elura-simulation
  • https://docs.rs/elura-netcode
  • https://docs.rs/elura-replication
  • https://docs.rs/elura-lag-compensation
  • https://docs.rs/elura-net-sim

基于 MIT 许可证发布。