Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius6 m2 x4 ?2 P: F  k& M: F- ?

- S: N7 U7 Q/ b- Q* F+ b4 tВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).& q6 @& J1 O* y( K) I
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.. o2 M3 Q  U' D+ p/ e( `
Основные классы AI:
  • AbstractAI.java
    0 J0 s2 l0 O0 T0 v  D
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:; |( Q# y- P' z9 t# i2 L
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.* Y+ D' _5 M- a& [
    Пример метода из AbstractAI:2 F$ k, E  @" |) a
$ _1 C) C" p, C

& g- `  B2 b6 k  [; R$ W( I
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель). U9 A" G3 C: B+ l, B
  2.     // Устанавливаем намерение NPC атаковать цель3 C/ X2 r/ _/ d2 \- U- e
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    7 L  K/ t2 A4 o2 F4 u
  4. }
    7 v5 o/ G* ]- G0 q8 j. M. P
Скопировать код
    2. AttackableAI.java
/ L1 d2 y9 ^0 ?; T- K, k" w9 ^5 w0 M
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    ) J, G* T/ a- z' a0 c9 W; y8 E
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      2 _+ [: T3 K% P& h$ y; l
Пример логики атаки NPC:* N1 h; N7 J9 O" F( ^
  1. @Override/ z; }4 k, K/ k  j" X: d
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    " W9 N7 c# P6 O1 |
  3.     // Добавляем атакующего в список целей" i3 t1 n) [0 z% X; x
  4.     getActor().addDamageHate(attacker, 0, 1);  
    # |2 [2 u- I. ^4 K, k
  5.     // Если NPC не занят другим действием, инициируем атаку& w) h: r7 o0 k1 }4 L
  6.     if (!getActor().isAttackingNow()) {
    - o3 C5 C% E1 c* a9 y. M1 Z" z! r  O4 `- C
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего6 h/ a: `6 t& P& ]
  8.     }/ V$ ~6 L$ ?4 q4 C7 E
  9. }
    * ^- N/ w# \# k6 ?; Y) K) O0 z
Скопировать код
3. NpcAI.java, B5 D  E* h5 J; _' z& b! e) s( C
5 b/ t5 T! G) K
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    / Q; x# @( l5 B' a, |' O
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      ( [; E/ f+ Y4 |- C% @" r7 b+ w
Пример взаимодействия с игроком:
' L2 U  }. T% e7 U: V9 G
  1. @Override
    . U7 k  M! h* I' H
  2. protected void onEvtThink() {% C/ [. B! o( V$ O) e- ]
  3.     if (_actor.isNpc()) {
    ! g/ J  p6 y1 `/ j5 i
  4.         // Открываем окно диалога при взаимодействии с NPC
    , K( V) |  [. ^4 w& L% m
  5.         _actor.showChatWindow(player);. ~: D6 z! H, L9 v( m
  6.     }# a4 a# `% ^7 P; b8 l# l; D) W+ s& X
  7. }
    ) ]/ F- ~) ~) W" e% E9 j
Скопировать код
Как AI влияет на игровой процесс?9 E: \, W( G0 m6 V
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    * R5 \( X: T6 m6 ~8 r& ?6 Y1 O8 d
Примеры использования AI в игре:$ V" Y( i% m7 M/ W
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события./ F& U1 n5 _. G3 C- ?5 g! t! z: B
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.* t) T0 G3 d. O6 X* |: M
. S9 }  L& ^! h9 y, j# U' d8 e
P.S.% n' Z# u: P: m' k$ E5 R6 k
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
% `4 C. E5 v: A+ [- D/ H$ h0 i/ L% s! ~( p, N# B& g/ f7 A' q  }

9 M0 [- T; D/ q( C4 [6 F' w6 G: `, U$ X1 R" U
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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