{"adoption": {"forks": 731, "observed_at": "2026-08-28T04:08:53.267446+00:00", "stars": 4548}, "canonical_url": "https://ross.abutalabs.com/products/focus-creative-games-luban", "card": {"archived": false, "artifact_type": "cli-tool", "description": "luban是一个强大、易用、优雅、稳定的游戏配置解决方案。luban is a powerful, easy-to-use, elegant and stable game configuration solution. ", "domain": ["developer-tools", "files"], "enriched": true, "function": ["serialization", "data-generation", "developer-tools", "parser"], "health_score": 99, "homepage": "https://code-philosophy.com/", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["focus-creative-games/luban"], "name": "focus-creative-games/luban", "platform": ["windows", "cross-platform", "game-engine", "cli"], "pushed_at": "2026-08-15T03:02:14+00:00", "repo": "focus-creative-games/luban", "stars": 4548, "tags": ["game-config", "excel-to-", "xlsx2", "data-pipeline", "localization", "hot-update", "protobuf", "flatbuffers", "msgpack", "unity", "unreal", "godot", "cocos2d-x", "code-generation", "game-development", "automation", "linux", "macos"], "topics": ["excel", "csv", "json", "xml", "cocos2d-x", "yaml", "protobuf", "flatbuffers", "game", "unity", "lua", "config", "xlsx2json", "godot", "msgpack", "xls2json", "xls2lua", "xlsx2lua", "hybridclr", "datatable"], "urls": [], "use_cases": ["convert excel game config tables to  or lua", "generate typed config code for unity from spreadsheets", "validate game data references and resource paths", "export game configuration to protobuf or flatbuffers", "manage localization strings for game projects", "support hot-update config loading with hybridclr or xlua", "build complex nested gameplay data like skill trees from excel"], "what_it_is": "Luban is a powerful, stable game configuration pipeline tool that reads data from Excel/CSV/JSON/XML/YAML/Lua sources and generates typed code and export data for many languages and engines. It supports rich type systems with OOP inheritance, data validation, localization, and mainstream message formats like protobuf, flatbuffers, and msgpack.", "when_to_avoid": ["non-game projects needing only simple one-off format conversion", "teams wanting a GUI-only tool with no pipeline customization", "projects whose config needs are fully covered by a simple  loader"], "when_to_choose": ["building games on Unity, Unreal, Godot, or Cocos2d-x that need structured config pipelines", "designers work in Excel but programmers need typed, validated config code", "you need multi-language code generation from a single config source", "your project needs localization and data validation built into the config workflow"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/focus-creative-games-luban", "repo": "focus-creative-games/luban", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.267446+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:20:05.697912+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f53d4cc50959fafe0e4049c158d16718a277b6a5f057a446c214164ee780e8ef", "fetched_at": "2026-08-28T04:08:53.267446+00:00", "kind": "readme", "missing": false, "url": "https://github.com/focus-creative-games/luban"}, {"content_hash": "0e79fa1e2a7a57502ab72bebc59a7e862c4638aa59a3a4dfe00bc11c46b226e8", "fetched_at": "2026-08-29T09:05:39.740204+00:00", "kind": "homepage", "missing": false, "url": "https://code-philosophy.com/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2142, "days_push": 18, "days_rel": 23, "gap_med": 21, "n_releases_24m": 24}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}