Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
' x  k( A" Q- M% b+ @* ?/ `, u( J
1 W& L' l2 [+ Z! a3 eВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)./ P) Z3 W5 Y3 e6 G5 ?
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.  g0 ]* ?& G( _5 ^! ^7 {$ G
Основные классы AI:
  • AbstractAI.java
    " n" _0 b* u/ H: c; q$ i. W5 E
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      ! C* x- ~5 g( T+ P/ w3 }* Y
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        $ n1 Y- n" O; \  }
    Пример метода из AbstractAI:8 I, {% ?1 I( r; y7 I

( z% y9 j3 V: R1 D( Z, t* Y" _# O. x  ^3 g; ~) c
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    + Y2 B, n1 ?0 e0 [4 l( \# l% q
  2.     // Устанавливаем намерение NPC атаковать цель
    " ?8 w" @7 C. u. P" H
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    0 _6 T" L7 F, M% c/ \( K
  4. }: u/ W& R/ `6 h( d4 t3 }
Скопировать код
    2. AttackableAI.java( ]+ B  M4 U* b3 I& u2 i0 n9 |
4 f* ~; B! {7 f8 b+ ?" m; ]
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    8 y: M, r  Q6 ]5 [' [. ]  X) ]
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      ) w% ~2 Q4 f6 c( }4 i7 `: l# b/ W
Пример логики атаки NPC:4 W$ M2 A3 q/ ?
  1. @Override, ^& t0 t: n0 o* |& X7 f
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)7 Q1 N2 }; E. k( K
  3.     // Добавляем атакующего в список целей
    6 U# a& ?/ x0 N( B  g7 j
  4.     getActor().addDamageHate(attacker, 0, 1);  3 L5 _3 Y* W. Z" H; l1 t; [# w
  5.     // Если NPC не занят другим действием, инициируем атаку
    & G- s3 n% C; y' W2 ^! W  [( l1 l
  6.     if (!getActor().isAttackingNow()) {
    0 u* U( P  A7 M$ f3 l$ T8 k, Y
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    9 ?$ p( s8 n. u5 B" I" r
  8.     }
    ( U+ E7 h" i2 n+ W; D% U! n
  9. }
    # \, i) ]7 L4 a  U* Z
Скопировать код
3. NpcAI.java
; p1 h7 l' Z; t: o
5 s7 U+ F9 t) d' s/ _
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    1 P: ?5 l( l2 j1 F& Q. {/ C
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.. Y" D/ R1 X8 H) X9 W1 A8 x
Пример взаимодействия с игроком:: F/ D! M4 a' N) J
  1. @Override5 E! A$ m& G; m
  2. protected void onEvtThink() {; q- D7 S: n2 C" s1 M$ j6 p
  3.     if (_actor.isNpc()) {
    1 H8 m: m4 c- r7 {+ I* Q+ M; X
  4.         // Открываем окно диалога при взаимодействии с NPC
    8 l9 G6 ~) n/ I, U  W
  5.         _actor.showChatWindow(player);1 o6 m: [+ g" o! B* G. A
  6.     }% V. d0 i; }# R2 Y- d) e
  7. }% x" x& q( @& p7 {- l; B6 S
Скопировать код
Как AI влияет на игровой процесс?
2 b6 w& P$ ]* u$ N: P
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.) D3 |/ a. }# {8 H' U" }% M  p
Примеры использования AI в игре:; t; V, L  K! P* e4 _
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.3 n5 J# U- Y5 f4 ]# ^8 M4 P
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.6 }# {- D3 w* X0 [8 ^6 y: M
7 w0 R1 D. ]. `- N: w* k
P.S.
/ `* Z# r0 w, e, k* _6 gКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
/ z) C1 j! m0 Y' L
' S: C+ a; L- k
, r$ p2 C* |9 U# }5 d& X% S2 i  u* K, n" W9 d# e3 ?) E  S6 p' A: q
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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