Skip to content

loanelly/Tetris-AI-L

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tetris-AI-L.py: Эволюционный ИИ-планировщик на базе Tetris Simple 🤖🧠

Этот скрипт представляет собой глубокую модификацию проекта Tetris-io: Simple ML Edition. Исходный код, содержащий базовую механику Тетриса, был полностью переработан и трансформирован из пошаговой среды обучения с подкреплением в высокопроизводительный эволюционный планировщик финальных позиций.

Проект очищен от лишней мультимедийной нагрузки и разработан специально как полигон для изучения генетических алгоритмов и эвристического анализа в реальном времени.


📸 Скриншоты

Главное меню Игровой процесс


Дань уважения / Tribute to Code Bullet

Этот проект — не просто технический эксперимент. Это искренняя дань уважения англоязычному ютуберу Code Bullet.

Когда я был маленьким, я взахлеб смотрел его видео о том, как он создает безумные ИИ, заставляя их играть в Flappy Bird, Tetris и, конечно же, в Змейку. Его ролики, наполненные фирменным юмором, бесконечными циклами смертей игровых персонажей и первыми победами обученных нейросетей, вдохновили меня и привили огромную любовь к программированию и технологиям ИИ.

Спустя годы я написал этот проект, чтобы воплотить детскую мечту в реальность и создать свой собственный «цифровой разум», работающий по тем же принципам гибридной логики, о которых рассказывал Code Bullet.


🏗️ Базовый фундамент / Built Upon Tetris-io

Данный проект разработан не с нуля — он базируется на кодовой архитектуре моего предыдущего репозитория 🤖 Tetris-io (Simple ML Edition).

Tetris-io — это упрощенная, высокооптимизированная и стабильная версия классического «Тетриса» на Python и Pygame. Исходная сборка была полностью лишена тяжелых мультимедийных элементов, главного меню и искусственных задержек, что сделало её идеальной изолированной средой (Sandbox) для интеграции алгоритмов машинного обучения (Machine Learning) и обучения с подкреплением (Reinforcement Learning).

🌟 Почему фундамент Tetris-io идеален для этого ИИ:

  • Мгновенный сброс (Instant Reset): При заполнении стакана и проигрыше игра не зависает на экране «Game Over» и не требует ручного перезапуска. Метод reset_env() мгновенно очищает поле, позволяя агенту ИИ безболезненно и без задержек начинать новые эпохи (episodes) обучения.
  • Вынесенный интерфейс: Панель счета и вся сопутствующая аналитика полностью вынесены за пределы игрового стакана на боковую панель (PANEL_X). Это позволяет алгоритмам считывать чистую координатную сетку игрового пространства без визуального шума от текста.
  • Изолированная математика: Логика проверки коллизий деталей (valid) и очистки рядов изначально была отделена от графического движка. Это позволило легко внедрить виртуальный перебор позиций (Lookahead) без фантомных отрисовок на экране.
  • Максимальная легковесность: Минимальное количество зависимостей гарантирует, что процессор не тратит ресурсы на рендеринг лишней графики, отдавая всю мощность математическим расчетам ИИ в многопоточных или ускоренных режимах.

🔬 Архитектура и Логика работы ИИ

В отличие от классических моделей Reinforcement Learning (таких как табличный Q-learning или DQN), которые совершают микро-действия (влево, вправо, поворот) на каждом кадре и страдают от «проклятия размерности», данный ИИ мыслит глобальными категориями.

1. Механизм мгновенного планирования (Lookahead)

При спавне каждой новой фигуры ИИ не ждет её падения. Метод make_best_move() запускает виртуальный перебор всех возможных финальных положений детали:

  • Перебираются все доступные ротации фигуры (от 1 до 4).
  • Для каждого поворота симулируется сброс во все 10 столбцов стакана.
  • Взгляд в будущее (Lookahead): Для каждого успешного виртуального падения ИИ берет следующую фигуру (nxt_p) и просчитывает лучшие ходы уже для неё. Это позволяет ИИ не зажимать самого себя и оставлять удобный рельеф для последующих ходов.

