Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
: S4 f1 k- F: g) _
: i, h2 N! t* q5 J. CВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
' ]" F8 S- q" F- O$ m6 T0 k" qВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
( ^, Q" _; ^  R/ `Основные классы AI:
  • AbstractAI.java
    $ u+ z* @0 ]% W6 c  m; @6 F
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
        r0 m; d2 b' n$ v' y1 O
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        # [- b. f% u% Z' p
    Пример метода из AbstractAI:
    ! l% @1 a  l5 u  `( e5 O
) @0 i' T/ }) {: z* U0 d$ C
0 u1 r/ S7 t( d- ^+ x0 B7 }
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель). i+ L6 M. M3 M* ~) R0 P4 A
  2.     // Устанавливаем намерение NPC атаковать цель
    # Q0 R. t% R* W; k# w) @
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    + d+ h2 }% p$ Q! _( _  v. Q
  4. }( c/ R, k9 `& x8 F& Y1 {+ J
Скопировать код
    2. AttackableAI.java
, l% N8 D2 ?% j) m! Y! H3 g
1 [) H) ]0 d+ b% B0 r3 \
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:( x0 v4 c4 @( O
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      + V# W/ }: y4 K& b" ^
Пример логики атаки NPC:( s6 M1 [1 d; S' F8 \
  1. @Override
    . H/ U7 {4 c7 k- w' W: Y# U. r! z
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    4 L5 a) L- l: I0 a5 Z/ @
  3.     // Добавляем атакующего в список целей  a: j3 M+ Y* h
  4.     getActor().addDamageHate(attacker, 0, 1);  ) A+ z" o1 ~" F( ^4 i+ @8 l+ ]
  5.     // Если NPC не занят другим действием, инициируем атаку
      ^( v  [: [0 c/ @
  6.     if (!getActor().isAttackingNow()) {
    ' t8 |2 U, j+ k/ D, {
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    4 g/ `/ H8 R9 E& |1 H9 s! l! L
  8.     }& V$ n/ q4 l) e( Z3 i, O
  9. }* O% x& B& ~7 V7 M
Скопировать код
3. NpcAI.java/ @& C& @0 g, F2 j

2 A" R$ L2 \$ d/ u3 D
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    8 u" t5 ]* R5 p
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      5 o4 S9 ^+ o! g7 P3 t# n- j
Пример взаимодействия с игроком:
9 S6 Z5 b4 k9 @# A
  1. @Override- s, o4 F& f% [( q$ U2 m
  2. protected void onEvtThink() {
    + R8 t7 s2 ~! [7 s8 K  C, M& m$ L
  3.     if (_actor.isNpc()) {
    ! Z( Z6 [: Q3 J% i
  4.         // Открываем окно диалога при взаимодействии с NPC+ P& r0 K0 G: h$ m
  5.         _actor.showChatWindow(player);* P0 k5 Y- _% P" N8 ^; ?
  6.     }$ G9 R9 T$ j1 h8 y2 w
  7. }
    ; S* F& p0 F* ~$ n& I$ A$ j5 |" j
Скопировать код
Как AI влияет на игровой процесс?
3 M' k8 j) ?! _0 C' K7 R0 g3 l! [
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.( g! Y- x; k/ E; H& _* O  w' d
Примеры использования AI в игре:
% v/ E6 i" u; h! ^' t+ {1 D8 q
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события." o- U" O; s6 U" \
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
/ j* H% ~6 w$ {, w, X: m6 l9 p0 S' A! d$ ~0 u$ M# q
P.S.
& g/ i9 i+ j2 ~! @: A+ zКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
) c0 I, D* Y1 e3 U3 N; a+ P& B# r2 f. q/ l0 M9 Z
: r8 N- c( l( u- z5 B# W/ S

- N, b; q' u  m2 rИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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