Об этом проекте

openttdrs — это симулятор транспорта, вдохновленный OpenTTD, реализованный на Rust с графическим клиентом на основе Bevy. Проект следует философии итеративной разработки, обеспечивая наличие играбельной версии на каждом этапе, пока не будет достигнута полная совместимость с оригиналом. Документированные отклонения помогают отслеживать прогресс. **Ключевые особенности:** - **Ядро симуляции:** Управление картой, тиками, командами, симуляция дорог и железных дорог, частичная поддержка сигналов (PBS), экономика и управление сохранениями (JSON и импорт/экспорт .sav). - **Клиент Bevy:** Изометрический вид с использованием ресурсов OpenGFX, меню, панель инструментов и пользовательский интерфейс. Поддержка режимов сервера и клиента. - **Сеть:** Протокол TCP lockstep для многопользовательской игры и отдельный бинарный файл сервера. - **NewGRF:** Частичная поддержка каталогов Action0/3/5 и выполнения во время игры, с документированными матрицами свойств и обратных вызовов. - **Генерация карт:** Недавняя синхронизация с фазами генерации OpenTTD (ландшафт, города, индустрии) для конкретных семян, хотя общая генерализация еще не завершена. **Требования и использование:** Требуется Rust 1.98+ и нативные библиотеки для окон и звука. Графические и звуковые ресурсы включены в репозиторий, что позволяет запускать `cargo run` без дополнительных загрузок или скриптов подготовки. При первом запуске локально материализуются необходимые PNG из включенного атласа. **Статус проекта (Альфа):** Версия `0.1.0-alpha.1`. Достигнуты вехи, такие как MVP сети (I8), миграция хоста, базовый редактор, GameScript-lite и ИИ-соперник (TransCargo). Полная совместимость по рендерингу, полная поддержка NewGRF и точность сохранений еще находятся в разработке, с документированными расхождениями в канонических матрицах. **Разработка и CI:** Проект имеет надежную инфраструктуру CI/CD, включающую проверку форматирования, clippy, документацию, аудит безопасности (cargo-audit/deny), детерминированные тесты фаззинга и покрытие кода. Для оптимизации локальной компиляции рекомендуется использовать `sccache`.