Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius7 ~; H& T9 k$ H: s% P! _" V, }( Y

' @; W; ]2 p# B% H8 N8 y1 @В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
; N- d% ]! T; r+ w6 W. LВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях./ E% Z& ]) n9 J+ p. J+ ^" x8 F
Основные классы AI:
  • AbstractAI.java
    : n, z6 f1 ?2 y4 G8 z5 L
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      ( W& H4 M5 A* ]. ?
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.- Q. p1 M9 W7 F" R2 Q* Z) a
    Пример метода из AbstractAI:
    . }7 d* C5 [3 ^7 L, E
( `3 |! L9 B( _4 o/ ~2 y
0 V8 ]6 x, f' y; a7 W! G# g- v
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)2 f8 O8 U3 V, b6 Y3 O
  2.     // Устанавливаем намерение NPC атаковать цель
    % S5 d( L' ?& {# V- J
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    . Q) y, W0 s# p/ t' Z# i
  4. }
    . P' y( K; V/ s! W" Y$ U
Скопировать код
    2. AttackableAI.java/ ~( T$ U! n- d  x$ e
# z3 `  I% p/ w+ u: x! q
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:3 `' x- z9 _$ d, C9 _# r1 [
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.; H* l4 k4 p' b0 i* x
Пример логики атаки NPC:, P7 d, G+ z( |: ?
  1. @Override
    - `9 P# r. j+ w+ Z
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    4 `2 s2 O: _2 U9 _$ W- j% J
  3.     // Добавляем атакующего в список целей
    ! M( h8 ?% r! J, x# ?; [2 s
  4.     getActor().addDamageHate(attacker, 0, 1);  5 K- }0 E0 e, K- k: j' @
  5.     // Если NPC не занят другим действием, инициируем атаку; x- [9 N) e& f' X
  6.     if (!getActor().isAttackingNow()) {
    : E: S1 r0 C1 Y4 ?. R. J
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего7 |. m! k' G& S0 K4 v' _! D. |
  8.     }
    6 v$ K/ A" |& C/ Y' F# j3 ~8 O
  9. }& E1 x6 c( a, p7 Q- X; Q, v1 b" s
Скопировать код
3. NpcAI.java' h3 S  @% o! G) D' s  A. j
6 [3 h" @! N6 U- v
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    8 ^' |4 T1 I0 z
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.' K( P9 b4 a" v/ L
Пример взаимодействия с игроком:
5 Y4 ?8 t6 u. G% P
  1. @Override# `) b" a+ O, z3 y& ^) _0 A7 `# N# f
  2. protected void onEvtThink() {
    . z! z) P0 J; w5 b) b
  3.     if (_actor.isNpc()) {  o1 b, ]* y7 Z" c) L
  4.         // Открываем окно диалога при взаимодействии с NPC
    - y6 K# i8 V/ L& |4 k0 J! J- W
  5.         _actor.showChatWindow(player);: l% I1 e& L  q; Q
  6.     }8 z, f- W: n) T
  7. }
    + J5 I" V% m$ c- J1 O. L
Скопировать код
Как AI влияет на игровой процесс?. E+ c; M# K1 Q  m+ t- \
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    5 x/ r# k3 E) A, [) \7 @2 T4 ~
Примеры использования AI в игре:
; j! l* W% \; U' F0 g  F
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
    ( b  F* ]$ ?$ j
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
: B& [3 \5 \. z
, H6 }( K6 ]% m3 S- k' `P.S.; M7 @$ V) {3 U6 j; @% x
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
& c  l0 ^3 ~! o( g* c1 M  I$ ], H6 ~2 y- q. |0 w  j
  @; V% a6 D$ O$ e8 m
* {+ c. m+ d/ g5 i! w; E0 r  N6 f! w
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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