Snake-AI-L — это сверхумный гибридный искусственный интеллект для классической игры «Змейка», совмещающий в себе математические алгоритмы поиска путей и динамическое самообучение с подкреплением (Reinforcement Learning).
Этот проект — не просто технический эксперимент. Это искренняя дань уважения англоязычному ютуберу Code Bullet.
Когда я был маленьким, я взахлеб смотрел его видео о том, как он создает безумные ИИ, заставляя их играть в Flappy Bird, Tetris и, конечно же, в Змейку. Его ролики, наполненные фирменным юмором, бесконечными циклами смертей игровых персонажей и первыми победами обученных нейросетей, вдохновили меня и привили огромную любовь к программированию и технологиям ИИ.
Спустя годы я написал этот проект, чтобы воплотить детскую мечту в реальность и создать свой собственный «цифровой разум», работающий по тем же принципам гибридной логики, о которых рассказывал Code Bullet.
Данный проект разработан не с нуля — он базируется на кодовой архитектуре моего предыдущего репозитория 🐍 Snake-IO (Simple Version).
Snake-IO — это упрощенная, высокооптимизированная и стабильная версия классической игры «Змейка» на Python и Pygame. Исходная сборка была полностью лишена тяжелых графических элементов, меню и задержек, что сделало её идеальной изолированной средой (Sandbox) для интеграции алгоритмов машинного обучения (Machine Learning) и обучения с подкреплением (Reinforcement Learning).
- Мгновенный сброс (Instant Reset): При столкновении со стеной или хвостом игра не зависает на экране «Game Over» и не требует ручного перезапуска. Метод
returnмгновенно сбрасывает состояние, позволяя агенту ИИ безболезненно и без задержек начинать новые эпохи (episodes) обучения. - Вынесенный интерфейс: Панель счета полностью вынесена за пределы игрового поля (
HEADER_HEIGHT). Это позволяет алгоритмам считывать чистую координатную сетку игрового пространства без визуального шума от текста. - Гибкое управление: Вшитая поддержка WASD и стрелочек изначально позволяла легко симулировать действия агента через генерацию виртуальных нажатий клавиш (
pygame.event.post). В текущей версии это переросло в прямое управление векторами направления. - Максимальная легковесность: Минимальное количество зависимостей гарантирует, что процессор не тратит ресурсы на рендеринг лишней графики, отдавая всю мощность математическим расчетам ИИ.
- Гибридный Разум: ИИ не просто совершает случайные ходы, а просчитывает геометрию карты в реальном времени.
- Три Режима Скорости: Переключение между режимами симуляции одной клавишей в реальном времени.
- Панель Телеметрии (Dashboard): Правая часть экрана отображает «мысли» ИИ: веса решений, показания радарных датчиков, текущий фактор хаоса и размер базы знаний.
- Защита от Зацикливания: ИИ умеет измерять доступную площадь и никогда не совершит самоубийство, если вход в петлю хвоста меньше его собственного размера.
Управление симуляцией осуществляется прямо во время игры с помощью клавиш на клавиатуре:
| Клавиша | Режим симуляции | Описание фреймрейта | Визуальное состояние |
|---|---|---|---|
1 |
Человеческий | Фиксированные 15 FPS | Графика игры + Полная аналитика |
2 |
Ускоренный | Разблокированные 500 FPS | Быстрый визуальный мониторинг |
3 |
Ультра (Турбо) | Максимальный FPS процессора | Отрисовка отключена (Красная заглушка прогресса) |
Система принятия решений построена на базе трех взаимосвязанных алгоритмов:
-
Алгоритм поиска путей
$A^*$ (A-Star): Если путь к яблоку безопасен и ИИ уверен в своих силах, он использует идеальный математический маршрут для мгновенного сбора еды. - Алгоритм Flood Fill (Анализ тупиков): Перед каждым шагом ИИ виртуально «заливает» пространство вокруг себя. Если площадь свободного места меньше длины тела змейки, ход блокируется как смертельный тупик, предотвращая врезание в собственный хвост.
- Q-Learning (Табличный алгоритм RL): Локальные инстинкты змейки. Если яблоко заблокировано хвостом, ИИ переходит в режим выживания и ювелирно маневрирует по координатам относительного зрения.
Для работы проекта необходим установленный интерпретатор Python версии 3.8 или выше, а также библиотека Pygame.
-
Склонируйте репозиторий:
git clone https://github.com/loanelly/Snake-AI-L cd Snake-AI-L -
Установите зависимость:
pip install pygame
-
Запустите скрипт:
python main.py
В коде используются следующие предустановленные коэффициенты:
ALPHA(Learning Rate) =0.3— скорость обновления матрицы знаний ИИ.GAMMA(Discount Factor) =0.95— важность долгосрочного выживания по отношению к быстрой выгоде.EPS_DECAY=0.9995— скорость уменьшения фактора хаоса (исследовательских ходов).
Проект полностью избавлен от мусора. В репозиторий включен настроенный файл .gitignore, который автоматически блокирует кэш Python (__pycache__), временные файлы сред разработки (IDLE, VS Code) и системные логи Windows.
Проект распространяется под лицензией Open Source. Вы можете свободно использовать, модифицировать и распространять данный код.
Сделано с ❤️ руками loanelly.