• Гость, темы в этой категории создаются через Ресурсы!
    После создания туториала в Ресурсах в этом форуме будет автоматически создана тема для обсуждения.
Простенький ИИ

Простенький ИИ 2019-01-23

Нет прав для скачивания

MaximPixel

Каменная лига
Сообщения
637
Лучшие ответы
14
Симпатии
12
#1
MaximPixel добавил(а) новый ресурс:

Простенький Искусственный Интеллект - Добавление искусственного интеллекта к своему мобу

Для начала выясним как работает ИИ в Minecraft.

В классе EntityLiving есть список возможных заданий (или действий) и у каждого задания есть свой приоритет. Сильнее приоритет, тот который меньше другого. Допустим чтобы моб не тонул, когда пытается ударить кого-то, то приоритет на плавание нужно поставить 0, а приоритет на преследование 1.

В обычном Minecraft есть следующие ИИ-задачи:
  • EntityAISwimming - плавать
  • EntityAIAttackMelee - атака врукопашную
  • EntityAIWanderAvoidWater...
Узнать больше об этом ресурсе...
 

Maxik001

Золотая лига
Сообщения
4,128
Лучшие ответы
37
Симпатии
404
#2
Пока оценку ставить не буду, посмотрю что дальше будет. Сам немного в АИшках уже разобрался, интересно будет другую точку зрения почитать. Даешь гайд!
 

RareScrap

Каменная лига
Сообщения
375
Лучшие ответы
12
Симпатии
80
#3
Инфы пока кот наплакал. Все то, что есть в гайде легко выясняется самому через поиск в IDE. Лично я жду от этого момента объяснения различных тонкостей, связанных с AI.
 

MaximPixel

Каменная лига
Сообщения
637
Лучшие ответы
14
Симпатии
12
#4
Нужно добавлять весь код с комментариями или добавлять коды с пошаговыми действиями?
 

Maxik001

Золотая лига
Сообщения
4,128
Лучшие ответы
37
Симпатии
404
#5
Нужно добавлять весь код с комментариями или добавлять коды с пошаговыми действиями?
Там по сути всего три метода с которыми надо оперировать
shouldExecute, startExecuting, updateTack.И в них типа писать что надо делать мобу. Т.е условия и как действовать в зависимости от условий. Вот тебе и весь AI. Вот мне например интересно как сделать чтобы энтитя искала в радиусе например 16 блоков блок огня и залезала в него. Пытался вчера сделать, однако не понял про предикейты и как в этих предикейтах работает apply()
 

iconst_1

Золотая лига
Сообщения
1,741
Лучшие ответы
47
Симпатии
280
#6
Предикейт это обычный интрефейс который как и любые другие можно заимплементить классу и там реализовать.
Но предпочтительнее, намного, использовать лямбды. В его метод подается объект - он возвращает 'да' или 'нет'.
Фильтр например какой-то
 

hohserg1

Золотая лига
Сообщения
3,287
Лучшие ответы
83
Симпатии
217
#7
Лучше смотреть на предикат, как на функцию A->Boolean, т.к. именно так они юзаются
 
Последнее редактирование:

Liahim

Золотая лига
Сообщения
2,947
Лучшие ответы
32
Симпатии
161
#8
Два вопроса:
1 - что есть citizen?
2 - при выяснении возможно ли действие и при его начале мы два раза обращаемся в созданию пути... А нельзя ли это оптимизировать как-то? Например, если путь не равен нулю, то запоминать его и брать уже из начала таска.
 

MaximPixel

Каменная лига
Сообщения
637
Лучшие ответы
14
Симпатии
12
#10
А нельзя ли это оптимизировать как-то?
Я брал информацию с исходников и как это реализовано в самой игре. Можно конечно оптимизировать, но это на твоё усмотрение.
 
Сверху