À propos du projet

openttdrs est un simulateur de transport inspiré d'OpenTTD, implémenté en Rust avec un client graphique basé sur Bevy. Le projet suit une philosophie de développement incrémental, assurant qu'il existe toujours une version jouable pendant que l'on travaille à atteindre la parité avec l'original au moyen de coupures documentées. **Caractéristiques principales :** - **Cœur de simulation :** Gestion de la carte, ticks, commandes, simulation de routes et de chemins de fer, signaux partiels (PBS), économie et gestion des parties sauvegardées (JSON et import/export .sav). - **Client Bevy :** Vue isométrique utilisant les assets OpenGFX, menus, barre d'outils et interface utilisateur. Supporte les modes serveur et client. - **Réseau :** Protocole TCP lockstep pour le multijoueur et un binaire de serveur dédié. - **NewGRF :** Support partiel pour les catalogues Action0/3/5 et à l'exécution, avec des matrices documentées de propriétés et de callbacks. - **Génération de cartes :** Alignement récent avec les phases d'OpenTTD (paysage, villes, industries) pour des semences spécifiques, bien que la généralisation soit encore en cours. **Exigences et utilisation :** Requiert Rust 1.98+ et les bibliothèques natives de fenêtre/audio. Les assets graphiques et sonores sont versionnés dans le dépôt, permettant d'exécuter `cargo run` directement sans téléchargements supplémentaires ni scripts de préparation. Le premier démarrage matérialise localement les PNG nécessaires depuis l'atlas inclus. **État du projet (Alpha) :** Se trouve dans la version `0.1.0-alpha.1`. Comprend des jalons tels que le MVP de réseau (I8), la migration de l'hôte, l'éditeur de base, GameScript-lite et une IA rivale (TransCargo). La parité totale en rendu raster, NewGRF complet et fidélité des sauvegardes est encore en développement, avec des divergences documentées dans des matrices canoniques. **Développement et CI :** Le projet dispose d'une infrastructure robuste de CI/CD qui comprend des tests de format, clippy, documentation, audit de sécurité (cargo-audit/deny), tests de fuzzing déterministe et couverture de code. Il est recommandé d'utiliser `sccache` pour optimiser les compilations locales.