Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius* Q4 D: S* w1 u( ^6 ^) m1 D3 J9 v
7 z9 ^7 ~7 l- q
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).( p) D, ]- K9 l8 d
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях., M7 Y2 J7 `2 l* b. E8 K8 Y. J
Основные классы AI:
  • AbstractAI.java3 E2 j+ ^+ `, X, G( \& \% V% w7 A
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      . h/ U, t3 ^5 B7 W: P
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.' G1 W1 L9 N/ h
    Пример метода из AbstractAI:7 ~# `7 l4 h: `, e3 I

0 M- M$ M' p! j* D4 K! V) h& V8 ~; z% `  |
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)8 g1 M( F+ H" p3 |
  2.     // Устанавливаем намерение NPC атаковать цель
    4 {) W* j8 \' E8 F4 X+ U+ V
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    & F9 m% n# R) F6 {4 d
  4. }) o, n( k; {; f* ?8 q$ _
Скопировать код
    2. AttackableAI.java
5 x( U9 f7 Q3 c2 A# b  |- U4 N; U5 c  b3 R1 _+ r1 A9 K
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:
    : J$ [4 [* q- h0 ]$ E- L
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.$ b! t9 H8 |% {6 M0 y( |
Пример логики атаки NPC:
$ Y: G2 }5 }( F$ j  Y* S
  1. @Override% Y+ }- m  S+ g/ r0 I
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    6 Z5 h$ `4 u# K* ^6 G& Y
  3.     // Добавляем атакующего в список целей
    5 ~$ K2 h# D) O  D
  4.     getActor().addDamageHate(attacker, 0, 1);  
    / W2 w% c% ~. r( ^7 D6 S
  5.     // Если NPC не занят другим действием, инициируем атаку
    & w" G  v+ R! s! T  K! ~4 I* [
  6.     if (!getActor().isAttackingNow()) {
    1 K' h# M6 ]9 Z! R' R
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    ! W: m! ]9 n' K  \6 x; J4 E
  8.     }- j4 E: f% |7 Z- p& M( S5 `
  9. }
    9 i. c' d" E6 [: ]
Скопировать код
3. NpcAI.java
& i, e7 K% y1 x8 t3 Z
5 e8 f5 J$ k1 k+ b% z
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
      ?0 w- E' e4 l/ P. i
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      " F' w" O$ v. E3 |9 {, b% m
Пример взаимодействия с игроком:0 h/ w0 ^: j6 w; H8 j( J  O
  1. @Override
    0 U' v- W) Y, W# ~. }0 K+ O
  2. protected void onEvtThink() {( f" i4 w. J* @% {
  3.     if (_actor.isNpc()) {
    ' ~* Z! o- J& F# i* G5 J
  4.         // Открываем окно диалога при взаимодействии с NPC! Q4 F: m0 n2 _+ e7 O
  5.         _actor.showChatWindow(player);
    # u# ^  `# K7 T( l3 K
  6.     }
    4 u0 m6 j& s. Y; P8 Q
  7. }; T3 i" `1 w; P  G: U4 N
Скопировать код
Как AI влияет на игровой процесс?, `$ x0 F7 w; p5 o! i
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    $ L. j6 z  A1 [( q1 g
Примеры использования AI в игре:
6 A% v, z# Q! A3 S0 I
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.3 J3 M2 b0 O  _+ C
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.' l4 h4 n) o+ _# P
7 B8 A8 _" @1 V
P.S.
: z% v% ^+ a. ^% gКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
' d) y* j7 p# h7 @; B4 @& W! r% t4 i
3 i' r5 O( P: V6 m1 S$ p

& o! k- M& R; t  f9 |Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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