Top.Mail.Ru

[Руководство по Java для L2J] Роль AI в L2J_Mobius

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius4 Q5 q% x4 _, k# \7 ?5 H2 V2 t, C

4 W* l8 {- w# W7 YВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
2 ^( x  ]6 v$ D# {) tВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.* _' |. J0 d/ Q, u! m& O
Основные классы AI:
  • AbstractAI.java
    ! @8 i/ P/ {/ J
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:  z! M2 m) @% i
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        1 s  C7 O6 o/ d: S
    Пример метода из AbstractAI:3 H) W, D" O$ S$ X+ n, \5 `# H5 P7 D
' P, h* K- v1 t+ Z
" J9 t! C0 P! k" f  _; D4 o+ Z
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)* p0 J; |  H" a% G
  2.     // Устанавливаем намерение NPC атаковать цель& C0 I/ f& h2 G& i4 Y
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  ( z3 }, c- I6 q
  4. }7 N4 V2 X. n. e6 ?) ?4 k
Скопировать код
    2. AttackableAI.java) x: {6 Q3 {! r0 r8 J9 p4 w
2 A" q/ c, u0 a2 ^; ?% O
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:5 ?, K$ I) b" C3 R
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.4 d$ C" u( C9 m& W
Пример логики атаки NPC:. c' y/ ~) O* l+ {8 p) W+ q
  1. @Override
    8 ]% t; r4 C3 ^7 z
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)7 ~% Q2 w7 P* h/ g! o% ^
  3.     // Добавляем атакующего в список целей
    ) t9 w, ]+ k5 a, y3 V* E
  4.     getActor().addDamageHate(attacker, 0, 1);  ( s1 Q: x! B$ U* v5 V5 Q( r' h
  5.     // Если NPC не занят другим действием, инициируем атаку* O3 F2 J& _3 Q9 p
  6.     if (!getActor().isAttackingNow()) {+ ]! Y4 K9 C4 T4 Q
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего" o$ f. Z/ K2 m$ O4 w: F7 c
  8.     }
    / j6 h/ A6 R# k! ^; q$ @' n4 N' c8 h
  9. }) J* y+ m7 O9 E, q7 W
Скопировать код
3. NpcAI.java
8 F9 R# p  ~1 Z+ Z  D4 {, z2 u, A  x) s# D; y/ o- ^
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:; N! x7 y- T7 U3 p+ r
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.3 q9 c) z# k  `5 _  x' K* b
Пример взаимодействия с игроком:0 y4 C1 N* A. W
  1. @Override+ `/ p9 Z9 ?" N
  2. protected void onEvtThink() {
    # e+ E% J( \7 Z8 q+ I) O! w+ p
  3.     if (_actor.isNpc()) {
    8 U; D, V5 h* n
  4.         // Открываем окно диалога при взаимодействии с NPC
    : Z% \1 O9 J  h$ n
  5.         _actor.showChatWindow(player);
    2 ^8 l9 S! Z2 J, M( q$ e! l! Z
  6.     }
    ' S8 t6 L5 {; n0 z
  7. }- X, z" M' S' P- B/ ?9 f3 d" ^6 q
Скопировать код
Как AI влияет на игровой процесс?2 U' w. Z) L3 u: X$ y! t" ^
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    5 x. |9 W, @# p/ \
Примеры использования AI в игре:
3 Q  U2 g5 U1 s/ ?6 ~
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ( D/ C" b6 k7 H
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
) f( z, o2 }; g+ s/ q* f9 W6 R
) X& D4 W, K- e" ^# s, rP.S.
; B/ T/ ?+ c( u7 U5 v/ Q2 HКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
8 A) I8 j7 m/ [3 F
5 T7 _- Y9 Q( x0 K/ L% t' a
+ d8 M1 Q( e4 R. k/ J+ y/ M
( N+ L4 O- n+ V- [# X+ S& b0 ?Из группы: Lineage 2

Сообщение слишком большое

Для просмотра Вам необходимо авторизоваться Если Вы еще не зарегистрированы, перейдите по ссылке:Зарегистрироваться

x
Чтобы ответить, вам надо авторизироваться в системе Вход | Зарегистрироваться

Правил начисления баллов

Опубликовать
Сектор творческих людей
Горячая линия

638638758

С понедельника по воскресенье с 9:00 до 23:00

Обратной связь

admin@artace.ru Онлайн

QR-код

Powered by Discuz! X3.5© 2001-2021 Comsenz Inc.