3D-симулятор автогонок, в котором автомобили управляются нейросетевыми агентами, обученными с помощью методов обучения с подкреплением (Reinforcement Learning). Игрок может соревноваться с ИИ на различных трассах, а также самостоятельно настраивать и запускать процесс обучения новых агентов прямо из игры.
- Нейросетевые противники (ML-Agents): Боты используют алгоритм SAC (Soft Actor-Critic) и непрерывное пространство действий (Continuous Actions) для плавного управления газом, тормозом и рулём.
- Продвинутая физика: Реалистичное поведение автомобилей, дрифт и подвеска на базе
Prometeo Car Controller. - Модульные трассы: Трассы построены с использованием
Unity Splines, что позволяет легко менять геометрию, при этом ИИ автоматически адаптируется к новому маршруту. - Современный UI (UI Toolkit): Адаптивное главное меню, настройки графики/звука, меню паузы и экраны результатов гонки.
- Встроенный конфигуратор обучения: Возможность настраивать гиперпараметры нейросети (Batch Size, Learning Rate, Time Horizon и др.) прямо в UI игры. Игра сама генерирует файл
car.yamlдля ML-Agents. - Динамическая музыка: Бесшовное переключение фоновой музыки между меню и гонкой с помощью паттерна Singleton (
DontDestroyOnLoad).
- Движок: Unity 6 (6000.3.6f1)
- Машинное обучение: Unity ML-Agents (Release 20+)
- Интерфейс: Unity UI Toolkit (UXML / USS)
- Физика авто: Prometeo Car Controller
- Система трасс: Unity Splines
Агент получает следующие наблюдения (Observations):
- Текущая скорость (нормализованная).
- Боковое скольжение и флаг дрифта.
- Выравнивание относительно вектора трассы.
- Боковое смещение от центра трассы.
- Прогресс прохождения трассы (от 0 до 1).
- 3D Ray Perception Sensor (Лидары для обнаружения стен).
Система наград: Агент получает награду за продвижение вперёд по сплайну. Чем выше скорость, тем больше множитель награды. Штрафы выдаются за столкновение со стенами, езду задним ходом и простой на месте.
- Unity: Версия
6000.3.6f1(или совместимая). - Python: Версия
3.9-3.10(необходим только если вы собираетесь обучать ИИ).
- Склонируйте репозиторий:
git clone https://github.com/YOUR_USERNAME/ML-Race.git
- Откройте проект в Unity Hub.
- Дождитесь импорта всех ассетов и пакетов (ML-Agents, UI Toolkit, Splines).
- Откройте сцену
Assets/Scenes/MenuScene.unity. - Нажмите Play!
- В главном меню выберите вкладку Гонка.
- Выберите трассу, количество кругов и количество ИИ-соперников.
- Нажмите Старт.
- Управление:
W/A/S/DилиСтрелки— движение,Space— ручной тормоз,Esc— пауза. - Цель: Проехать заданное количество кругов быстрее ботов.
- В главном меню выберите вкладку Обучение.
- Настройте гиперпараметры (количество агентов, шагов, Learning Rate и т.д.).
- Нажмите Начать обучение. Игра сгенерирует файл
Assets/StreamingAssets/car.yamlи загрузит тренировочную сцену. - Откройте терминал (командную строку) в папке проекта и активируйте ваше Python-окружение с установленным
mlagents. - Запустите процесс обучения командой:
mlagents-learn Assets/StreamingAssets/car.yaml --run-id=CarRace_01
- Нажмите Play в редакторе Unity, чтобы начать симуляцию.
- После завершения обучения готовая модель (
.nnmodelили.onnx) появится в папкеresults/CarRace_01/. Переместите её вAssets/Resources/Models/carдля использования в гонке.
Assets/Scripts/— Исходный код (C#).Assets/Scenes/— Игровые сцены (Меню, Гонки, Тренировка).Assets/UI/иAssets/Resources/UI/— Файлы вёрстки и стилей интерфейса (UXML/USS).Assets/Resources/Models/— Обученные модели нейросетей.Assets/StreamingAssets/— Сгенерированные конфигурации для ML-Agents.
Разработано в рамках изучения Reinforcement Learning и Unity ML-Agents.