GM2 9: Возвращаемся в процесс, тупим над ИИ

Ссылка на основную статью 2-го сезона полного провала разработки.

Хотела выкладывать по статейке каждую неделю, но не задалось. Я втянулась, ознакомилась с кодом, вспомнила алгоритмы, добавила комментарии, главное меню с настройкой числа игроков и начала внедрять ИИ.

Про ощущения

Ощущения хорошие. Неожиданно вышло как с дипломом. Вроде, лень начинать, но стоит открыть, как процесс идет сам собой. Начала с малых правок и втянулась в процесс. А вот писать тексты немного лениво стало.

GM2 9: Возвращаемся в процесс, тупим над ИИ

Алгоритмы ИИ

Сначала думала встроить ИИ напрямую в код, контролирующий ход всего игрового процесса, но задумалась, что не стоит засорять алгоритмы. Вынесла ИИ в виде отдельного объекта, который берет данные из объекта-контроллера, работает с ними и воздействует на игровые сущности наравне с игроком, как сторонняя сущность.

Для начала наладила получение ИИ игровой информации и алгоритмы влияния на кубики с картами, это было несложно. Сложности начались позже.

Получилось вполне наглядно.
Получилось вполне наглядно.

Через простую проверку условий ИИ может распределять кубики по ячейкам, которые сразу же закроют проверки на навыки, но остаются висеть незакрытые проверки.

Чисто логически нужно запустить второй пробег, подключая теперь и карты предметов с бустами, однако может сложиться ситуация, когда карты под незакрытую проверку нет и нужно переместить уже размещенный ранее кубик на другую позицию.

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

Варианты решения

Первый вариант самый простой, забить на перекладывание кубиков. Игрок все равно не видит, какие у ИИ карты на руках, а значит, не заметит разницы между реальной неспособностью ИИ пройти все проверки и этой маленькой тупостью.

В этом примере первого варианта будет достаточно.
В этом примере первого варианта будет достаточно.

Второй вариант - поменять порядок распределения. Сначала раскидывать по проверкам карты предметов и потом уже добивать их сверху кубами.

Третий вариант - создать массивы помощники с упорядочиванием кубиков и карт предметов от самых малых значений и бонусов к самым большим. Работа с такими массивами устранит необходимость в дополнительных проверках и условиях.

А в этом нужно уже подумать, какой кубик переложить на другое место.
А в этом нужно уже подумать, какой кубик переложить на другое место.

Четвертый вариант - сменить подход. Вместо циклов с пробегами вариантов создать массив всех возможных расположений кубов и карт предметов с оценкой их успешности и выгоды для ИИ, чтобы по итогу выбрать один. По идее, это самый хороший вариант, но я пока его не сильно обдумывала, потому не знаю, какие там могут возникнуть подводные камни.

В общем, пока подумаю, возможно, остановлюсь на халявном первом, а потом уже попробую внедрить другие. Еще думаю написать обзорную статью с разбором принципов работы алгоритмов проекта. Может, будет кому интересно.

99
22
11
30 комментариев

Ничо не пон, где картиночки, графику посмотреть.

2

Вся графика на экране

3

Крутяка, разрабока идет

2

Первый вариант самый простой, забить на перекладывание кубиков. Игрок все равно не видит, какие у ИИ карты на руках, а значит, не заметит разницы между реальной неспособностью ИИ пройти все проверки и этой маленькой тупостью.

Как бы да
НО КАК БЫ и НЕТ.
Например при "карточных играх" это на большом диапазоне матчей начинает чувствоваться - читерит ли ИИ или нет?
Причем буквально на уровне подсознания - когда мозг такой "ага я понял как это работает!"
Например в том же покере очень важно учитывать не только какие карты в игре - но и какие выбыли.

1

Тут есть и оборотная сторона. Тупящий ИИ будет поддаваться игроку, а не размазывать его в хлам.

А насчет подсознания не уверена. Я уже дважды принимала честный рандом за сбой, а потом проверяла и убеждалась, что все в порядке и так должно быть.

1

Приятно видеть ещё одного разработчика) Будем надеятся, что сможешь найти время выкладывать под статье в неделю.

P.s. оформление кода - жуть. Одни скобки чего только стоят.

1

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

1