Top.Mail.Ru

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

[Скопировать ссылку]
admin Опубликовано 2024-10-21 22:39:29 | Показать все сообщения |Режим чтения Распечатать Назад Вперед
Роль AI в сборке L2J_Mobius
2 Z& V5 Y6 @& n, [* i6 Z/ V* e" s/ N% U1 S! U  s1 i
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
* v# v6 O) }, h( e1 j8 @. l. dВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.3 e0 x+ E/ P4 T: S
Основные классы AI:
  • AbstractAI.java. @: S8 Z4 m' o# G( O. j) K
    • Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
    • Задачи AbstractAI:
      3 N$ C2 |/ `( {8 d$ o4 F! b( s
      • Определение целей NPC.
      • Реакция на действия игроков (например, атаки).
      • Обработка передвижения NPC.
        4 i# V- w8 Q# W  C
    Пример метода из AbstractAI:
    1 I: L9 |2 j' o+ R9 a$ x
7 b5 e6 T4 }& E' M3 B
' K. K+ v2 Z; n( F7 l5 e9 Q2 x
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)9 M4 K- t3 o. w  E
  2.     // Устанавливаем намерение NPC атаковать цель! l- d! j- _' C; Q3 _  X/ f
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    1 V% W! G# ~% A" E. t5 d: E
  4. }
    7 s4 A( D% Q% Y& d, I# j
Скопировать код
    2. AttackableAI.java
4 P; S4 r( ^# N1 I) S0 }6 A1 B! ]9 H4 q3 K1 o* C
  • Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
  • Задачи AttackableAI:5 r( E5 q1 A$ [* _, ~8 J
    • Реакция на атаку игрока.
    • Преследование цели.
    • Использование умений (магических или физических) в бою.
      7 i+ `  c5 b* C' X; d  ^
Пример логики атаки NPC:" n9 O/ E& X- R  |
  1. @Override) ^% X7 K8 F* T& l6 _4 v
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)
    ) |7 r! v, X" o
  3.     // Добавляем атакующего в список целей
    4 x  h+ S' T  P* C, W
  4.     getActor().addDamageHate(attacker, 0, 1);  
    0 A  L7 e! n7 i7 N1 p7 j( S, X
  5.     // Если NPC не занят другим действием, инициируем атаку
    5 W/ H0 W- d# o8 ^- h# O
  6.     if (!getActor().isAttackingNow()) {; p7 l' B( l3 l% P# A6 t" l8 N, v$ ?
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего: o& \) n/ L/ y2 q" h
  8.     }
    5 q: i. n1 W: N$ z7 p% w
  9. }/ h: _" a9 X5 q' a; f% N1 [( e
Скопировать код
3. NpcAI.java4 Q% b' ~) s5 e/ C. q
1 P4 O# G8 |0 ?3 B
  • Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
  • Задачи NpcAI:9 F# ~, {0 _4 }% X$ k- ?# G
    • Открытие окна диалога при взаимодействии с игроком.
    • Вызов событий или скриптов при выполнении квестов.% G1 l8 L, N; i7 B3 P" L- O
Пример взаимодействия с игроком:
7 R4 v7 c* \& r7 j! J+ D
  1. @Override: H+ V! y) v6 D5 X5 C) I" V7 t
  2. protected void onEvtThink() {
    9 t) a6 h- S& O6 T, Z4 h# \
  3.     if (_actor.isNpc()) {
    . z9 ?# o7 K' |9 I# X  ^. j
  4.         // Открываем окно диалога при взаимодействии с NPC" F7 ?# M+ r$ C8 Z
  5.         _actor.showChatWindow(player);" z' Q7 e2 }2 U; W2 m% u9 N" m6 R
  6.     }
    ! S: {7 y) D. P
  7. }
    # Y1 s' t8 G/ E/ I6 H7 n) o5 A
Скопировать код
Как AI влияет на игровой процесс?" v0 K. N7 ^- p' l0 C6 n
  • Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
  • Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
  • Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.% O' Q: w- g9 W( o7 O) f* n+ c' A
Примеры использования AI в игре:- c: q$ n  d4 ?+ |6 g. C6 z/ j
  • Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
  • Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
  • Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.- w( l7 W2 X1 z1 Y
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
# m0 f* `6 |# ?2 V. x9 \) V; y. b5 R& ?) I0 ~, i$ _& X
P.S.# h; K# g! Q$ i" L( q! H& O
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
. t* Y1 H7 h# c) }
2 H7 k8 G7 C! m& T# w3 x& e, M( u) F
; L9 n! q- Q8 f2 `8 _$ l6 `! D
Из группы: Lineage 2

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

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

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

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

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

638638758

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

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

admin@artace.ru Онлайн

QR-код

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