Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius) F% B* A8 {) ?8 H% r9 ?2 ^

, l9 \8 ^0 b9 D; U8 g; c6 zВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
: _/ `. g: y7 L0 _. c5 c, f1 ZВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях./ F0 x1 K6 Y* E8 m# r
Основные классы AI:
  • AbstractAI.java* W/ L7 h, i" u
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:- v0 G2 P3 o( d' G) t5 W& w5 j
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        ! E4 Q! X  O) Q! o
    Пример метода из AbstractAI:
    4 U- ?: Z4 Q1 S: ?- p+ F
- V: o1 z7 L( A( v0 _

) K6 z' x0 b5 s, w3 H* V8 ^0 P
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)$ t2 ]- G: z0 \9 o$ f9 G
  2.     // Устанавливаем намерение NPC атаковать цель
    . s/ V4 M2 w3 J
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  . R( \3 x, h7 t2 M
  4. }
    * G6 c6 d8 V; s. W0 j+ k: e' C
Скопировать код
    2. AttackableAI.java
0 Y2 e" B1 B( ]1 U
4 D  O; G7 u/ m4 R' u' W
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    . |% N# K7 H9 @, t
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      4 }% [  d& B: w$ U
Пример логики атаки NPC:6 J" v% E. J4 e
  1. @Override
    ( K; [' ?" p& c) F+ j9 p
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ( I2 e& ~7 C9 W6 _. A4 g: U
  3.     // Добавляем атакующего в список целей
    , G: [' P, U" J$ ]) ^
  4.     getActor().addDamageHate(attacker, 0, 1);  / Z( z2 i7 K; n1 m& S: f5 ^: J
  5.     // Если NPC не занят другим действием, инициируем атаку
      L- q" B4 M$ G
  6.     if (!getActor().isAttackingNow()) {
    5 H* q" W; a/ E5 \2 G
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего& B/ J6 I3 W0 H+ |6 `3 B
  8.     }
    # k0 R& g7 @4 `/ Z* l2 @* }
  9. }" U6 J) n% I% a; e
Скопировать код
3. NpcAI.java
& m- k/ [$ i& e7 C9 e% N9 p# j$ f5 R
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    8 L% |) @/ D' t4 V
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.: P5 I7 ?$ V+ @, ~: c2 o( `8 ]
Пример взаимодействия с игроком:
/ k5 |8 J5 T# Y0 ?
  1. @Override
    + a* x' {1 W8 G% _( j9 Y/ v. P
  2. protected void onEvtThink() {* P/ K  l: V3 `2 i% B0 p
  3.     if (_actor.isNpc()) {) R0 M( u# I4 V% w" N( u& N
  4.         // Открываем окно диалога при взаимодействии с NPC* A/ d' s6 |6 l# u9 R' L  Z
  5.         _actor.showChatWindow(player);
    : f; V" j" d" E! a
  6.     }
    4 Z  G  C* @* {5 S5 z) K
  7. }6 r7 l* i/ J3 W* T; M; C
Скопировать код
Как AI влияет на игровой процесс?
! F9 W7 r- g6 O5 ?8 M" S
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.- G& J2 V" f6 V6 K
Примеры использования AI в игре:$ J) R2 V' ]/ o7 b" `  w5 m1 {
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.; ]' g) \$ ^4 {+ D% ~" M% o5 ?0 i
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
& _" F% E8 C- e6 E8 d2 ?* j+ y  @/ e7 I  x4 r
P.S.
/ `# G& Q9 H* v4 @4 h" C& }Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?# h- y2 J& L; D& Z' X/ w; |
$ ~$ j% X( R7 q* m, X) c: g/ P4 e7 y

5 @3 e* Z0 a  w& |0 E" K0 v9 _" ?0 n+ C, ^" |9 }- V) R0 t
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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