尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Jeu coop en ligne dans le navigateur : chasse, apprivoise et fais évoluer ta meute de monstres, à 4 joueurs par village.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Jeu coop façon Wild Tamer, jusqu'à 4 joueurs par village, directement dans le navigateur. On se réveille sur une île inconnue : on chasse, on apprivoise des monstres, on éveille des Alphas, on bâtit le village avec les autres, et on avance zone par zone jusqu'au bout de l'île, en affrontant les géants qui dorment au fond des grottes.
shared/) sont communs au client et au serveur.ws, autoritaire, 20 ticks/s ; un seul process sert le site et le WebSocket.node:test pour les règles, bots WebSocket pour le test de fumée ; CI/CD GitHub Actions vers un VPS.npm install
npm run dev
Ouvre http://localhost:5173, fonde un village, puis Menu › Paramètres › Village › Inviter des amis pour copier le lien
(?v=CODE) à envoyer à tes amis. Pour tester seul la coop, ouvre le lien dans un 2e onglet.
En npm run dev, F9 donne de l'or, du bois, de la pierre et des essences pour tester vite.
Pour que des amis te rejoignent hors de ton réseau, il faut héberger le serveur (voir plus bas)
ou exposer ton port (ex. cloudflared tunnel --url http://localhost:5173).
Un compte Google est requis pour jouer : le serveur refuse toute connexion sans session valide. La progression est rattachée au compte dans un village : en revenant dans son village, on retrouve or, bois, pierre, niveaux d'arme et d'armure, essences et Alphas (la meute ordinaire n'est pas sauvegardée). Rejoindre un autre village, c'est repartir de zéro là-bas. Un compte a au plus 3 villages : le lobby les liste (« Mes villages ») pour choisir où jouer, à côté de « Créer » et « Rejoindre ». Les villages gardent leur code et leur carte. « Quitter ce village » (bouton sous « Entrer ») efface sa progression dans le village choisi ; le village continue pour les autres (son fondateur passe la main au membre le plus récemment actif) et disparaît s'il n'y reste personne.
DATABASE_URL dans .env (Project Settings › Database › Connection string › URI) puis lance npm run db:migrate, qui applique les fichiers de supabase/migrations/ pas encore passés. À défaut, colle-les dans le SQL Editor, dans l'ordre.https://<ton-projet>.supabase.co/auth/v1/callback.http://localhost:5173, et ajoute dans
Redirect URLs http://localhost:5173/** (plus ton domaine de prod plus tard)..env.example en .env et remplis les 4 valeurs (Project Settings › API).
La clé service_role reste côté serveur : c'est lui seul qui écrit les profils.npm run dev : le bouton « Se connecter avec Google » apparaît dans le lobby.fangleaf.anathos.me vers le VPS./root/eanathos/Fangleaf) : .env rempli, npm ci, npm run db:migrate, puis npm run build
(les variables VITE_* sont figées au build : le .env doit être là avant).pm2 start ecosystem.config.cjs (ecosystem.config.cjs), ou deploy/fangleaf.service avec systemd./ws), étapes en tête du fichier.https://fangleaf.anathos.me/** aux Redirect URLs
(et mets-la en Site URL une fois en prod).Mise à jour : git pull && npm ci && npm run db:migrate && npm run build && pm2 reload ecosystem.config.cjs (ou sudo systemctl restart fangleaf). À l'arrêt, le serveur sauvegarde les progressions en cours.
main, se connecte en SSH au VPS, avance le clone sur le commit testé
et lance deploy/deploy.sh (npm ci, migrations, build, pm2 startOrReload, vérification du port).
Aussi lançable à la main depuis l'onglet Actions.VPS_HOST, VPS_USER, VPS_SSH_KEY (clé privée dédiée au déploiement), VPS_PORT (facultatif).| Commande | Rôle |
|---|---|
npm run dev | Serveur de jeu (port 3001, rechargement auto) + client Vite (5173) |
npm run build | Build du client dans dist/ |
npm start | Prod : un seul process sert dist/ et le WebSocket (PORT, défaut 3001) |
npm run typecheck | Vérification TypeScript |
npm run db:migrate | Applique les migrations Supabase manquantes (DATABASE_URL requis) |
npm run smoke | Test bot (autorise les invités via ALLOW_GUESTS=1, réservé aux tests) : création, 4 joueurs max, combat, or, forge, anti-téléportation |
npm run test:rules | Règles de la simulation, sans réseau (node:test) : un fichier par thème dans tests/rules/ (monde, combat, meute, Alphas, géants, faune, village, réseau). Un seul fichier : npx tsx --test tests/rules/geants.test.ts ; un seul test : --test-name-pattern="Marché" ; autre graine ou autre heure : TEST_SEED=…, TEST_NOW=… |
shared/ règles et équilibrage (config.ts), protocole réseau, maths
server/ HTTP + WebSocket + salons (index.ts), simulation d'un village (room.ts), sauvegarde Supabase (persist.ts)
supabase/ migrations SQL (npm run db:migrate)
client/ lobby, boucle de jeu, rendu Canvas procédural, HUD HTML, minicarte
scripts/ test de fumée multi-clients, migrations
tests/ tests de règles par thème (tests/rules/*.test.ts) et leurs outils communs (helpers.ts)
docs/ guide du jeu (GUIDE.md), architecture (ARCHITECTURE.md)
Le détail fichier par fichier est dans docs/ARCHITECTURE.md.
Tout l'équilibrage (PV, dégâts, zones, chance d'apprivoisement, coût de la forge…) est dans
shared/config.ts.
© 2026 EAnathos, tous droits réservés. Le code est visible mais ni libre ni open source : aucune copie, modification, redistribution ou mise en ligne sans autorisation écrite. Détails dans LICENSE.