Есть ли у кого-нибудь соображения, о возможности реализовать в WC3 нечто похожее на AlfaStar из мира StarCraft 2. Потянет ли движок WC3 нейронную сеть? Можно ли такое реализовать на Lua?

Принятый ответ

Прежде всего, нейросеть для старкрафта сидит вне клиента игры. Спрашивать потянет ли это движок не корректно потому как движок то тут ни при чем. Правильнее ставить вопрос,реально ли реализовать интерфейс для взаимодействия нейросети с игрой.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
15
5 лет назад
Отредактирован DarkLigthing
0
Bergi_Bear:
Каким бы ни был хорош мемхак, уже в ближайшем будущем ты просто не найдёшь игроков которые бы играли на патче 1.26а Так как обычным игрокам мало что известно о том, зачем им скачивать старый WC3 и почему этой же карты нет на актуальную версию. На которой у них уже скоро будут проекты, демонстрирующие нечто что они раньше не видели, кастом интерфейс, новые механики в том числе управления и.т.д
prog:
Ну AlphaStar это уже очень серьёзный проект и не факт что такой же интерфейс будет возможен в Reforged. Без всяких хуков файлов игры и кастом инжекторов то есть хака игры. По этому я и подумал, так как классический AI это точные данные, а нейронная сеть усреднённое значение можно было бы в теории улучшить некоторые аспекты поведения бота, комбинируя классический AI и механики нейронной сети. Но вот примерная архитектура такого проекта у меня в голове пока не складывается :)
0
28
5 лет назад
Отредактирован PT153
0
Нейронка же обучаться как-то должна, нейроны должны где-то быть. Это точно какой-то сервер. У SC2 есть API для этого, у WC3 нет, будет ли у ремейка - неизвестно. К тому же, AlphaStar не фановый проект, а исследовательская работа.
2
32
5 лет назад
2
Но вот примерная архитектура такого проекта у меня в голове пока не складывается :)
Ну как бы уже 3 варианта назвал:
  1. Мемхак 126 патч
  2. Внешняя прога обмена данных (любой патч)
  3. Передача данных через сарафанное радио между прелоадами (я не проверял, но вроде последний патч тянет такое, так что в принципе - любой патч)
2
28
5 лет назад
2
уже в ближайшем будущем ты просто не найдёшь игроков которые бы играли на патче 1.26а
вся гарена и часть серверов сидят на 1.26а
0
17
5 лет назад
0
Здравствуй, движок потянет.
Проблемы которые могут возникнуть:
  • 1.1) Превышение лимита операций обходе/обучении нескольких нейросетей;
  • 1.2) Превышение лимита операций при обходе одной неросети;
2.) Ограничение на количество структур (длину массива) => ограничение на архитектуру сетей/сети.
Решения:
  • 1.1) Распараллеливание вычислений, 1 сеть - 1 поток;
  • 1.2) Ручками разделение обхода (для каждого вида сети);
2.) Хеш-таблица или хитрый алгоритм обращения к нескольким массивам (если количество весов более 8190 то надо писать систему сохранения весов в несколько файлов).
Итого:
  • Нейросети получаются миниатюрными, но вполне подходят для решения некоторых задач;
  • Помимо прочих костылей есть еще особенности вычислений на Blizzard Машине. Например, с точки зрения лимита одно сложение/вычитание = одному умножению и т. п. Это может привести к необычным оптимизациям.
16 нейросетей общая сумма весов которых не превышала 8190 успешно обучались с помощью ГА, учились самостоятельно принимать решения (использовать зелье и подходить к руднику) чтобы победить врага.
Обучение нейросети с помощью алгоритма обратного распространения ошибки может вестись в одиночке с помощью таймера с периодом 0.00001 и полной загрузкой потока без тормозов. Вывод ошибки обучения на экран каждый тик, кстати, вызывает дикие лаги, поэтому выводилась только каждая N-ная ошибка.
Предварительно максимальная производительность достигалась тогда, когда работает один максимально загруженный поток
0
28
5 лет назад
0
2.) Ограничение на количество структур (длину массива) => ограничение на архитектуру сетей/сети.
эта проблема решается с помощью v/cjass указанием размера массива
Vlod:
  • 1.1) Превышение лимита операций обходе/обучении нескольких нейросетей;
кроме распараллеливания может использоваться вейт на 0 секунд, т.к. для большинства карт не требуется слишком частого обновления
0
17
5 лет назад
0
nvc123, если я не ошибаюсь в том как сделаны структуры в vjass, то их количество имеет лимит, который еще и уменьшается с введением массива.
Для нейросети 20х20х20 -> 400+400=800 связей, то есть в игре таких сеток может быть всего 10, более того, использование слоев разных размерностей принудит либо к описанию каждого типа отдельно, либо отказ от априорного определения размерности
Вейт - ужасное решение для backpropagation, который является основным методом обучения на данное время
0
28
5 лет назад
0
эта проблема решается с помощью v/cjass указанием размера массива
У vJass лимит кастомного массива 32к, в 1.29+ такой размер массива нативен.
Vlod, ты описываешь нейросеть, которая будет существовать только во время запуска карты. После её закрытия все изменения сотрутся. Нужно сохранять как-то и загружать, что адекватно сделать нельзя, только костылями через прелоад. Пока не будет нормального I\O API, не вижу смысла этим заниматься.
0
17
5 лет назад
Отредактирован Vlod
0
PT153, есть несколько вариантов, самый простой - это обучить сетку, сжать по возможности и запихнуть её в карту, а что тебя смущает даже в этом случае?
0
28
5 лет назад
0
Vlod, в этом - ничего. Но обучать придётся вручную.
0
17
5 лет назад
0
PT153, можно по-подробнее о том, какой не ручной метод ты имеешь ввиду? самообучающиеся или что?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.