GameFrameX是一款全面的集成式游戏开发框架,提供了从前端到后端的完整解决方案。该框架支持包括Unity、Cocos Creator、LayaBox、和Godot等多种主流游戏开发平台,确保开发者能够为不同的目标平台打造精美的游戏体验。 此外,GameFrameX拥有多进程服务器的支持,并且集成了Docker的自动化构建和部署,大大简化了游戏发布和维护过程。无论是在客户端管理、运维管理、数
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
GameFrameX
All-in-One Solution for Indie Game Development · Empowering Indie Developers’ Dreams
Documentation · Quick Start · QQ Group: 467608841 / 233840761
English | 简体中文 | 繁體中文 | 日本語 | 한국어
Project Overview
An open-source toolbox that helps you take a game all the way “from idea → built → live and running.”
When you make a game, the really hard part usually isn’t “drawing a character or coding a skill” — it’s stitching all those pieces together:
All that heavy lifting is already done for you by GameFrameX — you just focus on the fun part: “is my game actually fun?”
Features
Who is it for:
Showcase
Quick Start
This repo IS the complete project: git clone, Code → Download ZIP, or any mirror site — whatever way you download it, it runs as-is. No extra pulls needed.
Three steps (details in the tutorial below):
If you see the login screen and can create a character into the main city, the full client↔server loop works.
Is the server up? Check the listening ports:
nc -z localhost 29100(TCP) andnc -z localhost 28080(HTTP) — success means it’s alive. (Port 29090 is the metrics port and is off by default — see the port table below.)Installation
Follow along — about 10–15 minutes (Unity first import included).
Step 1: Download the project
Don’t want git? Code → Download ZIP on GitHub, or grab it from a mirror like gitee — same result.
Step 2: Install the prerequisites
Step 3: Start the local database
That’s MongoDB:
mongodb://admin:admin@localhost:27017(data lands indocker/mongo/database/).Step 4: Build & start the server
Why only one argument? The defaults (see
Server/GameFrameX.Launcher/StartUp/AppStartUpGame.cs) already open the full port set:/game/api/...)--IsEnableWebSocket true--IsOpenTelemetryMetrics true --MetricsPort 29090The only thing to override is
DataBaseUrl— the default points at a public demo database; point it at the MongoDB you just started.Even simpler with an IDE: open
Server/Server.slnxwith Rider / Visual Studio (Server.slnif.slnxisn’t supported), set the startup project toGameFrameX.Launcher, set Working directory toServer/bin/app_debug, leave arguments empty — and change theDataBaseUrldefault inAppStartUpGame.csto your local connection string (that edits a file inside the aggregated repo, fine for local debugging — see the overwrite note below).Verify:
nc -z localhost 29100 && nc -z localhost 28080in a terminal — success means it’s alive (or check the server log forhas been started/Now listening on).Step 5: Connect the Unity client
Unity/folder with 2019.4.40f1 via Unity Hub (first open pulls Packages — needs internet, be patient)Assets/Scenes/Launcher.unityThe client defaults to
127.0.0.1(TCP 29100 / HTTP 28080), matching the server’s default ports — no config changes needed. Seeing the login screen and creating a character into the main city means the tutorial is complete.Prefer the LayaAir client?
Open
LayaBox/with the LayaAir IDE; entry pointsrc/Main.ts. Two gotchas: WebSocket is off by default — start the server with--IsEnableWebSocket truefirst (default WsPort 29110;nettest.tsdefaults tows://127.0.0.1:21100, which does NOT match — align them); the connect address lives inLayaBox/src/gameframex/nettest.ts; protocol generation usesProtobuf/Proto2TsExport_LayaBox.sh.Usage Examples
The downloaded snapshot ships with all generated artifacts (config code/data, protocol code — all in place), so it runs as-is. Only regenerate when you change a source file:
After editing Excel configs (
Config/Excels/Tables/)cd Config && sh gen-server-bin.sh(Windows: double-clickgen-server-bin.bat)Server/GameFrameX.Config/cd Config && sh gen-client-json.shUnity/Assets/(code + data)After editing the protocol (
Protobuf/*.proto)The export tool is not shipped in the repo — build it once (the aggregated layout already satisfies its output-path requirements):
After editing UI (FairyGUI)
Open
FairyGUIProject/Game.fairywith the FairyGUI editor (≥5.0), then File → Publish — make sure “generate code” is checked; output is written intoUnity/Assets/(UI assets + C# binding code) automatically.Common Pitfalls
DataBaseUrlnot passed — the default points at the public demo DB; pass the local connection string from the installation stepsServer/bin/app_debug(the server loads hot-update assemblies from<cwd>/hotfix)gameframex.upm.alianblank.uk) and gitee (HybridCLR); restricted networks will stall--IsEnableWebSocket true(off by default); the server log lists what it’s listening on--IsEnableWebSocket true; also alignnettest.ts(defaults to 21100) with the server’s WsPort 29110Architecture
This is an aggregated release repo — the latest code of the 7 source repos below is synced daily into same-named folders. One download gets you every piece, and the folders are already in the right places (config generation and protocol export find each other via relative paths — don’t rename or move them):
Server/Unity/LayaBox/Config/Protobuf/FairyGUIProject/Tools/Repos NOT aggregated (take them as needed):
Platform Support
It supports the major engines — whichever you use, it fits:
Unity/in this repoLayaBox/in this reposrc/Main.tsServer/in this repoDependencies
Unity/(first import fetches Packages, internet needed)Documentation & Resources
Community & Support
Sponsor
AITKPARTY is an AI LLM API relay/aggregation service built on the open-source New API project, giving developers one unified interface to major language models — no need to integrate each provider yourself.
Contributors
Blank
blankalian
bambom
PlayerYF
Pilipala
Star History
Changelog
See the GitHub Releases page.
License
See LICENSE.md.