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

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

Прежде всего, нейросеть для старкрафта сидит вне клиента игры. Спрашивать потянет ли это движок не корректно потому как движок то тут ни при чем. Правильнее ставить вопрос,реально ли реализовать интерфейс для взаимодействия нейросети с игрой.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
5 лет назад
0
В Reforged скорее всего будет, но о реализации на Lua, то есть внутри карты, сомневаюсь. Ведь нейросеть подразумевает серьёзные вычислительные мощности и обилие кода. Запилить обучающегося бота ещё можно, но называть его нейросетью слишком круто.
0
15
5 лет назад
0
8gabriel8:
Да, так как данные нейронов и весов нужно где-то хранить вне карты и менять их после каждого инстанса и подгружать обратно. Но это чертовский интересное направление.
4
32
5 лет назад
4
на мемхаке можно в 126 патче, 131 не даст выйти в инет
Но нейросеть не нужна в варе как таковая, ибо какой смысл делать самообучающегося непобедимого бота который будет с каждой игре всё сильнее и сильнее, когда в варкрафт на сложности easy играть не каждый может.... У меня есть небольшое исследование на эту тему, где я данные от пользователей отправлял на FTP сервер, и скачивал инфу с сервера... на сервере уже можно любыми мощностями обрабатывать файлы от пользователей и что-то из них компоновать..
Смотри в моём профиле:
К сожалению щас мой сервер отключен и на практике не увидеть как это происходит, так что придётся довольствоваться только теорией, ну и я вроде ещё как тут...
Также есть возможность через внешнюю программу обмена данных и прелоад делать, то что ты захочешь, но опять таки, а кто будет качать то это внешнюю программу, если и на проект глянут 3,5 человека
7
24
5 лет назад
7
Прежде всего, нейросеть для старкрафта сидит вне клиента игры. Спрашивать потянет ли это движок не корректно потому как движок то тут ни при чем. Правильнее ставить вопрос,реально ли реализовать интерфейс для взаимодействия нейросети с игрой.
Принятый ответ
2
32
5 лет назад
2
Ну вообще, если можно это будет назвать нейросеткой, можно сделать крутого бота на прелоаде, который обменяется данным с другим ботом в сетевой игре. Допустим есть игра в которую часто играют и в соло и по сети или же по сети но с разными людьми, и в принципе... через большой промежуток времени у нейросети смогут появиться данные обо всех играх вообще
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, можно по-подробнее о том, какой не ручной метод ты имеешь ввиду? самообучающиеся или что?
0
28
5 лет назад
Отредактирован PT153
0
нечто похожее на AlfaStar
AlfaStar обучался на реплеях. Чтобы сделать также, нужно как минимум API для реплеев.
Будет API для реплеев - НС можно будет обучить по ним. Будет API для связи с сервером - можно будет сделать НС с самообучением.
Пока из этого ничего нет, потому НС можно обучить вручную, то есть выписать кучу данных и применить алгоритм обучения на них.
0
24
5 лет назад
0
Ну, допустим, реплеи парсить и использовать для обучения внешней сети можно и без клиента. Если сетке не ставится задача распознавать изображение на экране, как это делает AlfaStar.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.