Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius4 h0 G$ q) ?- @) |0 b; W5 w. E0 \' Y
* r% N+ I- Q# t6 V! }8 h6 \5 F
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).+ G6 C1 j& V% U3 d9 \6 Z+ h7 |' I
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
3 k5 [: Q* ?' \0 v* E% P+ TОсновные классы AI:
  • AbstractAI.java; c# o" X9 J$ F7 b% h) Q# E  o6 N# F1 ^
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      6 K3 u9 Y% [! ~7 y! f$ K" x
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        7 V0 n* A! K, I* M. m. u' g
    Пример метода из AbstractAI:6 `5 t. D8 d* G3 I, ~: G

8 v! h0 ^/ ~: M! |/ t0 S3 s( n! p
* B& c; a) |8 [$ K' p
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    # n' R' n0 r1 W* l
  2.     // Устанавливаем намерение NPC атаковать цель
    / u9 ?" r9 \$ ?$ g; k! j7 d
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    . C+ o" ?, p3 I* T# x8 o& ]# _
  4. }
      J& ~6 {7 ~* _6 g8 l! O
Скопировать код
    2. AttackableAI.java
& Q# ^" c; T' M" J9 S& _: A2 y' C  k  m) |
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    $ P; @6 a& [5 Q0 ?
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      - _( q6 J9 C# J/ D# Z0 j. ?" X8 ^! K
Пример логики атаки NPC:
5 H( o7 f! n& _% C) i# C4 |
  1. @Override' }8 k/ N& }3 a& b6 P$ W
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)# F4 y, Z( u0 @1 H
  3.     // Добавляем атакующего в список целей
    4 ^! y( w- L( l* G& E. k& {
  4.     getActor().addDamageHate(attacker, 0, 1);  
    * Y; K0 b9 v3 C* X7 y, `: y6 j  v: K
  5.     // Если NPC не занят другим действием, инициируем атаку
    0 b$ l6 G) e3 e4 n4 {2 D* |& E; h
  6.     if (!getActor().isAttackingNow()) {
    0 z" b( u$ Y! h" i" r) U! c
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    0 z4 ?0 U2 u! `
  8.     }3 B) r- ?8 h5 Z" y" X; T. G; e/ h
  9. }
      a/ G& D. v; D" G$ f) ~& b
Скопировать код
3. NpcAI.java' |; j% g9 U* f. @

% C# \: S; p( t1 o3 ^
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:* b( z" a1 i4 ~( [9 G. `3 F3 V
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.5 c1 z. N: e0 w" ?; T. y
Пример взаимодействия с игроком:& W, B9 O5 I: w+ N' l! I
  1. @Override7 Y8 O( t3 [! n$ Y3 o0 j/ Y9 T$ r! |- H
  2. protected void onEvtThink() {3 m1 b  }# @* r' C2 Y' @1 i
  3.     if (_actor.isNpc()) {1 x  i: z% T, Q2 l9 ?# Z
  4.         // Открываем окно диалога при взаимодействии с NPC  d: D1 ]8 i, W' }) i- ^
  5.         _actor.showChatWindow(player);$ p1 z* j/ @6 \: [
  6.     }
    0 E  P, W+ y* `! Y5 T
  7. }
    : Q9 j" ], [2 H# A: Y
Скопировать код
Как AI влияет на игровой процесс?5 k' Y1 V3 z( K
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.. h5 j  i: D/ D  a0 Q
Примеры использования AI в игре:2 E9 P% \  W3 ^: s
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.. d. t" @. }: O+ e& G3 S# `3 t
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
5 C3 Y: A/ i. @: N6 w8 T# J6 B3 k
# }6 {5 J% l( m9 ^& d1 k3 NP.S.
$ A$ H. u* Z+ a* W9 @  PКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?( m0 t" Z/ I: `/ z

! d* E9 k  e7 ~5 h( i) [4 d2 K! X# D9 U
1 F, x  m( e  [! f  J+ n
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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