5.4 KiB
Outpost Remote
Jeu de gestion / programmation différée pour LÖVE 2D 11.x. Sur une planète distante, les communications en temps réel sont impossibles : chaque matin, vous préparez le programme de travail de votre robot, puis vous observez la journée s'exécuter sans pouvoir intervenir.
Lancer le jeu
love .
Lancer les tests automatisés :
love . --tests
Boucle de jeu
Chaque journée alterne deux phases :
- Planification — inspectez la carte, placez des plans de construction (coût prélevé immédiatement), composez la liste ordonnée des tâches du robot, consultez la météo prévue pour le lendemain.
- Exécution — le robot exécute le programme de façon autonome (A* pour le pathfinding, coûts de terrain, recalcul si un chemin devient invalide). Vous pouvez observer, mettre en pause, accélérer, mais aucune commande directe n'est possible avant la prochaine fenêtre de communication.
Les tâches non terminées sont reportées au jour suivant. Une mauvaise planification (tâches impossibles, énergie insuffisante, tempête ignorée) fait perdre du temps sans terminer la partie : un robot à court d'énergie est immobilisé puis dépanné de nuit avec une énergie partielle.
Objectif
Activer la balise de communication longue distance : elle requiert 3 relais scientifiques construits, 60 minerai, 150 données et une infrastructure énergétique suffisante (elle consomme 1 énergie/s). Des objectifs intermédiaires jalonnent la progression (explorer, premier panneau solaire, extraire du minerai, atelier, 5 bâtiments actifs, 100 données). Après la victoire, la partie continue en mode bac à sable.
Contrôles
| Entrée | Action |
|---|---|
| Clic gauche | Sélectionner / appliquer l'outil courant |
| Clic droit glissé / Flèches / ZQSD | Déplacer la caméra |
| Molette | Zoomer / dézoomer (centré sur la souris) |
B puis Tab |
Outil construction, changer de bâtiment |
E / H |
Outil exploration / récolte |
Échap |
Retour à l'outil sélection |
Entrée |
Lancer la journée (phase planification) |
Espace |
Pause (phase exécution) |
1 / 2 / 3 |
Vitesse de simulation ×1 / ×2 / ×4 |
F1 |
Aide |
F5 / F10 |
Sauvegarde rapide / retour au menu |
Règles principales
- Terrain : plaines (coût 1), terrain difficile (coût 3), rochers infranchissables, gisements de minerai, zones de données. Chaque élément a une couleur et une forme distincte.
- Robot : énergie limitée (déplacements et travaux consomment), usure (ralentit tout, réparable à l'atelier), capacité de transport de 40 minerai — le minerai récolté à la main doit être ramené à la station via une tâche recharge.
- Bâtiments : station (unique, recharge lente, dépôt), panneau solaire (production réduite à 25 % en tempête), batterie (+100 stockage), extracteur (sur gisement, consomme de l'énergie), relais scientifique (doit être à ≥ 6 cases d'un autre relais), atelier (répare le robot à proximité), balise (objectif). Les bâtiments perdent de l'intégrité en tempête et produisent moins quand ils sont endommagés.
- Météo : temps normal, froid intense (consommation du robot ×1.8), tempête de poussière (solaire réduit, vitesse ×0.6, usure des bâtiments). Prévision la veille, exacte dans ~85 % des cas, déterministe par graine.
- Énergie colonie à 0 : extracteurs et relais s'arrêtent de produire.
Architecture
main.lua Entrée LÖVE : menu, boucle, pas de simulation fixe (1/30 s)
conf.lua Configuration de la fenêtre
src/config.lua Toutes les constantes d'équilibrage (moddable)
src/noise.lua Bruit déterministe par hachage (LuaJIT bit)
src/world.lua Monde infini par chunks 16×16 générés à la demande
src/pathfind.lua A* 4-directions avec coûts de terrain
src/buildings.lua Définitions, règles de placement, production
src/robot.lua État du robot, déplacement le long du chemin
src/tasks.lua Liste ordonnée, validation, estimation, sérialisation
src/weather.lua Météo et prévision déterministes
src/game.lua Orchestrateur de simulation (aucun love.graphics)
src/save.lua Sauvegarde/chargement (texte clé=valeur)
src/ui.lua Rendu et entrées (seul module couplé à love.graphics)
tests/run_tests.lua 49 tests de logique pure
tests/runner_love.lua Exécuteur via `love . --tests`
La logique de simulation (world, pathfind, buildings, robot, tasks,
weather, game, save) ne dépend pas de love.graphics et est testée sans
affichage.
Sauvegarde
F5 en jeu, ou bouton Charger au menu. Fichier savegame.txt dans le
répertoire de données LÖVE (~/.local/share/love/outpost_remote/). Conserve :
graine, jour, zones explorées, bâtiments et plans, ressources, état du robot,
tâches restantes, objectifs.
Limitations connues
- L'extracteur puise dans une réserve finie de 300 minerai par gisement ; la récolte manuelle, 60.
- Les gisements épuisés ne sont pas marqués visuellement sur la carte.
- La purge des chunks éloignés est transparente (régénération identique à la demande), mais les modifications de terrain par le joueur seraient perdues — il n'y en a actuellement aucune.
- Pas de diagonal movement dans le pathfinding (choix : lisibilité du coût).
- La sauvegarde est un texte non chiffré, facilement éditable.