尚未检测到更新。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.