Skip to main content
Version: Next

What is Luban

Luban is a configuration solution for game projects: it describes config structure with a unified type system, reads data from Excel / JSON / XML and more, validates it, then generates multi-language code and multiple data formats.

It is not merely “convert Excel to JSON.” It puts designer spreadsheets, program loading, client/server split exports, and complex gameplay data (skills, behavior trees, dungeons, and so on) into one pipeline.

Who it is for

RoleWhat you use
ProgrammerDefine schema, write generation commands, load with Tables at runtime
DesignerFill data in Excel (or editor-exported JSON) following the conventions

Core capabilities (overview)

  • Type system: primitive types, enums, beans, inheritance/polymorphism, containers, nullable
  • Multiple data sources: Excel family, JSON, XML, YAML, Lua, and more
  • Multi-target export: groups / targets control what client, server, and editor each receive
  • Validation: references, ranges, asset paths, and more—catch errors at generation time when possible
  • Multiple languages and formats: C# / Java / Go / Lua / TS…; bin / json / protobuf…
  • Extensible: Loader, Validator, CodeTarget, DataTarget, and Pipeline can all be plugged in

Full feature list: Luban feature list.

Good fit and poor fit

Good fit

  • Client and server need to share one set of config definitions
  • Table structure will grow from “flat row lists” into nesting and polymorphism
  • You want strongly typed loading code generated, not hand-written parsers

Poor fit

  • Only a few trivial key-value sheets, and you never need types / validation / multi-target export
  • You refuse to have programmers maintain schema (Luban treats schema as a contract: data that does not conform should error, not rewrite the definition)

Official resources

  • Example projects: luban_examples (includes MiniTemplate and multi-engine samples)
  • Source: luban
  • Unity Runtime: luban_unity
  • QQ group: 692890842 · Discord: see the repository README

Next steps