OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A real-time multiplayer property-trading board game for the browser — create a room, share the link, and play with friends or bots. Same genre and flow as richup.io, built from scratch with an original board, art and codebase.
npm install
npm start # → http://localhost:3000
Open the link, hit Create a private game, copy the room URL and send it to your friends. Anyone with the link joins instantly — no accounts, no installs.
Board & movement — 4 boards (40 to 48 tiles), two dice with doubles, three doubles sends you to prison, $200 salary for passing START, and a Vacation corner that makes you miss a turn.
Property play — buy streets, airports and utilities; complete a country set to build houses and hotels; mortgage for half price and lift it back for 10% interest. Rent scales with the set, the buildings, how many airports the owner holds, and the dice roll for utilities.
Auctions — skip a purchase and the tile goes under the hammer. Live ascending bids with a countdown that resets on every raise; bots bid too.
Trading — offer any mix of cash, properties and get-out-of-prison cards to any player. Bots evaluate offers and will hunt for the one street they need to finish a set.
Prison — roll a double, pay the $50 fine, or spend a card. Three failed attempts and the fine is forced.
Cards — Treasure and Surprise decks with 18 cards each: payouts, fines, teleports, nearest-airport jumps, per-building repair bills and street collections.
Going broke — when you can't pay, the turn stalls in debt: sell buildings, mortgage streets or trade your way out. Declare bankruptcy and everything transfers to your creditor. Last player standing wins.
Rule toggles — x2 rent on full sets, vacation cash pot, auctions on/off, no rent while the owner is jailed, mortgage on/off, even build, randomized turn order, starting cash from $500 to $5000, and up to 8 players.
Bots — fill empty seats and play a full strategy: buy, build, bid in auctions, hunt for the one street they need via trade, and liquidate when cornered.
Dropped connections — your seat is held for 30 seconds so a refresh or a flaky network never costs you a turn. Only after that does a bot step in, and it hands the seat straight back the moment you return.
Pass-and-play — the 👥 button opens a second window with its own identity, so two people can share one machine. Each seat picks its own name and colour.
Tokens hop tile by tile instead of teleporting, and speed up over long rolls. Dice tumble. Cash changes float off the player card in green or red. A banner slides in when the turn passes, the active player's token pulses, and their tile glows gold.
Hovering any street shows its full title deed — every rent step, house cost and mortgage value — and clicking opens the same deed with the build, sell and mortgage buttons for properties you own. Those buttons only appear when the move is actually legal, so you never fire an action just to be told no. Each player card carries colour chips showing how far along each country set they are, so you can read the table at a glance.
Winning drops confetti. Every sound is synthesised in the browser with the Web Audio API — dice, cash, rent, gavel, jail door, victory fanfare — so there isn't a single audio file to download. Toggle it off with the speaker icon.
The whole thing reflows to one column on tablets and phones, and respects
prefers-reduced-motion.
| Map | Tiles | Flavour |
|---|---|---|
| Classic | 40 | The original world tour — 8 countries |
| Mr. Worldwide | 48 | Bigger board, adds India and Japan, three utilities |
| Death Valley | 40 | Canada, Germany, UK and USA go head to head |
| Bharat | 40 | A tour of India, Jaipur through to New Delhi |
| Blitz | 28 | Short board, two streets per set — games end fast |
| Lucky Wheel | 40 | Half the tiles are chance — pure chaos |
| Random | 40 | Generated fresh at the start of every game |
Random keeps the classic board shape — where the airports, chance tiles and taxes sit — and shuffles the content: eight countries drawn from a pool of fourteen, their cities picked at random, fresh airport and utility names. The price ladder and group sizes stay put, so every generated board is balanced and playable. A new one is rolled the moment the game starts.
The map picker draws a live miniature of each board from its own tile colours, so you can see the shape and the spread of colour sets before you commit to one.
server/
index.js Express + Socket.IO: rooms, seats, reconnection, event routing
game.js The entire rulebook — one authoritative GameRoom per room
maps.js Board data; rent tables and layouts are derived from prices
cards.js Treasure and Surprise decks
public/
js/app.js identity, landing page, socket wiring, render loop
js/board.js tile grid, ownership patching, animated token layer, title deeds
js/ui.js player cards, settings, action bar, modals, chat, confetti
js/sound.js synthesised sound kit (no audio files)
test/
smoke.js map integrity + hundreds of bot games + targeted rule assertions
The server owns every rule. Clients only send intents (roll, buy, bid, …) and
render the state that comes back, so a tampered client can't cheat. Identity is a token
in localStorage, which means refreshing or losing your connection drops you straight
back into your seat — and a bot covers your turns until you're back.
This will not run on Vercel, Netlify, or any serverless host. Those platforms
answer each request with a short-lived function, and MoneyMove needs the opposite:
one process that stays alive to hold WebSocket connections open and keep every
room's state in memory. Deploy it there and the landing page loads while every
button quietly does nothing, because /socket.io/ has nobody listening.
Use anything that runs a normal Node process:
| Host | How |
|---|---|
| Render | New → Web Service → point at this repo. render.yaml configures it. |
| Railway | New Project → Deploy from repo. Procfile is picked up automatically. |
| Fly.io | fly launch — it uses the Dockerfile. |
| Any VPS | npm ci && npm start, behind nginx with WebSocket upgrade headers proxied. |
The server reads PORT from the environment, so nothing else needs configuring.
If you put it behind a reverse proxy, make sure the proxy forwards Upgrade and
Connection headers, otherwise the socket silently falls back and then fails.
You can keep the site on Vercel as long as the game itself runs somewhere that
allows a persistent process. Vercel serves public/ as a static site; the
browser then talks to the game server directly over WebSocket.
https://moneymove.onrender.com.public/config.js:
window.MONEYMOVE_SERVER = 'https://moneymove.onrender.com';
vercel.json already sets public/ as the output
directory and rewrites /room/:code to index.html; .vercelignore keeps
the server code out of the upload.Leave config.js empty for local development or a single-host deploy — an empty
value means "same origin". The Socket.IO browser client is vendored into
public/vendor/, so the static host does not need to serve it, and the game
server sends Access-Control-Allow-Origin on /api/* for the cross-origin
fetches. Refresh the vendored client after upgrading Socket.IO:
cp node_modules/socket.io-client/dist/socket.io.min.js public/vendor/
npm test
Plays hundreds of bot-only games across every map and rule combination, asserting after every action that nobody holds negative cash, no building sits on an incomplete set, no mortgaged street carries houses, and even-build is never violated. Then it checks specific rules directly: full-set rent doubling, airport rent scaling, the even-build restriction, three-doubles-to-prison, the prison fine, START salary, trade execution and bankruptcy handover.
The same command then runs the feature suites, because a headline feature deserves to be
caught by the command everything else is caught by: the bot brain (smart-bots, which
plays another three hundred tables to the end and puts a ceiling on what one decision may
cost the tick), the quick-match roll, the one-coin board rental, the bots' chat replies,
and the coin ledger. Each is a plain node script that prints PASS/FAIL lines and exits
non-zero, so any one of them can be run on its own while working on it:
node test/smart-bots.mjs
Two older scripts stay where they have always been, outside npm test, and are worth a
run by hand before a release: test/stall-regression.mjs holds a table to the rule that
a game with somebody watching never stops, and test/apple-revoke.mjs plays Sign in with
Apple end to end against a stand-in for Apple. Neither needs the network or an account.
Board layouts are data. Add a map by dropping a tile list into RAW_MAPS in
server/maps.js — rent tables, house costs, colour groups and the client's grid layout
are all derived automatically. Sides can be any length as long as there are four corners.
This is an original implementation of a classic public-domain game genre. It is not affiliated with, endorsed by or derived from the assets of any trademark holder.