尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗MMO spatial 3D dans le navigateur (Three.js + TypeScript + Vite). Version actuelle : v0.8, collisions physiques. Plusieurs pilotes partagent deux secteurs en temps réel, reliés par saut hyperspatial, avec un serveur Node.js autoritaire. On y mine, on commerce entre quatre stations, on remplit des contrats, on améliore son vaisseau ou on en achète un autre, et la progression est sauvegardée. Tout ce qui est solide se heurte vraiment. Le mode solo hors ligne reste disponible.
npm install
npm run server # serveur multijoueur sur http://localhost:8080 (sert aussi le client s'il est construit)
npm run dev # client de développement sur http://localhost:5173 (se connecte au serveur :8080)
Pour jouer à plusieurs en local : npm run build && npm run server, puis ouvrir http://localhost:8080 dans deux onglets ou sur deux ordinateurs du même réseau (http://<ip-de-la-machine>:8080).
Options d'URL :
?q=low : qualité réduite pour les petites configurations.?server=wss://… : autre serveur.?lag=120&jitter=20 : latence simulée en millisecondes.?autostart : démarrage direct en solo.?colliders : formes de collision dessinées par-dessus le décor.Mise en ligne : voir docs/DEPLOIEMENT.md. Le client reste sur Vercel, et le serveur WebSocket va sur Render, Fly.io ou un VPS.
J, bouton SAUT sur écran tactile) : à plus de 1,5 km des stations, 6 s de charge, la moitié du condensateur, puis 20 s de recharge.Amarrage aux stations Aurora-7 et Ferro-9, minage d'astéroïdes, commerce avec des prix qui suivent les stocks, réparations. Détails : docs/V03_ECONOMIE.md.
P) : deux pilotes ne peuvent s'affronter que si tous deux l'ont activé. Une élimination PvP ne rapporte pas de crédits.Entrée pour écrire, H pour masquer ou afficher.Tab), messages d'arrivée et de départ.Z), boost qui consomme l'énergie, translations latérales et verticales, roulis, joystick virtuel à la souris.Les touches correspondent à des positions physiques : sur un clavier AZERTY, W/A/S/D se jouent avec Z/Q/S/D, et Q/E avec A/E. Le menu du jeu affiche automatiquement les bonnes lettres dans Chrome et Edge.
| Touche | Action |
|---|---|
| Souris | Piloter (joystick virtuel) |
Clic gauche / F | Tirer |
W / S, molette | Poussée + / − |
A / D | Translation latérale |
Espace / C | Translation verticale |
Q / E | Roulis |
Maj | Boost |
X | Couper les gaz |
Z | Assistance de vol on/off |
T | Cible suivante |
V | Caméra (poursuite, proche, cinématique) |
| Flèches | Tangage / lacet au clavier |
M | Couper le son |
Entrée / H | Chat : écrire / masquer (en ligne) |
P | PvP on/off (en ligne) |
G | S'amarrer / décoller |
R, clic droit | Rayon de minage |
J | Saut hyperspatial vers l'autre secteur (encore : annuler) |
Tab (maintenir) | Liste des pilotes |
Échap | Pause : reprendre, commandes, options et son |
Toutes les touches se réaffectent dans Échap → Commandes (affichage AZERTY ou QWERTY au choix). Les réglages (touches, volumes, sensibilité, inversion verticale) sont enregistrés dans le navigateur.
Sur un écran tactile, le jeu affiche ses commandes à l'écran. Il se joue en mode paysage ; tenu à la verticale, un téléphone affiche « Tournez votre appareil ».
| Commande | Action |
|---|---|
| Pouce gauche, glisser | Piloter (le joystick apparaît sous le doigt) |
| Curseur GAZ | Poussée (en bas du trait blanc : marche arrière) |
| FEU / BOOST (maintenir) | Tirer / boost |
| CIBLE, STOP, ⟲ ⟳ | Cible suivante, couper les gaz, roulis |
| ASSIST., II | Assistance de vol, pause |
| CHAT, PVP, PILOTES | En ligne : écrire, PvP on/off, liste des pilotes |
| S'AMARRER, SAUT | Près d'un hangar : s'amarrer. Loin des stations : saut hyperspatial |
Sur mobile, la qualité graphique basse est choisie par défaut (?q=high pour la forcer). ?touch affiche les commandes tactiles sur un ordinateur.
Le tir et le boost consomment l'énergie du condensateur. Elle ne se recharge que 0,6 s après le dernier tir et hors boost ; si elle tombe à zéro, les armes et le boost restent hors ligne jusqu'à 30 % (« ÉNERGIE ÉPUISÉE · RECHARGE » dans le HUD, avec une alerte de bord).
src/
shared/ Code commun client + futur serveur (aucun DOM, aucun rendu)
sim/ World (simulation autoritaire à 60 Hz), physique, combat, IA, zone
net/protocol Messages client/serveur, snapshots, validation des entrées
server/ GameServer : sessions, IA, raids pirates, réapparitions, chat, PvP, économie (indépendant du transport)
accounts/ Comptes pilotes : mots de passe, jetons, limites, stockage mémoire ou PostgreSQL
node/ Serveur Node.js : HTTP + WebSocket /ws, configuration par variables d'environnement
client/
net/ Transport (frontière réseau), LocalTransport (solo), WebSocketTransport (en ligne), prédiction, interpolation
ui/ Menu (connexion / inscription, en ligne / solo, pause, commandes, options), chat, écran de station
render/ Ciel, planètes, astéroïdes, station, vaisseaux, lasers, effets, post-traitement
hud/ input/ camera/ audio/
tests/ Tests Vitest : simulation, serveur, réseau (vrais WebSockets), prédiction, comptes, sauvegardes, PostgreSQL
scripts/ Tests de bout en bout dans Chromium (WebGL logiciel)
Principes, détaillés dans docs/ARCHITECTURE.md :
ShipInput) ; toute la physique, les tirs et les dégâts sont calculés par World.src/shared tourne tel quel dans Node : le futur serveur multijoueur réutilisera GameServer derrière un transport WebSocket.Transport. Aujourd'hui LocalTransport exécute le serveur dans la page ; demain un WebSocketTransport le remplacera sans toucher au reste du jeu.npm run typecheck # TypeScript strict
npm test # tests : physique, collisions, combat, énergie, raids, réglages, serveur, réseau, prédiction, comptes, sauvegardes
TEST_DATABASE_URL=postgres://… npm test # en plus : le stockage PostgreSQL sur une base jetable (ses tables nf_* sont effacées)
npm run build # build de production
npm run preview & # puis :
npm run smoke # lance le jeu dans Chromium headless, pilote, tire et fait des captures
npm run ui-check # HUD à 3 tailles, menu pause, réaffectation, réglages, tirs, amarrage, commerce, minage, sauvegarde solo, chantier, contrats
node scripts/mp-check.mjs # navigateurs sur le vrai serveur : inscription, synchro, chat, combat commun, PvP, latence, reconnexion, connexion refusée puis acceptée
node scripts/mobile-check.mjs # téléphone et tablette émulés : commandes tactiles, mise en page, chat et PvP en ligne
node scripts/jump-check.mjs # saut hyperspatial en solo : HUD, charge, Kepler, retour, mémoire graphique, bouton tactile
node scripts/collision-check.mjs # collisions : mur, astéroïde, deux vaisseaux, faible et violent, aile et cockpit, caisse, puis deux navigateurs en ligne
node scripts/load-test.mjs 30 30 # 30 pilotes robots pendant 30 s : coût du tick et bande passante
Pour npm run smoke, définir CHROMIUM_PATH si Chromium n'est pas trouvé automatiquement.