OhMyGame
OhMyGame is the open-source studio for making games with AI. Design, build, playtest, and publish games in one app, with your own model keys.
Double-six partner dominoes. First team to 100 wins.
Translation pending
GamesTypeScript · CSSGitHub @kikomatos20OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Double-six partner dominoes (4 players, 2 teams). You + an AI partner vs two AI opponents. Everyone draws 7 — the full 28-tile set, no boneyard. First team to 100 points wins.
The table is square (1:1). Tiles are drawn at a fixed size and never shrink — the chain starts in the middle and, when an arm reaches the edge, it turns the corner and runs along the border, coiling inward if it goes all the way around.
A full 28-tile chain is 1372px of dominoes and needs a 580px square to coil cleanly. Smaller screens lay it out at that size and scale the whole table down, so tile size is still fixed for the entire round.
Three difficulty levels, selectable during play.
The AI opens using the classic Venezuelan school — the regla de oro of El Tigre de Carayaca (Héctor Simosa Alarcón): lead the highest double that has company, fall back to the highest bare double, and with no doubles lead a heavy tile from your longest suit.
Measured over 600 mirrored matches (sides swapped so seat order cannot skew it):
| Matchup | Win rate |
|---|---|
| hard vs medium | 65.8% |
| hard vs easy | 81.3% |
| medium vs easy | 80.7% |
| hard vs hard | 50.7% (sanity check) |
After every round you can open a review of your own play. This is a team game, so the review is built on the partner doctrine of Héctor Simosa Alarcón, "El Tigre de Carayaca" (Ciencia y Arte en el Dominó). Two independent lenses:
Principles. Judged against the classic partner ideas, with a separate team-play score for how often your choices helped your side:
Engine analysis. Separately, where your move ranked in the engine's own search, what it would have played instead, and why.
Forced moves are never counted against you.
npm install
npm run dev # http://localhost:3000
npm test # engine unit tests
npm i -g vercel
vercel # log in with your account, accept defaults
Or push the repo to GitHub and import it at vercel.com/new.
src/engine/ — pure game logic (tiles, rules, scoring) + AI. No UI dependencies, so it can run server-side for online multiplayer in phase 2.src/components/ — the game table UI.src/app/ — Next.js app shell.Private tables with a shareable six-character code. Create one, send the code to three friends, and empty seats can be filled by the computer (host's choice, with a skill setting).
Turn on the backend by following SUPABASE.md — one free project and three environment variables.
How it is kept honest. The browser never runs the rules and never holds the deck. It sends intentions ("play this tile on that end") to the server, which owns the authoritative game state, validates against the same engine the solo game uses, and replies with a view containing only that player's own tiles. Everyone else's hand is reduced to a count. Row level security denies browsers all direct database access, so hidden information stays hidden even if someone goes looking with the developer tools.
Other details:
localStorage is your seat.
The schema already carries a user_id column, so real accounts and ratings can
be added later without a rewrite.