Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius3 r. I) Y  j* l8 |( ~  J3 }  s* Q- w; E

6 _2 A+ b3 |0 }0 @3 dВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).2 S* K) u4 r  L
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.4 _2 i6 X' h7 F3 {% A3 ^1 H% \( d9 J
Основные классы AI:
  • AbstractAI.java3 m& X9 ?2 K% j/ V8 u' E( ?( u
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:4 \& \- W7 X% R6 {3 d$ x5 S
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        7 Z9 T2 Y" _3 {5 \" a
    Пример метода из AbstractAI:* F: W& ~* _9 Y
) A4 M' o" m6 r
1 `; [% p, y0 F
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)( N9 U/ a. \  p+ F
  2.     // Устанавливаем намерение NPC атаковать цель4 g3 N- h1 @" ~: I
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  5 ^) X7 D* p* N" L. E
  4. }/ ^0 D* x6 l# v3 D( h! R' c
Скопировать код
    2. AttackableAI.java$ ?; K# f8 L9 w3 G
3 B9 v4 z, u0 f! b0 l% }# E
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:7 R9 }' O4 }. f: {4 J3 O' K' s
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      2 T' q: `, [1 j9 F1 K* S
Пример логики атаки NPC:! i0 i# n2 }1 d/ H3 P, w% `2 }' g
  1. @Override( }& j5 S8 [/ L
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ) w; o; k& D3 J0 b3 _/ z
  3.     // Добавляем атакующего в список целей
    6 y" g" g/ a; @* v& h
  4.     getActor().addDamageHate(attacker, 0, 1);  
    ( u( }8 D& m1 ?- {
  5.     // Если NPC не занят другим действием, инициируем атаку
    . p# e- G8 \- I2 o* x9 p
  6.     if (!getActor().isAttackingNow()) {& b) j% G9 D' T: J2 N
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего' K) Z- c' t7 \0 Q( q
  8.     }
    7 N" v; W) Y  H' n. u% o3 V
  9. }' y# B2 T1 U9 W3 \4 {6 ^
Скопировать код
3. NpcAI.java
1 r3 D% `# L7 W
) A+ z7 T+ I( ?, P; G
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:  W5 M( L3 K  f* m/ f# v3 q
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      % c) [/ W$ C+ M# A" F7 U
Пример взаимодействия с игроком:# A* N8 g( o/ x/ A5 |
  1. @Override1 Y8 Z+ l8 a, v, l6 T  [' }: k
  2. protected void onEvtThink() {( o4 L: o, ~" X  _
  3.     if (_actor.isNpc()) {
    7 k( M2 Q. \3 P! i6 _5 C
  4.         // Открываем окно диалога при взаимодействии с NPC
    # e9 m% Y* Y! n8 s2 q
  5.         _actor.showChatWindow(player);7 y0 S0 U! s" a5 f, K) {! ?
  6.     }4 o* R8 E: `  z& }. S% H
  7. }; y5 F3 }5 h( b' D( O6 U* G
Скопировать код
Как AI влияет на игровой процесс?
6 [) H; W. B8 ^( i# t( y
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.  S* G5 R# n5 ^& R3 T" Q
Примеры использования AI в игре:
% H- r* J2 O9 I9 q* _
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    9 B; C- j" q4 Z* o6 T' Z2 _( a. y- ^
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.0 ?- e- ^. m+ W2 s

- u0 C* Y# Q6 k% ^P.S.1 [! w9 U! A! f, M
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?  n; k) E, `% g

/ ^+ A  ~3 b2 V" H9 {7 [0 w4 d
4 r$ ]5 Q- ]7 J' R
/ i; {" e1 S4 M' g" YИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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