{"adoption": {"forks": 155, "observed_at": "2026-08-28T04:05:09.429004+00:00", "stars": 1599}, "canonical_url": "https://ross.abutalabs.com/products/unityhfsm", "card": {"archived": false, "artifact_type": "library", "description": "A fast, tried-and-tested hierarchical finite state machine library for Unity, designed to be easy to use yet powerful without compromising performance.", "domain": ["gaming-tools", "cross-platform"], "enriched": true, "function": ["game-engine", "developer-tools"], "health_score": 82, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["Inspiaaa/UnityHFSM"], "name": "Inspiaaa/UnityHFSM", "platform": ["game-engine", "cross-platform"], "pushed_at": "2026-03-25T17:02:04+00:00", "repo": "Inspiaaa/UnityHFSM", "stars": 1599, "tags": ["unity", "fsm", "finite-state-machine", "hierarchical", "csharp", "gamedev", "coroutines", "ai-behavior", "no-gc-allocations", "game-development"], "topics": ["fsm", "csharp", "unity3d", "hierarchical", "finite-state-machine", "state-machine", "unity", "lightweight", "coroutines", "gamedev"], "urls": [], "use_cases": ["implement NPC AI behavior states in Unity", "manage player character states like walk, run, sneak, jump", "organize complex game logic such as weapon handling with firing, cooling, and reloading", "build hierarchical state machines to reduce duplicate code between states", "prototype game logic quickly with lambda-based states", "handle timing and synchronization sensitive state transitions", "use state machines with Unity coroutines"], "what_it_is": "UnityHFSM is a lightweight, hierarchical finite state machine library for the Unity game engine, written in C#. It supports both class-based states and lambda-based rapid prototyping, with a focus on timing-sensitive state transitions and zero GC allocations after setup.", "when_to_avoid": ["you need a visual node-based state machine editor rather than a code API", "your project does not use Unity or .NET/C#", "you need behavior trees or utility AI rather than finite state machines", "you want a full-featured AI framework with pathfinding and sensing built in"], "when_to_choose": ["you are building a Unity game and need to organize state-based logic like AI or character behavior", "you want a state machine with no GC allocations during state changes to avoid lag spikes", "you need hierarchical states to share logic between related states", "you want fast prototyping with lambda states and easy migration to class-based states", "you need precise control over state transition timing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/unityhfsm", "repo": "Inspiaaa/UnityHFSM", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "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:05:09.429004+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.429004+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:53:12.783259+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f17721e332e928d967cc495cac6a5a6219ab90296a23e6bcc1e32ba121dae1f", "fetched_at": "2026-08-28T04:05:09.429004+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Inspiaaa/UnityHFSM"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 74, "longevity": 100, "rhythm": 52}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2346, "days_push": 161, "days_rel": 163, "gap_med": 179.0, "n_releases_24m": 3}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}