Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius) T  H1 V$ C* ]; q7 X: c2 s$ M3 A
. x7 a9 e/ m) T2 @
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).7 v) F0 N8 |( B
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
& S  @& H7 Z( Q. ?! EОсновные классы AI:
  • AbstractAI.java
    , V8 E  x5 {( L3 a6 M1 h
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:% I& ]5 T$ x2 x
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        2 p# x, ^7 }3 ?, [6 b+ ^) e
    Пример метода из AbstractAI:" o, J/ X) G( a9 t

* X, H8 ~) H; w3 J7 n) L: t% z1 u* _  E+ B3 g
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)3 B6 R1 c: U: z1 [6 L
  2.     // Устанавливаем намерение NPC атаковать цель; ?9 V2 q' n" `8 e2 u
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  ; ]5 z1 ^( o2 }' y* t/ R$ M7 q
  4. }& [1 J. k: V8 \! G1 F6 L4 N
Скопировать код
    2. AttackableAI.java! Z6 A  |$ }- V) `0 L$ w6 i  |
! ~% y! f/ Y, @0 E3 A2 Z
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:0 d4 Y  B0 s3 d2 n3 Q# j+ m
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      7 t) K+ h4 ~/ y1 `. v& l1 c' X2 d5 L. `& M
Пример логики атаки NPC:5 D! E# H2 h6 S7 q$ F
  1. @Override
    9 }* g$ S" ^3 P: w( S4 o4 d
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    , g4 x. q" ~5 g7 m
  3.     // Добавляем атакующего в список целей
    # \6 ^* R0 f+ }- d8 H( @9 P0 x
  4.     getActor().addDamageHate(attacker, 0, 1);  
    ( H. [: I9 V& ]) ]6 ?% V
  5.     // Если NPC не занят другим действием, инициируем атаку
    ) Y$ s$ N" m: t( U  J( T5 l; a9 c
  6.     if (!getActor().isAttackingNow()) {+ F1 \- i$ G: {2 u) `
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего* v3 f" b: X" }4 h5 B: s
  8.     }
    9 o  N5 j2 ?, K/ _. w' l
  9. }
    ' O' Q3 |- X# e' n! q4 e6 c
Скопировать код
3. NpcAI.java
" F( x7 k3 r% z/ n; d6 |& I* k# T4 H7 o! Q# v4 x( B& ]
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    5 U( m# d5 H  F* r$ s
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.) f7 e* k3 N, f, u9 M
Пример взаимодействия с игроком:
( X" a% L. }7 S% c! S
  1. @Override* N% K, D6 f( ]  z8 A
  2. protected void onEvtThink() {% r) R1 y" m8 ?- ~6 P* K6 L. Q
  3.     if (_actor.isNpc()) {
    1 S& R) F! p! E8 E7 U  w8 h
  4.         // Открываем окно диалога при взаимодействии с NPC
    ! @& ?4 w/ f! c! H! i7 \
  5.         _actor.showChatWindow(player);8 |- E* T" h( R( U. b( B2 @
  6.     }
    5 T+ \9 ^0 K" \
  7. }
    ! t$ q6 o# ^2 `& @
Скопировать код
Как AI влияет на игровой процесс?5 n4 p! Z: {- {* m
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.3 j6 y8 C9 f; `# m- B, h
Примеры использования AI в игре:$ T) |: K. v6 ^
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ' e: B$ D) G1 C& E- U
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.( w) B3 d5 {0 j! H5 Y

) c4 B8 ?$ o4 NP.S.6 g. A  B+ a( I# C8 }
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?; p. Y9 T/ {0 Z8 w

. G4 N" ~' t8 O! @* g1 S
+ G* x* U* V8 j
( K" k" c1 Z" z$ l% hИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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