Files
kimi-game/README.md
T
2026-07-21 16:28:15 +02:00

5.4 KiB
Raw Blame History

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 :

  1. 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.
  2. 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.