Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
) O4 b$ a- z7 T4 x/ V1 A( y' m8 a. o8 ^
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).  G) \' _7 \  ?. _; y5 b
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.  n6 `5 R" t2 q( q1 Q) @4 m4 H
Основные классы AI:
  • AbstractAI.java! A6 w. @2 n% d$ K; `1 M0 M
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:# |/ F' [3 E0 C+ W$ H8 |6 J0 R% `
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        : B" v3 ?3 s3 ~) }9 e
    Пример метода из AbstractAI:, g: p! v1 u  [! ^, D; P& ]$ g4 S
' V% h$ `7 A7 L2 `1 p- @! C

8 t1 M9 I7 k% {% H0 P' |3 e
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)% x: K6 W7 `6 L
  2.     // Устанавливаем намерение NPC атаковать цель
    % k9 l0 b0 L3 A9 m
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  2 ^! k2 E9 Y( C: ]! M. a# b
  4. }
    ! O1 m9 `8 U0 ~$ }# V
Скопировать код
    2. AttackableAI.java
; T. r$ L; D: r* n  v2 I1 N) {
& b$ f5 i0 G$ ?
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:# e4 P! R' C5 Y0 \: X  z4 s
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.0 x, X3 J. S0 B1 X  V  S- W3 L* G
Пример логики атаки NPC:
) V- s) a- m- r5 w* w- x
  1. @Override7 M( _. x/ e: g2 I/ h
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    / b% I" v/ `8 _  i* ?! {
  3.     // Добавляем атакующего в список целей
    ; w& f1 Z! i) A* e: A( a. O8 p+ F; N
  4.     getActor().addDamageHate(attacker, 0, 1);  . T* n  i8 k* f* d
  5.     // Если NPC не занят другим действием, инициируем атаку1 N+ C5 K/ z5 W0 L
  6.     if (!getActor().isAttackingNow()) {
    * b4 m: z* @% M
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего4 Y% [2 p1 {' _; _, m% S' N
  8.     }
    9 F4 i& P* \- I' L' d3 [( E9 Y
  9. }
    8 u+ Q0 P- m0 g& b: ]
Скопировать код
3. NpcAI.java
$ D5 q, h8 w7 J& j6 w2 v4 [  A' n' l$ |# F+ v. M' N; j2 E$ s$ ^3 {
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:
    . z9 F) L& @! i- u; ?; n/ X4 P
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.
      4 b) w( C% u  B& I, t7 H+ g
Пример взаимодействия с игроком:
) j7 p3 B2 k4 p/ e4 ]
  1. @Override' ]$ O4 `% J! a( T9 d
  2. protected void onEvtThink() {
    0 X; J: m* c2 y' L3 A* ~$ f
  3.     if (_actor.isNpc()) {- P3 Q: \5 b. n$ z8 `- k8 L
  4.         // Открываем окно диалога при взаимодействии с NPC
    8 M( ^1 ?. O6 T0 O$ u( l& G/ R; E9 M
  5.         _actor.showChatWindow(player);) ]  L! Z4 p  O8 J
  6.     }
    : H  z$ \2 b" q6 f6 v
  7. }/ \" C0 C$ e9 `- [9 |6 e
Скопировать код
Как AI влияет на игровой процесс?
5 Z  B7 f/ C1 S% X! S, ]
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
    5 r5 h) A" ~! H* R, ^: G4 z$ W
Примеры использования AI в игре:
' Y6 a' y* X; l% x( G
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события./ g, q3 {+ [4 \( U
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.4 u! x( z8 h  J  C" d9 x

" }3 p! n1 v  W9 \) X! e7 ?P.S.
! U. G* U6 O. \  Y' [4 h; t, qКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?, a4 B; m% I" `/ y' N8 X5 ?

0 S4 A: f: P& Z% u6 U
# `1 Q- J' |+ d3 f8 X
% y4 O* q9 s" |8 S+ l/ }, BИз группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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