You describe the game in your own words, the AI writes it, the Studio puts it into Unity for you. You press Play. Accounts, coins and results live in your own website; rooms run on your own Go server.
The AI writes every screen, rule and 3D world. The Studio checks it before anything touches your project.
The Vybev core in Unity stays the same; the AI only adds your game on top, so an AI mistake cannot break Unity.
“The enemy is too fast”, “add a shop” — say it, upload the new ZIP, play again.
Login, coins, leaderboards and match results come from the website you already have.
One Unity core reads what the AI writes: screens, UI, 3D worlds, objects, rules. The AI never touches the engine, so every game stays mountable.
The board is shared state with a version: two players moving at once cannot overwrite each other. The host checks every move, the result goes to your database.
Positions 15–20 times a second, each player only receives the players near them. Hits and pickups are decided by the host from server positions.
3D worlds, characters with animation, camera that follows, joystick and keys — described as data, built by the core at run time. Hundreds of players in one room.
A Linux build of the same game runs as referee: players only send requests, money and damage are decided on the server, simulations are deterministic.
The host owns the monsters; every player sees them move smoothly. Bullets and effects are pooled so phones stay fast.
No room needed. Progress on the phone per signed-in user; coins, items and leaderboards through your website's APIs.
Studio → Prompt → Game. Copy it into Claude or ChatGPT and write your idea in plain words, Vietnamese is fine: “a caro game for 2 players, coins for the winner”. Add your pictures if you have them.
The game, the website part (coins, shop, leaderboard) and the realtime rooms come in the same ZIP. You do not open or read it.
Studio → Unity → Upload ZIP. Everything is checked first: if the AI made a mistake, nothing is written and you get the sentence to send back to the AI.
Open the folder in Unity 6, press Play. Want a change? Tell the AI “make the board bigger”, upload the new ZIP — only the changed files move.
Build the APK / AAB for Google Play or the iOS app from Unity's Build Profiles. The game signs in with your website's accounts.
Everything goes through your website and gea-rt — the same accounts, the same data, the same permissions as your web pages and your app.
| What | Where | How | |
|---|---|---|---|
| HTTP | Sign in | /login/default | the website's own accounts — no second user list |
| HTTP | Your data | /api/view/<api> | coins, items, friends, shop, leaderboards: APIs of your website, written with the Website prompt |
| HTTP | Realtime ticket | /_gx/rt-ticket | a 2-minute, one-time ticket for the signed-in player; the game never sees a secret |
| WS | Rooms & chat | wss://rt.<domain>/ws | gea-rt (Go): matchmaking, shared state, positions, lobby chat, who is online |
| HMAC | Match results | /_gx/rt-result | gea-rt signs the result and the website stores it in <prefix>_game_matches / _game_scores; rewards are given by your API after checking it |
gea-rt is one Go binary: no runtime, no database (Redis only when you run several machines).
Linux amd64 / arm64. One secret per website project.
sudo install -m 755 gea-rt-linux-amd64 /usr/local/bin/gea-rt
sudo useradd --system --no-create-home --shell /usr/sbin/nologin gea-rt
sudo mkdir -p /etc/gea-rt/secrets
gea-rt -gen-secret | sudo tee /etc/gea-rt/secrets/shop.secret
sudo chown -R root:gea-rt /etc/gea-rt && sudo chmod 750 /etc/gea-rt/secrets && sudo chmod 640 /etc/gea-rt/secrets/*/etc/gea-rt/gea-rt.json — origins = your website, results_url = where match results go.
{
"listen": "127.0.0.1:8090",
"public_url": "wss://rt.shop.vn/ws",
"apps": [{
"id": "shop",
"secret_file": "/etc/gea-rt/secrets/shop.secret",
"origins": ["https://shop.vn"],
"results_url": "https://shop.vn/_gx/rt-result"
}],
"rooms": { "max_players": 500, "max_tick": 30 }
}systemd keeps it running; Nginx gives it wss:// on its own subdomain.
gea-rt -check -config /etc/gea-rt/gea-rt.json
sudo cp deploy/gea-rt.service /etc/systemd/system/
sudo systemctl daemon-reload && sudo systemctl enable --now gea-rt
curl -s http://127.0.0.1:8090/healthz # ok
# Nginx + HTTPS: deploy/nginx-gea-rt.conf → rt.shop.vn, then
sudo nginx -t && sudo systemctl reload nginxNothing to code on the website: tickets, results and tables are built in.
Website → Config → Realtime
Enabled ............ on
URL ................ http://127.0.0.1:8090 (server to server)
Public WS URL ...... wss://rt.shop.vn/ws
App id ............. shop
Secret ............. contents of /etc/gea-rt/secrets/shop.secret
Games .............. on
sub / pub .......... presence:lobby (lobby chat + who is online)
Results table ...... game_matches · Players table: game_scores
→ press "Test connection"The Studio writes the files; you only open, play and build.
1. Install Unity Hub + Unity 6 LTS (Android Build Support; iOS Build Support on a Mac)
2. Studio → Unity → Upload ZIP (the name comes from the ZIP, no need to create it first)
3. Put the files in my folder: choose an empty folder (Chrome / Edge; every later upload is written there too)
4. 2 · Name & logo: name on the phone, bundle ID, square PNG logo ≥ 1024 px → Save
5. Libraries to install: shows the Unity packages your game needs, if any
6. Unity Hub → Add → the folder → Gx → Check project → PlayUbuntu + Unity 6 in batch mode: check, APK, AAB for Google Play.
export UNITY=/opt/unity/Editor/Unity
$UNITY -batchmode -nographics -quit -projectPath . -executeMethod GxKit.EditorTools.GxBuild.Check -logFile -
$UNITY -batchmode -nographics -quit -projectPath . -buildTarget Android -executeMethod GxKit.EditorTools.GxBuild.Android -gxout out/game.apk -logFile -
$UNITY -batchmode -nographics -quit -projectPath . -buildTarget Android -executeMethod GxKit.EditorTools.GxBuild.AndroidAab -gxout out/game.aab -gxkeystore release.keystore -gxalias game -logFile -No. Single-player games only talk to your website. gea-rt is needed for rooms, lobby chat and who is online.
The website only answers games signed for its own domain. The signature is added when you save the name & logo in Studio → Unity, and only while the website's code signature is active.
They cannot fake another player, teleport, or end a match. Points are decided by the host or by a referee server, and your API checks every stored result before giving real rewards.
Studio → Unity → 🔐 Permissions & libraries: tick what the game uses. The Unity packages go into Packages/manifest.json, the Android permissions and iPhone permission texts are applied when you build — nothing to edit by hand.
Unity's realtime runs on Android, iOS and PC. For browser games, use a web page with gea-rt.js — same rooms, same backend.
It never edits the core, never writes database code inside the game and never invents binary files: it tells you which models, sounds and APIs are still needed.
From $59, lifetime. Free updates. Unlimited projects on your own server.