OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Every fear is a path you stopped walking. Light it again — one small step at a time.
(فانوسبهدست · formerly “Mira — The Courage Journey”; Mira is now the lantern-keeper who walks beside you.)
A tiny game about big fears. Free, in your browser, English + فارسی.
Play it: https://phobia-kappa.vercel.app/
A story you walk, one trial at a time — The Lanterns of the Valley. Every path nobody walks goes dark; Mira, the valley's lantern-keeper, walks beside you while you relight them. Each realm is a chapter with a resident whose fear began a different way — Aram was bitten at seven, Leyla learned it from her mother's face, Bahman from his grandmother's stories, Sahar from a body she misread, Nima from a lamp that never went off, Shirin from one stuck lift — so the causes of phobias arrive as people. Every finished trial turns a page, and every page carries one idea about how fears unwind (the ladder, the wave, testing the prediction, lowering shields, naming it, spacing, sensations, lapses…): 38 lessons across the valley, none repeated, collected in the Story Book under What you've learned. The trial before a page shows its idea as today's practice — something you do in the scene, then read about. Returning travelers get a note from Mira about last time (in their own numbers) and why coming back today is part of the method.
Six realms, five 3D trials each. Three have animals that read how you move; three are places that don't move at all — which is the point:
| Realm | Fear | The ladder |
|---|---|---|
| 🐕 The Meadow Yard | Dogs (cynophobia) | a small dog busy across the room → a big, loud, excited one that bounds over |
| 🕷 The Old Cellar | Spiders (arachnophobia) | a house spider far off → a huntsman on the wall at eye level (real sizes, 8–26 cm; hold Z to look closer) |
| 🐍 The Sunlit Clearing | Snakes (ophidiophobia) | a grass snake basking far off → close, coiled and alert on the path |
| 🏙 The Summit | Heights (acrophobia) | a knee-high ledge over a square → a glass skywalk 165 m up at dusk |
| 🌙 The House at Night | The dark (nyctophobia) | your bedroom with the lamp on → total dark, only the house's sounds (hold F for a flashlight — the coach counts what it does) |
| 🚪 The Narrow Passage | Tight spaces (claustrophobia) | a small room, door closed behind you → a phone booth → a lift → a storage closet → lying in an MRI scanner |
Every trial has three stars — its skill (let the dog come to you, stand on the glass…), reading the moment, and staying until the alarm settles — earned live in the scene and kept as your best on the map, so there's always a reason to go back (repetition is the part of exposure that does the work). Stars only ever reward approach and attention, never speed or a low rating. Face all of a dog's trials and it comes to rest by your campfire.
Your custom character walks every scene. In the place realms the coach reads your body and the room instead of an animal: name a tight breath, a creak or a gust as body, place or danger. Nothing in them ever moves toward you — the walls stay put and the door always opens (opening it counts as relief, not learning). The older prototype realms (water, flying…) are still behind LAUNCH_OPEN in src/app/realm-data.js; add ?all=1 to the URL to play them for QA.
Lanternwalk is a game shell around genuine CBT graded-exposure mechanics:
A practice game, not therapy. Real exposure work for phobias belongs with a trained clinician. Use Lanternwalk for curiosity, education, or as a conversation starter — not treatment.
Vanilla JS + Three.js (no build step), Rapier physics, procedural + recorded audio, rigged CC0 creature models (Quaternius), installable PWA, offline-capable, English/Persian with full RTL. Three.js and Rapier are self-hosted under assets/vendor/ — no runtime CDN.
Where things live:
| Path | What |
|---|---|
index.html | the page: meta, import map, and the script tags in load order |
src/styles.css | every style |
src/app/*.js | the app shell — router, views, trials, progress, audio. Classic scripts that run in index.html order and share one global scope (a file can only use what an earlier file defines while it loads) |
src/story.js | the story: its pages, Persian, the page player and the book (DOM + SVG only, no WebGL) |
src/3d/main.js | the 3D entry: menu vignettes, the creator turntable, and window.Scene3D |
src/3d/engine.js | the exposure engine (mount / unmount) plus the body, hands, controls, physics and post-fx it imports — fetched when the first trial needs it |
src/3d/realms/*.js | one module per realm's scene, fetched the first time that realm is entered (realms/index.js is the registry) |
npx serve .
Then open http://localhost:3000.
cd scripts && npm install # once
npm run smoke # ~3 min: the SW precache + modulepreload lists, then first run + dog trials + a spider, snake, heights, dark and tight-space trial, headless
The same smoke test runs as a git pre-push hook (git config core.hooksPath .githooks, already set in this clone). Skip it once with SKIP_SMOKE=1 git push. SMOKE_SHOTS=1 keeps screenshots in .smoke-shots/.
After re-baking dog coats, run npm run compress-textures — the game loads the JPEG copies.
The dogs ship as binary .glb. To swap in a re-exported .gltf (one embedded base64 buffer), node scripts/pack-glb.cjs path/to/Model.gltf writes the .glb beside it — same JSON and bytes, ~40% smaller, round trip checked.
The traveler's arms are driven by one clip from the CC0 animation library. node scripts/strip-anim.cjs [Clip_Name …] writes assets/anim/human-walk.gltf (61 KB, the clips you name) from the 4 MB source; re-run it if HUMAN_CLIPS starts using another clip.
On Linux the smoke test finds Chromium itself (Playwright's, or CHROME=/path), adds --no-sandbox when running as root, and — since software WebGL crawls at the high tier — plays on the low graphics tier (SMOKE_QUALITY=high to override).
Players can write feedback from the menu, Settings, About, and after every trial. Nothing is sent automatically. Set FEEDBACK_URL in src/app/handlers.js to a form link (Google Form, Tally…) to add an "Open the form" button; until then it's copy-only.