À propos du projet
singedTerra est un jeu d'artillerie au tour par tour basé sur le navigateur, écrit de zéro en TypeScript, présenté comme un hommage au Scorched Earth (1991) de Wendell Hicken. Il conserve la boucle classique : choisir un angle, lire le vent, définir une puissance et tirer, tandis que le terrain enregistre les conséquences. Il est jouable en match local (hot-seat) de 2 à 4 joueurs dans un seul navigateur ou en ligne via des salons Supabase publics et privés.
Mécaniques de base. Le terrain est un bitmap au pixel près : les explosions creusent de vrais trous, le sol non soutenu s'effondre, les tanks se stabilisent dans les cratères et les armes de type terre peuvent construire de nouvelles couvertures. Chaque round est seedé et chaque tour reçoit un vecteur de vent déterministe, afin que chaque client résolve la même trajectoire de vol. Seize armes couvrent le tir direct, les explosions aériennes, les explosifs rebondissants, le napalm, la construction de terrain, le tunnelage et la défense. Le mouvement consomme du carburant, et les dégâts rapportent des crédits qui doivent être répartis entre les munitions, les boucliers, les batteries et le carburant sur des matchs de plusieurs rounds. La présentation inclut des tanks conçus, un champ de bataille au crépuscule, des instruments balistiques, un éclairage d'impact, un tremblement d'écran et un audio synthétisé.
Garage de tanks. Chaque place dispose d'un Garage : les joueurs commencent avec les châssis Foundry, Ranger, Bulwark ou Jackal et combinent la mobilité, la coque, la tourelle et les pièces du canon pour créer une silhouette personnalisée, qui apparaît dans l'aperçu de l'effectif et est conservée pendant le match.
Modes et netcode. Les places contrôlées par ordinateur utilisent la même physique déterministe que les joueurs humains, et les modes hot-seat et en ligne n'utilisent pas de physiques différentes. Le mode hot-seat exécute le moteur partagé directement dans le navigateur via HotSeatClient. Pour le jeu en ligne, chaque navigateur exécute sa propre copie du même moteur : Supabase valide les actions du salon, attribue des numéros de séquence, stocke le journal ordonné et diffuse les lignes validées via Realtime. Le match en ligne canonique est composé d'un seed plus un journal d'actions ordonné ; l'état du jeu est reconstruit localement plutôt que diffusé par un serveur, ce qui fait des pas de temps fixes, du hasard seedé et de la parité de rejeu des éléments centraux de la conception.
Commandes. Les touches fléchées dirigent le canon et augmentent ou diminuent la puissance ; A et D permettent de se déplacer et consomment du carburant ; Q fait défiler l'arme sélectionnée ; Espace ou Entrée tire ou active le bouclier sélectionné ; G active le guidage de trajectoire ; M coupe ou rétablit l'audio synthétisé ; maintenir F avance rapidement le tir actuel localement. Les dispositions tactiles remplacent le clavier par un Command Deck groupé couvrant la Visée, la Puissance et la Conduite, tandis que l'Arme et le Menu sont des utilitaires et Tir, Stockage, carburant et Arsenal restent dans le rail tactique. Sur ordinateur, faire glisser vers l'extérieur depuis le tank actif définit l'angle et la puissance sans tirer.
Exécution et vérification. Le projet nécessite Node 24.15 ou plus récent dans la ligne Node 24 LTS, ainsi que npm ; npm install suivi de npm run dev sert le client Vite sur localhost:5173, et le jeu hot-seat ne nécessite aucune configuration de backend. Le jeu en ligne nécessite VITE_SUPABASE_URL et VITE_SUPABASE_ANON_KEY dans client/.env ; la clé anon est destinée à être livrée dans le client public, tandis que la Row-Level Security et la validation des Edge Functions protègent les données côté serveur. Les commandes de vérification incluent npm run check (vérification de type plus harnais moteur déterministe), npm run test:client (tests Vitest client et DOM), npm run check:edge (tests Deno pour les Edge Functions Supabase), npm run test:e2e (vérifications de mise en page et de gameplay Chromium de production) et npm run build. La CI exécute les mêmes barrières sur chaque pull request, et les modifications sous shared/src/engine/ doivent préserver le rejeu déterministe.
Structure du dépôt et documentation. client/ contient l'application Vite, les rendus Canvas, le HUD HTML, les entrées et le lobby ; shared/ contient le moteur déterministe, la logique de rejeu et les types partagés ; supabase/ contient les migrations Postgres et les arbitres Edge Function sans état ; scripts/checks/ contient le moteur déterministe et les harnais de contrat ; e2e/ contient les garde-fous de mise en page et de gameplay pour navigateur de production ; docs/ contient les dossiers pour les joueurs, l'architecture, le développement et le projet. La documentation couvre le jeu, l'architecture, le développement et les opérations, le système d'interface utilisateur et la spécification actuelle. Le projet est publié sous licence MIT et n'est ni affilié ni approuvé par les auteurs originaux de Scorched Earth.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.