Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
4 x5 t3 D& O7 I& G9 K7 e6 p3 ^% w; p$ N1 \5 m& f4 N  L7 X$ m
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)." @5 D' S# N- t5 E& E1 S1 Z
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.; i( ?9 l/ K2 \* k, m0 @0 c5 T
Основные классы AI:
  • AbstractAI.java
    9 M0 Z; z; g5 \4 I& z9 I/ a; f
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:8 e9 ^2 A0 b1 O. Y% B; a8 j
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.+ O5 n/ E  `# N- ]
    Пример метода из AbstractAI:
    ' K1 W' |( m. M( \# ^4 k4 |$ K  q
/ N+ t4 m* E- D( A7 g" h4 ?
7 O2 c; h4 ~/ A9 Z( m
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    " h# x1 H1 \, x, G- w9 [3 d
  2.     // Устанавливаем намерение NPC атаковать цель
    ' Y1 \" |/ Y3 q& ~( f' X
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  7 O5 D* K2 e: a5 f
  4. }
    3 p& {# ~* A# }0 v$ M+ V# L+ F* j
Скопировать код
    2. AttackableAI.java
% a+ _3 f7 n+ k) P5 \' _9 B" A' I' M# G) z1 r" f: s
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    ' A* E/ r6 \/ ]$ C+ w
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      ' k9 I6 B; O# j7 {1 J
Пример логики атаки NPC:
: t3 [5 w7 q" n5 K  e  J+ `
  1. @Override
    ! b' W: K' P, }- i3 U( U0 P/ h
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    8 [; g. B3 @. f) _) m8 B7 m* w
  3.     // Добавляем атакующего в список целей
    % h' h$ {( [# ^
  4.     getActor().addDamageHate(attacker, 0, 1);  
    $ K3 K! _* R: y
  5.     // Если NPC не занят другим действием, инициируем атаку  O% k2 A' T+ S; v4 S: @
  6.     if (!getActor().isAttackingNow()) {( g. O) j" F; U# o' ~0 n3 o
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего; Q% b& k1 k, Q! l% V& p
  8.     }
    ( n8 o2 d% I4 N8 Q9 W
  9. }
    2 g, p" }" Y' h
Скопировать код
3. NpcAI.java
) S  d6 u  h7 I; d2 B8 C0 A4 ]7 Y% X9 T4 B8 q
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    8 x6 N. ?* x' g$ q1 d' x5 G( l! R
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.4 _' s- |3 [5 C: H
Пример взаимодействия с игроком:# r' m. h0 f, _. l9 [. V
  1. @Override
    / c- h7 \4 E1 O% X- _
  2. protected void onEvtThink() {% Y7 F# Q: b$ ?+ F5 E: F
  3.     if (_actor.isNpc()) {
    * s( P! ^* ?; K( T0 T' [
  4.         // Открываем окно диалога при взаимодействии с NPC
    5 M5 g% r( q/ m) G5 }
  5.         _actor.showChatWindow(player);
    1 l; Z( x& `6 L
  6.     }+ k. {. c" J3 w3 b$ {, e0 S! M- x: b
  7. }
    : T% {5 I) z- _* Q# F8 c/ j
Скопировать код
Как AI влияет на игровой процесс?
* P( m2 F! \7 x4 `5 k$ A
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    3 J( V' u% i7 ?5 C+ K! {
Примеры использования AI в игре:7 S, d6 w( ^2 s
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.) u% i# Q+ E% j" z5 F( C
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.7 E' p, N" g* [/ ]/ B+ c
( i# `3 k- m! w5 z9 }+ o
P.S.
* f/ U" A7 y, t9 U  A  GКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?- u; X7 ^! s  y3 k

3 V) r! t0 n/ R
& l6 e# d# r$ r" T2 J9 N; f9 v* s7 x& l8 Q5 v6 L5 r
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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