{"adoption": {"forks": 200, "observed_at": "2026-08-28T04:05:24.573404+00:00", "stars": 1703}, "canonical_url": "https://ross.abutalabs.com/products/duanhf2012-origin", "card": {"archived": false, "artifact_type": "framework", "description": "A  game server framework in Go (golang).", "domain": ["backend", "microservices", "networking", "developer-tools"], "enriched": true, "function": ["rpc", "web-framework", "websocket", "concurrency", "service-discovery", "developer-tools"], "health_score": 100, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["duanhf2012/origin"], "name": "duanhf2012/origin", "platform": ["go", "windows", "cross-platform"], "pushed_at": "2026-08-26T14:21:16+00:00", "repo": "duanhf2012/origin", "stars": 1703, "tags": ["game-server-engine", "distributed", "node-service-module", "kcp", "etcd", "golang", "game-development", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["build a distributed game server backend in Go", "create an H5 HTML5 game server", "set up service discovery and RPC between game server nodes", "structure game logic into services and modules with monitoring", "implement login, save, and config loading flows for a multiplayer game"], "what_it_is": "Origin is a distributed game server engine written in Go, organized around three core abstractions: Node, Service, and Module. It provides service discovery (etcd or built-in), RPC, and networking over TCP, KCP, and WebSocket, plus utilities for building game backends including H5 game servers.", "when_to_avoid": ["you are building a non-game backend where general web frameworks fit better", "you need a battle-tested engine with a large community and ecosystem", "your team does not work in Go"], "when_to_choose": ["you are building a multiplayer game server in Go and want a batteries-included engine", "you need distributed nodes with RPC and etcd-based service discovery", "you want TCP, KCP, and WebSocket networking out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/duanhf2012-origin", "repo": "duanhf2012/origin", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "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:24.573404+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.573404+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.518646+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "05ae7c3c1061bcc702e6b0cd3989b3fa36323d370721588ebc5341bafcd5a209", "fetched_at": "2026-08-28T04:05:24.573404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/duanhf2012/origin"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 61}, "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": 2778, "days_push": 7, "days_rel": 261, "gap_med": 11.0, "n_releases_24m": 19}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}