Skip to content
CAI
Software that uses CAICheck a score

m969/EcsNode

37.1

Weak · 21 September 2026

153.1k

lines of production code

C#

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a modular game engine framework built on Unity and ECS, featuring a comprehensive data-driven architecture powered by the Luban code generation tool. It provides core gameplay systems including area management, AI, and state tracking, alongside a suite of specialized modules for achievements, networking, and battle logic. The project also includes editor tools and static analysis utilities to support development within the Unity environment.

Features

Add Achieve (Achievement) module with state tracking and progress management

Introduces the 'Achieve' module to track player goals, conditions, and completion status. The module defines data models (AchieveItem, AchieveCondition), components (AchieveItemListComponent, AchieveConditionListComponent), and systems (AchieveItemSystem, AchieveConditionListSystem) to manage state transitions (NotStarted, InProgress, Completed) and calculate progress. It includes a completion event (IAchieveCompletedHandler) for external subscribers to handle rewards or other logic, while explicitly excluding reward distribution logic from this module.

Modules.Unity · high confidence

Add Luban Unity package and Rust macro templates

The Luban Unity package is introduced, providing C\# editor and runtime components for game configuration management. This includes the \Luban.Editor\ assembly with menu items for documentation and quick-start guides, base classes like \EditorBeanBase\ for JSON serialization, and \ByteBuf\ for binary data handling. Additionally, Rust macro templates (\TryIntoBase\ and \EnumFromNum\) are added to the common templates directory, enabling automatic implementation of type conversion traits for generated code.

_LubanTables/Tools/Luban/Templates/common/rs/macros, UnityApp/Packages/luban\unity · high confidence

Add core game model, AI, and data generation infrastructure

The UnityApp project now includes a comprehensive set of base model classes and supporting infrastructure. This introduces the \App.Model\ assembly, which contains core game logic such as the \AppStatic\ class for global state, and the \EcsType\ enum for entity types. New modules have been added for AI (including \AIComponent\, \AIActionQueue\, and related interfaces), collision events, and movement components. Additionally, the project now supports data-driven configuration via the \Luban\ code generator, which produces C\# classes for game data tables (e.g., \TbItem\, \TbGridPlane\) and their corresponding wrapper classes. The \Adaptive Performance\ settings for the simulator have also been added to the project.

UnityApp · high confidence

Added Luban code generation tools and built-in type definitions

The LubanTables area now includes the complete Luban toolchain under \LubanTables/Tools/Luban/\, featuring \.deps.json\ files for multiple target languages including Bson, CSharp, Cpp, Dart, Gdscript, Golang, Java, Javascript, L10N, and Lua. Additionally, \LubanTables/Defines/builtin.xml\ was added to define standard vector types (vector2, vector3, vector4) for use in table schemas.

LubanTables · high confidence

Added Microsoft.CodeAnalysis.Analyzers 3.11.0 package files

The project now includes the full asset structure for Microsoft.CodeAnalysis.Analyzers version 3.11.0, containing the analyzer DLLs for C\# and VB.NET, along with their associated metadata, resource files, and license notices. This update provides the latest static analysis rules for .NET development within the Unity environment.

(repo-wide) · high confidence

Added area management components and systems

The editor module now includes new C\# classes for area management: the Area model, the AreaListComponent for storing area data, and the AreaListSystem for adding, removing, and retrieving areas. Additionally, the AreaSystem provides a factory method to create new area entities with a default map type, supporting the game's area-based gameplay.

Modules.Editor · high confidence

Behavioural changes

Updated architecture diagram in Readme

The project's architecture diagram (ecsnode.drawio) was updated to include new roles for 'Engineer (Creator)' and 'Artist', along with a 'Demo' node, reflecting changes in the system's structural design and stakeholder mapping.

Readme · high confidence

Dependencies

Adds multiple new game modules and supporting tools

The project introduces a suite of new modular components for the game engine, including modules for achievements, actor states, attacks, battle logic, buildings, chasing, grid-based systems, leaderboards, messaging, networking (Neter), resource data, rewards, synthesis, tasks, and unit dispatch. Each module is accompanied by its corresponding test project. Additionally, the update integrates the Luban configuration tool, a FolderTag editor extension, and a TypeScript code generation plugin, while also adding a packages.config file for several Microsoft.CodeAnalysis and related NuGet packages.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 37 → 37 (-0.2)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 40 → 34 (-6.6)
  • Architecture 68 (new)
  • Maturity 65 → 46 (-18.6)
  • Readiness 20 → 27 (+7.5)
  • Security 84 → 82 (-2.1)

Resolved (64)

  • Analyzed solution does not cover the bulk of the repository
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/MessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/NetworkMessageHandler.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • CommentedOutCode (Modules.Unity/com.module.neter/com.model.neter/Messages/UintMessageSystem.cs)
  • …and 44 more

New (403)

  • ActorAdvancePlaySystem.LocalAdvanceCreate (cognitive 18) (UnityApp/Assets/App.System/Game.System/system.world/com.system.actor-frame-play/ActorAdvancePlaySystem.cs)
  • ActorDeterminePlaySystem.DetermineConflictCheck (cognitive 18) (UnityApp/Assets/App.System/Game.System/system.world/com.system.actor-frame-play/ActorDeterminePlaySystem.cs)
  • ActorDeterminePlaySystem.DetermineCreate (cognitive 17) (UnityApp/Assets/App.System/Game.System/system.world/com.system.actor-frame-play/ActorDeterminePlaySystem.cs)
  • ActorPredictPlaySystem.PredictCreate (cognitive 17) (UnityApp/Assets/App.System/Game.System/system.world/com.system.actor-frame-play/ActorPredictPlaySystem.cs)
  • ActorPredictPlaySystem.PredictionFramePlays (cognitive 16) (UnityApp/Assets/App.System/Game.System/system.world/com.system.actor-frame-play/ActorPredictPlaySystem.cs)
  • Ambiguous distinction between 'WriteBytes' and 'WriteBytesWithoutSize'. It is unclear if 'WriteBytes' includes a size prefix or not. This is a critical ambiguity for serialization.
  • Ambiguous naming for signed long variants. Similar to short, 'ReadLong' implies signed, but 'ReadFlong' exists. The distinction is unclear.
  • Ambiguous naming for signed short variants. 'ReadShort' implies signed, but 'ReadFshort' exists. It is unclear if 'F' stands for 'Fixed', 'Fast', or 'Float' (though float is separate). If 'F' means 'Fixed' (standard), then 'ReadShort' is redundant or confusingly named.
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • AnalyzerSeverityNone repeated across 21 files (UnityApp/Assets/Packages/Microsoft.CodeAnalysis.Analyzers.3.11.0/editorconfig/PortedFromFxCopRulesEnabled/.editorconfig)
  • …and 383 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

m969/EcsNode was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6a2630fd1f761668da45e3dd3c923c096d0dae43 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.