Contexte et objectifs

Le projet terminactory a été initialisé le 12 novembre 2026 sur GitLab. En moins de deux ans, le dépôt a accumulé 212 commits, ce qui indique une activité soutenue malgré l'absence de branches secondaires. L’objectif affiché est de proposer un idle factory game entièrement exploitable depuis le terminal, sans dépendance graphique externe.

Le choix d’un environnement terminal vise à réduire la barrière d’accès : tout utilisateur disposant d’un émulateur de console peut lancer le jeu, ce qui le rend compatible avec les systèmes Linux, macOS et Windows via les terminaux classiques.

Architecture technique

Le cœur du moteur est développé en Rust, langage réputé pour son modèle de possession et son absence de ramasse‑miettes. Cette caractéristique garantit une utilisation mémoire prévisible, essentielle pour un jeu qui doit rester réactif même sur des machines limitées. Le code source, organisé en un seul branch, repose sur une architecture modulaire : un module gère la logique du jeu (production, upgrades, timers), un autre assure le rendu TUI, et un troisième orchestre les entrées utilisateur.

Le rendu s’appuie sur la crate ratatui, dérivée de tui‑rs. Ratatui fournit des widgets (blocs, listes, barres de progression) qui s’affichent directement dans le buffer du terminal. Le projet utilise le modèle d’événement de ratatui : une boucle principale récupère les entrées clavier, met à jour l’état du jeu, puis redessine l’interface à chaque tick. Cette approche minimise la latence, car chaque itération ne nécessite qu’une écriture de quelques dizaines de lignes de texte.

Analyse de la stack Rust et ratatui

Rust compile le binaire en code natif, ce qui élimine la surcharge d’une machine virtuelle. Le binaire résultant de terminactory pèse généralement moins de 2 Mo, bien inférieur aux jeux similaires écrits en JavaScript ou Python. La gestion des threads, bien que non explicitée dans le dépôt, peut être exploitée via la bibliothèque standard de Rust : le moteur idle peut s’appuyer sur des std::thread ou tokio pour exécuter les calculs de production en arrière‑plan sans bloquer l’interface.

Ratatui, quant à elle, utilise le protocole ANSI pour le rendu, ce qui assure une compatibilité avec la plupart des émulateurs. La bibliothèque gère automatiquement le redimensionnement du terminal, évitant les artefacts graphiques lors de changements de taille de fenêtre. Cependant, l’absence de support natif pour les images ou les polices personnalisées limite le niveau de détail visuel, un compromis accepté au profit de la légèreté.

Licence et perspectives de contribution

Le code est publié sous Apache License 2.0. Cette licence permissive autorise la modification, la redistribution et l’utilisation commerciale, à condition de conserver les mentions de droit d’auteur et le fichier de licence. Elle encourage donc les contributions externes, même si le dépôt ne comporte actuellement aucun tag de version ; cela peut compliquer la gestion des releases pour les utilisateurs qui souhaitent se référer à un état stable.

Le nombre limité de tags suggère que les auteurs privilégient des déploiements continus via la branche principale. Pour les développeurs souhaitant s’impliquer, le processus de contribution reste simple : un fork, des commits suivis d’une merge request. La communauté pourra ainsi enrichir le jeu avec de nouvelles usines, des mécanismes de prestige ou des intégrations réseau, tout en conservant la robustesse offerte par Rust et la légèreté de ratatui.