Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius4 F; S6 Z; W- O- v4 a
: `" }2 F6 q2 }* Q& _$ y- l% V
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).) p! F6 z% _. I7 F" p" e
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.3 C, n6 w" t2 K. ~' o7 D
Основные классы AI:
  • AbstractAI.java
    ) a5 r3 S# V* N! d" z' d  W) L
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      . m% G6 ]+ y' n( [' P2 ^: _; P# t9 `
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.$ v6 @4 v" r. }" u
    Пример метода из AbstractAI:
    & D) K9 G7 A" A- F! _6 N

7 I; |4 l  ?; @( s# C$ ?& c% c2 e3 l$ V
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    / [/ h- \1 A5 ?- ]
  2.     // Устанавливаем намерение NPC атаковать цель/ i. B  a1 D: H
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    : N. ~' }( w/ m; O5 f
  4. }
    . M$ ~5 w: ^$ c, D+ q( g
Скопировать код
    2. AttackableAI.java8 t5 q$ e/ r' Q& t+ v
3 J2 ?* L9 t1 _7 J5 W
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:, _3 b: }/ Y1 x6 h* d
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.; J$ M& A% {& ?5 o) |. `  M5 H
Пример логики атаки NPC:
- N8 t3 \* T' ]1 j& S+ r1 O% n
  1. @Override1 U# R, R* G2 G
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)( W4 `  O; ~% r, w; E$ p$ o* E
  3.     // Добавляем атакующего в список целей
    & T" }, u- Q4 C9 b  q1 t
  4.     getActor().addDamageHate(attacker, 0, 1);  
    - o. r6 l$ a& V* i% j  H1 @
  5.     // Если NPC не занят другим действием, инициируем атаку
    9 Z( O9 O( {4 o+ n, a' F
  6.     if (!getActor().isAttackingNow()) {% V& ^  \; G0 L' Q' T7 r/ y" U
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего
    0 r  R4 K; W5 L, ?
  8.     }
    & @8 f) h8 o: D3 L- R
  9. }
    ) A" R# {6 S/ n, Y: d/ J/ y2 Y8 L% E
Скопировать код
3. NpcAI.java
$ b, F/ L1 E" e$ ~
3 n; k! e) I2 b
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:6 t/ F: W2 C1 f9 I6 d
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.# w( {' p) h* @. |2 n
Пример взаимодействия с игроком:( Z/ C# D  E  n% h6 a
  1. @Override; @) l: p0 D" X0 X
  2. protected void onEvtThink() {9 I& A* E7 `+ d8 o7 T1 R( m5 M
  3.     if (_actor.isNpc()) {
    % r  |! a; u9 G* i4 {& d8 J
  4.         // Открываем окно диалога при взаимодействии с NPC1 z3 x6 I$ L: _9 y7 @
  5.         _actor.showChatWindow(player);+ M% l* Z# Q& ~2 B, @- A
  6.     }
    $ K! ^$ Z( E" z" b! M- o
  7. }5 a0 r$ s* h: J0 S- [( |
Скопировать код
Как AI влияет на игровой процесс?* F% k- A: q% Y" W# ]$ `# v3 s
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    & I* o2 J2 R. n5 ]
Примеры использования AI в игре:
5 o; ~* Z+ H0 |+ [
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.& y9 F9 e5 {; t1 d
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.  q* n' w/ Y/ u1 E7 |* Z
7 t5 w9 Q! H9 f, `+ p+ v7 J2 ^' D
P.S.4 x, L; }. F; a% d! e2 S: V# E) ^
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?  G  G' `  K- g

) @- N0 [  d! ]: w) ~' p; x4 y
+ v. c3 h* r  C7 d  t) s, v; @
1 ^5 \% d" q% y, j9 QИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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