OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Jeu de tir spatial (type Raiden / Vampire Survivors : runs infinies, boss, arbre de compétences), en Phaser 3, pensé pour Android / Google Play.
Le code est découpé en petits fichiers JavaScript « classiques » (pas de bundler, pas de npm) : on modifie un fichier, on rafraîchit la page.
Prérequis : Python 3 (et Chrome).
serve.bat (Windows : double-clic)
python tools/serve.py (partout ailleurs)
Puis ouvrir http://localhost:8080/ (jeu normal) ou http://localhost:8080/?dev (mode DEV : tout débloqué, bac à sable, outils de test). Le serveur désactive le cache : après une modification, un simple F5 suffit.
Ouvrir
index.htmlen double-clic (file://) ne marche pas : le navigateur interdit de charger les fichiers. Il faut passer parserve.bat.
index.html page coque (HTML du menu/HUD) — charge src/boot.js
css/style.css styles
vendor/ Phaser (copie locale, pas besoin d'internet)
assets/ images, sons, polices utilisés par le jeu (+ manifest.json = liste des fichiers)
sources/ fichiers d'origine non utilisés par le jeu : mp3 sources des sons, planches ChatGPT, maquettes UI
docs/ documentation de conception (gameplay, équilibrage, sons, prompts…)
tools/ serveur, build, tests, scripts de découpe des sons
src/
boot.js chargeur : charge les assets puis les scripts listés dans scripts.json
scripts.json ORDRE DE CHARGEMENT des fichiers (important : voir plus bas)
main.js point d'entrée (config Phaser, démarrage)
core/ config, constantes, sauvegarde cloud, garde-fous d'entrée, mixin
data/ données pures : stats, arbre de compétences, cartes, reliques, fusions, boss, succès, événements, équilibrage
gfx/ sprites dessinés en code, textures procédurales, constructeurs de textures
audio/ moteur de sons, sons enregistrés, bibliothèque synthétique, musique
ui/ icônes pixel, interface HTML, pages de menu, arbre, HUD
scenes/ BootScene (chargement), GameScene (la scène de jeu) et HomeScene (l'accueil)
home/ méthodes de HomeScene : décor, carte stellaire, panneaux (voir docs/menu-accueil.md)
game/ player/ enemies/ bosses/ combat/ events/ systems/ world/ fx/ dev/
les méthodes de GameScene, rangées par sujet
GameScene est une grosse classe (~240 méthodes). src/scenes/GameScene.js ne contient que constructor et create.
Les autres méthodes sont dans les dossiers game/, player/, enemies/, bosses/… sous la forme :
mixin(GameScene, {
maMethode(){ ... },
uneAutre(x){ ... }, // virgule entre les méthodes !
});
Pour une nouvelle méthode : l'ajouter dans le fichier du bon sujet, ou créer un nouveau fichier et l'ajouter à src/scripts.json (après scenes/GameScene.js). Une méthode définie deux fois fait planter au démarrage (volontaire, pour éviter les écrasements silencieux).
src/<dossier>/mon-fichier.js, première ligne "use strict";.src/scripts.json au bon endroit : les fichiers sont exécutés dans l'ordre ; un fichier ne peut utiliser au démarrage que ce qui est défini plus haut dans la liste (les fonctions appelées plus tard, pendant le jeu, n'ont pas cette contrainte).import/export.assets/sprites/ ou assets/audio/….python tools/gen_manifest.py (met à jour assets/manifest.json).asset('sprites/mon_sprite.png') renvoie le fichier sous forme de data-URI, utilisable comme avant (textures.addBase64, sons…).Les sons enregistrés sont réglés dans src/audio/sfx-files.js (niveau pk, réverb rv…).
python tools/build.py # dist/space-shooter-x.html + dist/space-shooter-x-dev.html
python tools/build.py --inline-phaser # embarque aussi Phaser (hors-ligne)
Tout (code, CSS, images, sons, polices) est embarqué dans un seul .html (~16 Mo). dist/ n'est pas versionné.
pip install playwright
python tools/smoke_test.py # lance le jeu en dev, démarre une partie, échoue s'il y a une erreur JS
python tools/smoke_test.py --dist # pareil sur le fichier unique de dist/
À lancer avant chaque push. Autres tests : node tools/check_worlds.js, python tools/level_test.py, python tools/home_test.py.
Équilibrage : python tools/sim_balance.py grid|campaign|tune (joueur automatique en avance rapide, voir l'en-tête du fichier).
Installer Git (https://git-scm.com/download/win), puis, une seule fois, dans ce dossier :
git init -b main
git add .
git commit -m "Découpage du monolithe en modules"
git remote add origin <URL du dépôt GitHub/GitLab>
git push -u origin main
Au quotidien :
git pull # récupérer le travail de l'autre
git switch -c ma-fonctionnalite
... modifier, tester (smoke_test) ...
git add -A && git commit -m "Ce que j'ai fait"
git push -u origin ma-fonctionnalite # puis pull request / merge
Conseils pour éviter les conflits : se répartir les dossiers (ex. l'un bosses/ + events/, l'autre ui/ + player/), commits petits et fréquents, git pull avant de commencer. src/scripts.json et assets/manifest.json sont les deux fichiers « partagés » : une ligne par fichier, les conflits y sont faciles à résoudre.
Les fichiers lourds (sources/, ~50 Mo d'images et mp3) sont versionnés ; dist/ et backups/ ne le sont pas.
CLAUDE.md / PASSATION.md : contexte du projet pour Claude Code et état d'avancement.docs/menu-accueil.md : l'accueil, les mondes, la progression (avec captures d'écran).docs/ : conception (boucle de gameplay, niveaux d'alerte, équilibrage, sons, prompts d'assets).