Роль AI в сборке L2J_Mobius
. P2 f& r& l" ]" C3 m/ t! \6 h3 Z" s( W% d }
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).8 s }/ L( g5 [
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.. e& G1 J, z9 T0 A
Основные классы AI:- AbstractAI.java' N: r! W5 V! K+ L$ r
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:* Q) g- }+ ~$ x2 ?9 z# E
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.* c* S9 [7 o4 M/ e/ c
Пример метода из AbstractAI:0 c3 R5 p8 z: N: @% O4 m4 f
% u; [9 A% F( d5 t
. C4 s" Z' X% b$ }
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)9 f4 x% I8 o- u4 g D: C
- // Устанавливаем намерение NPC атаковать цель
# w `8 z l% b: X - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 9 c# t# ~% W3 m B& @
- }
1 z- \: q N7 \2 Z/ t- s" g
Скопировать код 2. AttackableAI.java4 O; y5 {7 {! V- H8 w7 r* t
$ b6 s' }/ Q4 [# O
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:, [- B) u% H5 _/ J- |: n% h. ]
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
, k' Z5 L9 T3 Q9 W p) ~* ]; z% \" @
Пример логики атаки NPC:$ s; b! p% V2 _2 w9 G
- @Override" D! A, ?( n* ?6 y; K) i$ [
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
. P8 c) O. C4 s& U0 g8 N, I8 c' j - // Добавляем атакующего в список целей
: B- A$ S! G' o9 f5 N7 v# _ - getActor().addDamageHate(attacker, 0, 1);
. {6 T3 I }( W/ S8 w - // Если NPC не занят другим действием, инициируем атаку
+ L# }) v) X8 [" n( N% [ - if (!getActor().isAttackingNow()) {
, e$ {3 |5 g0 |7 R, X - onIntentionAttack(attacker); // Нападаем на атакующего! _4 e3 }! C+ Z
- }7 o5 |1 Y- O! A/ X, V6 M$ V6 R; d
- }
* f% x. s4 Y0 l2 D
Скопировать код 3. NpcAI.java' S' I( ? j' p5 A" Y. m/ L( [
0 h9 S& ^7 a+ c+ _+ C8 d- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:1 f+ R. i# i! H# H
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
$ l- H$ Z+ K1 G; W% F: z" O! X! H
Пример взаимодействия с игроком:
$ ?- D8 \8 d/ a- @Override
: E$ R& b3 H5 t, H" T- R, p* h( J - protected void onEvtThink() {
( @5 v$ A8 R* k/ [ - if (_actor.isNpc()) {
q+ Q0 r7 J& i1 _ - // Открываем окно диалога при взаимодействии с NPC
" L" l5 a: G" C9 R2 H/ D( | - _actor.showChatWindow(player);) z& w" W/ X$ n- Z
- }
8 \; L1 [: E3 p; l# H9 o - }
* W2 H1 v$ y" K; C' Y3 O
Скопировать код Как AI влияет на игровой процесс?, [; R% \8 ]3 }5 |, O" Q& M$ i. S
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
# `! [. E1 O& G6 ]5 T1 _ Примеры использования AI в игре:8 ~. n2 v# h3 z" s
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
! K. s1 r. c M Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
. m* S' ^; R) }( {3 o ?( {* [, M
P.S.( C- }4 ?+ |- J6 U) |) c. Q
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
1 G+ \0 Q; ^- j- a6 Z- Y. j! Z0 c8 K+ F9 R
9 @1 G' O$ s8 b' W' m _6 g5 e
) Q3 e6 t/ m9 m$ J; d6 y/ g `Из группы: Lineage 2 |
|