{"adoption": {"forks": 338, "observed_at": "2026-09-01T02:14:03.503309+00:00", "stars": 1088}, "canonical_url": "https://ross.abutalabs.com/products/jforgame", "card": {"archived": false, "artifact_type": "framework", "description": "jforgame是一个一站式游戏服务器开发框架。包含游戏服务器开发所需要的各种组件，比如socket服务端与客户端，高性能线程模型，自定义二进制消息编解码，自定义orm工具，异步持久化方案，游戏热更新，配置表自动化仓库，游戏通用工具等等，同时提供大量业务案例以供学习。亦可用于其他socket应用，例如及时聊天等。", "domain": ["backend", "networking", "databases"], "enriched": true, "function": ["web-framework", "websocket", "serialization", "orm", "database", "concurrency", "caching", "configuration-management", "monitoring"], "health_score": 100, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["kingston-csj/jforgame"], "name": "kingston-csj/jforgame", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-29T02:37:04+00:00", "repo": "kingston-csj/jforgame", "stars": 1088, "tags": ["game-server", "netty", "mina", "mmorpg", "hotswap", "protobuf", "socket-server", "java", "mobile-games", "actor-model", "game-development", "real-time"], "topics": ["java", "game", "mina", "netty", "socket-io", "socket-io-client", "socket-io-server", "socketio", "websocket", "cocos", "game-framework", "game-server", "hotswap", "network", "unity"], "urls": [], "use_cases": ["build a mobile game server in java", "implement socket or websocket server for mmorpg", "hot update game server code without downtime", "custom orm for game database persistence", "export client protocol code for unity or cocos", "build a real-time chat server", "load game config tables from csv excel json"], "what_it_is": "jforgame is a lightweight, high-performance Java framework for building game servers, providing modular components for socket/WebSocket communication, message codecs, a custom ORM, threading models, hot code/config updates, and config-table management. It also suits other real-time network applications such as instant messaging, and includes demo business cases for learning.", "when_to_avoid": ["your project is not JVM-based and you prefer Go or other ecosystems", "you need a general-purpose web application framework rather than a game/socket server", "you require battle-tested enterprise-scale middleware out of the box"], "when_to_choose": ["you are developing a mobile, web, or H5 game backend in Java", "you need an all-in-one game server framework with socket, ORM, and hot-update support", "you want a lightweight alternative to heavyweight server frameworks with learning demos included"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jforgame", "repo": "kingston-csj/jforgame", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.503309+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:49:27.871702+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "68e9896da3e9399d507dc27fa70b2c30955ccb1d3e5ffbd125198d23c673edf0", "fetched_at": "2026-09-01T02:14:03.503309+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kingston-csj/jforgame"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 88}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3363, "days_push": 5, "days_rel": 2, "gap_med": 41.5, "n_releases_24m": 17}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 5, "stale_scrape": false}}