YandereDev. Умри героем или живи до тех пор, пока не станешь негодяем

Как за шесть лет потерять всю репутацию, доверие фанатов и стать главным любителем чаш с молоком

YandereDev. Умри героем или живи до тех пор, пока не станешь негодяем
769769

Так, объясните, как прогают искусственный интеллект, если не через if/else? Я не спец, просто интересно.

1

На самом деле конструкции elseif/switch в том коде влияют на производительность примерно нихуя. Просто доебались до стиля написания кода, можно было написать получше и понятнее.

7

Какое-то количество if-ов все равно используется, это основа программирования, трюк в том, чтобы написать ограниченное количество if-ов чтобы построить каркасс системы, а потом просто добавлять изолированные кирпичики в эту систему так, что система могла с этими кирпичиками работать сразу же без изменения кода самой системы.


Гугли
1) Finite State Machine

В паре слов - ты выделяешь состояния на ИИ типа "Стоять" "Бежать" "Атаковать" "Спать", в которых ты описываешь как это состояние обрабатывать(например, какую анимацию играть) и выделяешь правила перехода между состояниями (типа Если увидел противника, то перейти в состояние атаковать).
В итоге ты проектируешь ИИ сначала на уровне таких вот блоков состояний.
Но когда таких состояний становится много, тяжело добавлять новые.
2) Goal Oriented Action Planning
У тебя теперь не состояния, а Action-ы вроде "Стрелять", "Взять оружие" "Взять патроны", "перезарядится". У каждого действия есть предусловия, например, у Действия "Стрелять" предусловие "В руках заряженное оружие". Так же у каждого действия есть последствия, например "В руках оружие" у действия "Взять оружие".
В итоге ИИ на вход подаётся цель, например "Стрелять", а система строит сама последовательность действий вроде "Стрелять"<-"Перезарядить"
"Взять патроны""Взять оружие"<-

Система сильна проще расширяется по сравнению с предыдущей, особенно удобна для использования непрогоаммистами вроде геймдизайнеров. Но работает медленее, потому что построение плана это по сути A* поиск в графе действий
3) Utility AI
Написано много правил, которые подсчитывают количество очков "полезности" для АИ. Типа "Если враг водной фракции, то заклинания огня дают +10 очков полезности", "если враг находится близко, то заклинания ближнего боя +10 очков полезности", "Если врагов несклоько, то АОЕ заклинания +20 очков полезности", "Если маны много, то дорогие заклинания +3 очка заклинания". Прогнали ситуацию через эти правила * возможные действия, получили что ебануть кучу малых водных деманов лучше всего каким-то ближним кругом ебучего огня.
Сам такое не писал, слышал, такой подход хорош для игр типа Диссайплз
4) Neural Networks (в играх практически не используется)
Формируешь сеть нейронов, которые анализируют маленький кусочек данных, которые на входе, и дают на выходе сигнал, который определяется следующим слоем нейросетки с учетом весов важности предыдущего слоя. Оператор оценивает выходной сигнал как правильный\неправильный, и сеть перевзвешивается важность нейронов соответственно тому, правильный или неправильный был выход.

Через несколько повторений полчается такая вот непознаваемая хуйня, которая почему-то выдаёт правильные ответы.

Не используется потому сто тяжело обучать, и потом невозможно тюнить. Хотя вон написали недавно бота для мтаркрафта, который всех побеждает по-честному.

5