Нейроэволюция T-Rex
Использование нейронной сети для обучения ИИ, который сможет играть в игру про маленького динозавра, когда обрывается связь с Chrome.
Пример: страница на GitHub или страница на Коде облаке.
Игра (T-Rex Runner)
Игра называется «T-Rex-Runner», исходный код можно найти здесь: https://github.com/wayou/t-rex-runner.
Далее упоминается как «игра про маленького динозавра».
Мои изменения в игре
- Удалена музыка (из-за медленной работы моего компьютера).
- Убрано отслеживание приостановки игры при потере фокуса браузера (чтобы я мог одновременно писать код и следить за игрой).
- Код игры находится в файлах game.js и game.html (это позволяет мне управлять несколькими одновременными запусками игры через iframe).
О машинном обучении, нейросетях и искусственном интеллекте
Основные библиотеки для реализации «интеллектуальных» функций взяты из neataptic.js, файл доступен по ссылке: https://github.com/wagenaartje/neataptic.
Как управлять игрой про маленького динозавра
Если посмотреть на index.js, то станет понятно, что я создал несколько iframes, каждый из которых представляет собой отдельную игру. Для каждого ifrmae выполняется операция, данные игры передаются в AI, а результат решения AI используется для управления действиями маленького динозавра.
Запуск проекта
- Чтобы iframe мог обойти ограничения безопасности (например, междоменные ограничения), и index.js мог работать с контекстом внутри iframes, необходимо запустить веб-сервер. Я использую nodejs и его инструмент «http-server», поэтому вы можете увидеть стартовый скрипт «startServer.bat» в моей директории. Его можно запустить двойным щелчком (если у вас Windows). Затем перейдите по адресу 127.0.0.1:8080.
- При запуске страницы создаются 50 iframes для запуска игры про маленького динозавра. Из-за низкой производительности моего компьютера, запуск игры занимает 8 секунд, поэтому вы можете заметить, что маленькие динозавры не двигаются сразу после запуска. Если у вас мощный компьютер, вы можете увеличить количество динозавров до 500.
- Когда все игры заканчиваются, начинается новый раунд. Не беспокойтесь, если останется только один маленький динозавр. После завершения раунда AI не удаляет предыдущие тренировочные данные (я не знаю, где они хранятся), поэтому каждый раз, когда игра заканчивается, AI становится умнее.
История моих исследований
- Сначала я увидел, как кто-то реализовал игру с пиксельным птицами с помощью загадочного кода. Мне стало интересно, и я решил создать ИИ для маленького динозавра на основе Neuroevolution.js. Вы можете найти мой первоначальный код в ветке Neuroevolution.
- Позже я проанализировал код для игры с пиксельными птицами и создал ментальную карту (mind.png).
- Я попытался использовать другую библиотеку для создания ИИ для маленького динозавра — synaptic.js, но безуспешно. Мой код можно найти в ветке synaptic.
- В процессе поиска я обнаружил, что загадочный код на самом деле использует генетический алгоритм и нейронные сети. После некоторого времени поиска я нашёл neataptic.js и использовал эту библиотеку для создания ИИ. Мой код находится в ветке neataptic.
- Изучив neataptic.js более подробно, я понял, что он имеет больше возможностей, чем Neuroevolution.js, и решил использовать его для своего проекта. Ветку master я заменил на ветку neataptic.
Описание веток
-
master: текущая версия кода, которая считается наиболее надёжной. Она эквивалентна ветке neataptic.
-
neataptic: реализация ИИ для игры про маленького динозавра с использованием neataptic.js.
-
Neuroevolution: первоначальная попытка создания ИИ на основе Neuroevolution.js.
-
synaptic: попытка использования synaptic.js для создания ИИ, но без успеха.
Комментарии ( 0 )