Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
8 |5 Z+ u4 ~: I) i0 ^: B* E# w
6 f& |' f! j; i' P0 t: yВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
$ Z3 h+ P# P& e" N- |В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.: P/ f$ ]! [) I3 g+ V% P. ]8 d
Основные классы AI:
  • AbstractAI.java
    * M* _0 o$ i; d" l/ K
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:, F  ~  A3 g& s; O$ J
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        . T$ X4 y4 J% c  q$ z' R! b) Z& s7 z
    Пример метода из AbstractAI:
    5 O" s, @' [6 f. |5 {
3 {: Y, s5 h$ z( f# d1 a

  r6 l% p( I8 X( Q- g; o4 [& _
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    1 V4 E/ u  M7 K( L( Y
  2.     // Устанавливаем намерение NPC атаковать цель
    3 V; }# o. G$ b% D+ C6 J0 G) o8 q! X
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  : k& e1 |3 t6 Z7 c/ C% w
  4. }0 S6 A3 L1 C5 u; b
Скопировать код
    2. AttackableAI.java/ i7 C& x; [9 y' o
1 w, J& i' k& C& N2 n, ~4 x1 c% H. \: f
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:! @; V. i6 V0 K" \: g3 Y# W. }
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      ' N8 h6 a$ U2 D/ A+ J  v! b8 p& r
Пример логики атаки NPC:+ y# B% D9 f7 e* I8 \6 J2 y$ S
  1. @Override6 c. A$ F9 _5 W4 R8 }4 q) b
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)2 t; D9 b" C8 _5 m9 N) E4 u
  3.     // Добавляем атакующего в список целей
    ( B/ F" Y, F- e8 L
  4.     getActor().addDamageHate(attacker, 0, 1);  
    " e! T$ W; e) p8 K
  5.     // Если NPC не занят другим действием, инициируем атаку0 b* Q! ?( K& x/ O; S5 n/ l- b& q4 x
  6.     if (!getActor().isAttackingNow()) {
    " g% Z: F  O0 ~9 U* s
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего! }' [' U. G0 t2 I( H
  8.     }
    6 E/ Y+ N" k5 H" h* ^( P3 a
  9. }7 P  l" k' M' T+ f
Скопировать код
3. NpcAI.java% b1 e& k4 w1 s! q9 k

/ P- l( |) b/ R; c, V
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    4 `% r" I6 d4 L' @! _
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      6 G; i  m$ |! u( k/ q
Пример взаимодействия с игроком:
' Q) v' K/ O( y. |! d* W2 O' U
  1. @Override
    , ]5 A7 u3 x& G/ v. u& I8 X
  2. protected void onEvtThink() {. h/ W  P) ]5 E' c3 r' |
  3.     if (_actor.isNpc()) {
    7 `$ L+ b5 [( P1 t0 g+ e
  4.         // Открываем окно диалога при взаимодействии с NPC$ H, [4 `4 K2 S
  5.         _actor.showChatWindow(player);5 [0 Q8 ~0 Q+ e
  6.     }0 c$ ]* D4 \1 S- C
  7. }
    . A2 S; e" |# B* d% f6 j  ~7 m" ?
Скопировать код
Как AI влияет на игровой процесс?
% Q/ Q3 d; |9 x$ y# [1 [
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    & `4 w3 U0 r9 @$ D' b
Примеры использования AI в игре:
: k$ I8 ^3 C, k' |  G
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    5 H5 ^# H8 }& V" i) q) i1 O" Y4 h
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
8 d. q& E8 F( `4 [* X7 O- y* l: \/ ~) n! A. I' X1 [! O
P.S.
) X9 e- T  g; S8 |4 bКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄, v3 f  [+ h; ]6 |+ n; c

1 j! p' n: ~7 C; a; d2 ~
; }$ X# N- I2 [/ q1 C  `
, h7 ^! z! n- f7 PИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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