Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
. P2 f& r& l" ]" C3 m/ t! \6 h3 Z" s( W% d  }
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).8 s  }/ L( g5 [
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.. e& G1 J, z9 T0 A
Основные классы AI:
  • AbstractAI.java' N: r! W5 V! K+ L$ r
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:* Q) g- }+ ~$ x2 ?9 z# E
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.* c* S9 [7 o4 M/ e/ c
    Пример метода из AbstractAI:0 c3 R5 p8 z: N: @% O4 m4 f
% u; [9 A% F( d5 t
. C4 s" Z' X% b$ }
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)9 f4 x% I8 o- u4 g  D: C
  2.     // Устанавливаем намерение NPC атаковать цель
    # w  `8 z  l% b: X
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  9 c# t# ~% W3 m  B& @
  4. }
    1 z- \: q  N7 \2 Z/ t- s" g
Скопировать код
    2. AttackableAI.java4 O; y5 {7 {! V- H8 w7 r* t
$ b6 s' }/ Q4 [# O
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:, [- B) u% H5 _/ J- |: n% h. ]
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      , k' Z5 L9 T3 Q9 W  p) ~* ]; z% \" @
Пример логики атаки NPC:$ s; b! p% V2 _2 w9 G
  1. @Override" D! A, ?( n* ?6 y; K) i$ [
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    . P8 c) O. C4 s& U0 g8 N, I8 c' j
  3.     // Добавляем атакующего в список целей
    : B- A$ S! G' o9 f5 N7 v# _
  4.     getActor().addDamageHate(attacker, 0, 1);  
    . {6 T3 I  }( W/ S8 w
  5.     // Если NPC не занят другим действием, инициируем атаку
    + L# }) v) X8 [" n( N% [
  6.     if (!getActor().isAttackingNow()) {
    , e$ {3 |5 g0 |7 R, X
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего! _4 e3 }! C+ Z
  8.     }7 o5 |1 Y- O! A/ X, V6 M$ V6 R; d
  9. }
    * f% x. s4 Y0 l2 D
Скопировать код
3. NpcAI.java' S' I( ?  j' p5 A" Y. m/ L( [

0 h9 S& ^7 a+ c+ _+ C8 d
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:1 f+ R. i# i! H# H
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      $ l- H$ Z+ K1 G; W% F: z" O! X! H
Пример взаимодействия с игроком:
$ ?- D8 \8 d/ a
  1. @Override
    : E$ R& b3 H5 t, H" T- R, p* h( J
  2. protected void onEvtThink() {
    ( @5 v$ A8 R* k/ [
  3.     if (_actor.isNpc()) {
      q+ Q0 r7 J& i1 _
  4.         // Открываем окно диалога при взаимодействии с NPC
    " L" l5 a: G" C9 R2 H/ D( |
  5.         _actor.showChatWindow(player);) z& w" W/ X$ n- Z
  6.     }
    8 \; L1 [: E3 p; l# H9 o
  7. }
    * W2 H1 v$ y" K; C' Y3 O
Скопировать код
Как AI влияет на игровой процесс?, [; R% \8 ]3 }5 |, O" Q& M$ i. S
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    # `! [. E1 O& G6 ]5 T1 _
Примеры использования AI в игре:8 ~. n2 v# h3 z" s
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ! K. s1 r. c  M
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
. m* S' ^; R) }( {3 o  ?( {* [, M
P.S.( C- }4 ?+ |- J6 U) |) c. Q
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
1 G+ \0 Q; ^- j- a6 Z- Y. j! Z0 c8 K+ F9 R

9 @1 G' O$ s8 b' W' m  _6 g5 e
) Q3 e6 t/ m9 m$ J; d6 y/ g  `Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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