Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius3 I7 R4 V1 F( e2 r9 ^, M: g

9 x! K$ v, x7 BВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)." j; n- T) U; R' X
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.) q$ a6 C4 K1 w! f  |. M3 ~& k
Основные классы AI:
  • AbstractAI.java
    8 m$ Q: [+ r: W0 Z) R
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:9 x9 c3 U# ]# {4 Z. {: ]  [
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.( C) |# ~6 j; v, H( \! X! Y- p3 D
    Пример метода из AbstractAI:
    - W- I6 p% u4 E9 H7 v2 p

3 s* V  L; t1 N0 ], p0 t5 Q/ g$ G- ]9 r. s
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)) u8 p1 V# Z% I
  2.     // Устанавливаем намерение NPC атаковать цель; b$ e3 {  O8 T
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    0 B& P! n8 z+ U; s
  4. }
    - w" [! W: q0 L
Скопировать код
    2. AttackableAI.java
9 G. D7 G1 W/ b- R. r$ X( m, i, t+ Q
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    + h7 U; }% H. R! E1 H6 t3 l
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      $ q4 s1 b% R, j
Пример логики атаки NPC:, U! q0 y/ M* x2 A
  1. @Override8 g3 W3 n5 Q8 h
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)) b: p0 c9 |9 E. f  L: D3 n5 p$ f
  3.     // Добавляем атакующего в список целей9 ]2 a" N$ {/ z0 s
  4.     getActor().addDamageHate(attacker, 0, 1);  
    ! g$ H; \7 M) _
  5.     // Если NPC не занят другим действием, инициируем атаку
    4 l, W' i( P1 Z9 z: g0 f- c4 |1 H
  6.     if (!getActor().isAttackingNow()) {% X- d: n( s: c* }6 K* I
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего5 A' C* t2 P4 d; _$ m9 e
  8.     }0 f9 v4 }1 ^: ]
  9. }
    + ?( E  S: b/ F& i: U8 Q
Скопировать код
3. NpcAI.java
1 j# i: J* j8 l1 }, E5 z
" h  W, J  t8 U5 e
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:7 F0 r% h* h; [2 Y0 i' v
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.) G" {8 ~: Z4 k# G) {, L9 h5 e; p: F
Пример взаимодействия с игроком:
" c8 K  M) G$ B2 [+ Y2 d, V
  1. @Override/ ?' j+ x2 U5 ~9 \4 T2 W: Q( z
  2. protected void onEvtThink() {
    7 f* Z* G' I! D, }4 C
  3.     if (_actor.isNpc()) {/ x. ~& j; v% P: F3 F
  4.         // Открываем окно диалога при взаимодействии с NPC7 a3 G& ~  ~' `. o% \; `  N! v; U9 {9 p
  5.         _actor.showChatWindow(player);
    + ^7 _  F- ~5 S/ w1 c
  6.     }  _) y* }9 L: G& o$ e" t: c6 j
  7. }
    9 q' h& ^7 o( \+ _7 `( p
Скопировать код
Как AI влияет на игровой процесс?+ m$ R6 X. _+ r$ x
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
      S8 [0 P8 I  k+ p1 o2 `2 l. [
Примеры использования AI в игре:5 w2 B. u% ~) V7 X
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    , M) k4 o. d3 L  w1 j* k8 n: V
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
5 \: W. T3 P' F7 k5 n* k2 r
% z- k  t0 z! z7 a6 }3 u0 pP.S.
9 S: y4 \& ^. M3 BКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?2 ^0 b7 X  \5 F/ U

% \9 \, Z. U& h# Q# V, f; t# O2 Z1 f2 C/ w. Z9 v

0 ], q7 r# M( R% K+ rИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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