{"adoption": {"forks": 428, "observed_at": "2026-08-28T04:08:11.204021+00:00", "stars": 3591}, "canonical_url": "https://ross.abutalabs.com/products/cpp-game-engine-book", "card": {"archived": false, "artifact_type": "learning-resource", "description": "从零编写游戏引擎教程 Writing a game engine tutorial from scratch", "domain": ["graphics", "tutorials"], "enriched": true, "function": ["game-engine", "graphics", "simulation"], "health_score": 20, "homepage": "http://www.thisisgame.com.cn/tutorial?book=cpp-game-engine-book&lang=zh&md=Introduction.md", "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ThisisGame/cpp-game-engine-book"], "name": "ThisisGame/cpp-game-engine-book", "platform": ["cpp", "cross-platform"], "pushed_at": "2024-04-19T16:28:18+00:00", "repo": "ThisisGame/cpp-game-engine-book", "stars": 3591, "tags": ["game-engine-book", "opengl", "tutorial", "skeletal-animation", "lua-scripting", "blender", "fmod", "rendering", "game-development"], "topics": ["3d-engine", "game-development", "blender-python", "toolbag", "gamedev", "book", "markdown", "gameengine", "opengl", "freetype", "lua", "stb-image", "sol2", "cpp", "wwise", "fbx-sdk", "fmod", "renderdoc"], "urls": [], "use_cases": ["learn how game engines work internally", "build a game engine from scratch in C++", "learn OpenGL rendering step by step", "understand skeletal animation and skinning", "integrate Lua scripting into a C++ engine", "learn multithreaded rendering techniques", "study game engine architecture with Unity as reference"], "what_it_is": "A Chinese-language open-source book that teaches how to build a complete C++ game engine from scratch, covering OpenGL rendering, shaders, skeletal animation, GUI, audio, Lua scripting, and multithreaded rendering. Each chapter pairs explanations with runnable code projects and companion tooling tutorials (Blender, FMOD, Wwise, RenderDoc).", "when_to_avoid": ["you need a production-ready game engine for shipping a game", "you want deep, exhaustive coverage of any single engine topic", "you cannot read Chinese, since the book is written in Chinese", "you need a maintained engine library rather than educational material"], "when_to_choose": ["you want a hands-on, chapter-by-chapter path to engine development", "you have some Unity experience and want to understand what happens under the hood", "you prefer runnable code samples with short-term goals", "you also want to learn companion tools like Blender, FMOD, and RenderDoc"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cpp-game-engine-book", "repo": "ThisisGame/cpp-game-engine-book", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "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:11.204021+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:11.204021+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:33:51.469453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5c71848fba0ef4578597aa017c0844e8997e5d8fc1bf9fd0f1117cd745e55d1", "fetched_at": "2026-08-28T04:08:11.204021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ThisisGame/cpp-game-engine-book"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 2003, "days_push": 866, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}