2. Математическая оценка поля (Эвристики Делль-Ораля)

Каждое гипотетическое состояние доски после укладки оценивается линейной функцией по 4 ключевым метрикам профессионального Тетриса: $$\text{Score} = w_1 \cdot \text{Height} + w_2 \cdot \text{LinesCleared} + w_3 \cdot \text{Holes} + w_4 \cdot \text{Bumpiness}$$

  • Макс. высота башни (Height): ИИ стремится держать поле как можно ниже (отрицательный вес).
  • Сожженные линии (LinesCleared): Прямая цель игры, поощряется экспоненциально (положительный вес).
  • Количество дыр (Holes): Пустоты под заблокированными блоками — главный враг ИИ. Модель жестко штрафует себя за их создание.
  • Шероховатость поля (Bumpiness): Суммарный перепад высот между соседними столбцами. ИИ стремится укладывать фигуры так, чтобы стол оставался идеально плоским, избегая глубоких шахт.

3. Генетическая эволюция и контролируемый Хаос (Eps)

Вместо статичных коэффициентов в Tetris-AI-L.py заложен Генетический алгоритм:

  • Мутация ДНК: Каждую новую партию с вероятностью Eps (20%) ИИ вносит случайные микро-изменения (мутации) в свои веса оценки поля.
  • Естественный отбор: Если с мутировавшими весами ИИ набирает счет выше, чем текущий best_score, игра закрепляет эти коэффициенты в качестве нового эталона «ДНК» поколения.

🕹️ Режимы симуляции

Скрипт поддерживает мгновенное переключение скоростей прямо во время выполнения с помощью клавиш клавиатуры:

  • Клавиша 1 [Режим демонстрации] — Пошаговое выполнение с частотой 60 кадров в секунду. Вы можете лично наблюдать за идеальной геометрической логикой укладки блоков ИИ.
  • Клавиша 2 [Ускоренное обучение] — Просчитывает по 25 шагов ИИ за один кадр отрисовки интерфейса. Оптимально для быстрого набора базы данных без отключения картинки.
  • Клавиша 3 [Максимальный разгон] — Полностью отключает отрисовку стакана, выводя только текстовую заставку с рекордами. Цикл крутит симуляцию по 500 шагов за раз, позволяя ИИ проживать сотни игр за секунды и находить лучшие мутации весов.

🛠️ Запуск проекта

Проект написан на чистом Python 3 с использованием библиотек pygame и numpy, не требует CUDA или мощных видеокарт.

# Установка окружения
pip install pygame numpy

# Запуск ИИ
python Tetris-AI-L.py

Текущий статус проекта

Система успешно преодолела проблему «застревания» на счете в ~490 очков благодаря внедрению Lookahead-прогнозирования и генетических мутаций весов. В первых же поколениях ИИ демонстрирует результаты 100000+ очков за одну сессию без единой системной ошибки.


🧹 Чистота репозитория

Проект полностью избавлен от мусора. В репозиторий включен настроенный файл .gitignore, который автоматически блокирует кэш Python (__pycache__), временные файлы сред разработки (IDLE, VS Code) и системные логи Windows.


📄 Лицензия

Проект распространяется под свободной лицензией MIT. Вы можете добавлять свои текстуры, препятствия или звуковые эффекты, свободно использовать, модифицировать и распространять данный код.


Сделано с ❤️ руками loanelly.

About

Tetris-AI-L.py — эволюционный ИИ для Тетриса на базе Simple Edition. Вместо слепого пошагового RL, робот использует планировщик Dellacherie и Lookahead-предиктор, просчитывая доску на 2 шага вперед. Генетический алгоритм мутирует веса высоты, дыр и шероховатости поля, пробивая потолок в 100000+ очков. Поддерживает 3 режима скорости.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages