Роль AI в сборке L2J_Mobius
8 |5 Z+ u4 ~: I) i0 ^: B* E# w
6 f& |' f! j; i' P0 t: yВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
$ Z3 h+ P# P& e" N- |В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.: P/ f$ ]! [) I3 g+ V% P. ]8 d
Основные классы AI:- AbstractAI.java
* M* _0 o$ i; d" l/ K- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:, F ~ A3 g& s; O$ J
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
. T$ X4 y4 J% c q$ z' R! b) Z& s7 z
Пример метода из AbstractAI:
5 O" s, @' [6 f. |5 { 3 {: Y, s5 h$ z( f# d1 a
r6 l% p( I8 X( Q- g; o4 [& _- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
1 V4 E/ u M7 K( L( Y - // Устанавливаем намерение NPC атаковать цель
3 V; }# o. G$ b% D+ C6 J0 G) o8 q! X - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); : k& e1 |3 t6 Z7 c/ C% w
- }0 S6 A3 L1 C5 u; b
Скопировать код 2. AttackableAI.java/ i7 C& x; [9 y' o
1 w, J& i' k& C& N2 n, ~4 x1 c% H. \: f
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:! @; V. i6 V0 K" \: g3 Y# W. }
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
' N8 h6 a$ U2 D/ A+ J v! b8 p& r
Пример логики атаки NPC:+ y# B% D9 f7 e* I8 \6 J2 y$ S
- @Override6 c. A$ F9 _5 W4 R8 }4 q) b
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)2 t; D9 b" C8 _5 m9 N) E4 u
- // Добавляем атакующего в список целей
( B/ F" Y, F- e8 L - getActor().addDamageHate(attacker, 0, 1);
" e! T$ W; e) p8 K - // Если NPC не занят другим действием, инициируем атаку0 b* Q! ?( K& x/ O; S5 n/ l- b& q4 x
- if (!getActor().isAttackingNow()) {
" g% Z: F O0 ~9 U* s - onIntentionAttack(attacker); // Нападаем на атакующего! }' [' U. G0 t2 I( H
- }
6 E/ Y+ N" k5 H" h* ^( P3 a - }7 P l" k' M' T+ f
Скопировать код 3. NpcAI.java% b1 e& k4 w1 s! q9 k
/ P- l( |) b/ R; c, V- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
4 `% r" I6 d4 L' @! _- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
6 G; i m$ |! u( k/ q
Пример взаимодействия с игроком:
' Q) v' K/ O( y. |! d* W2 O' U- @Override
, ]5 A7 u3 x& G/ v. u& I8 X - protected void onEvtThink() {. h/ W P) ]5 E' c3 r' |
- if (_actor.isNpc()) {
7 `$ L+ b5 [( P1 t0 g+ e - // Открываем окно диалога при взаимодействии с NPC$ H, [4 `4 K2 S
- _actor.showChatWindow(player);5 [0 Q8 ~0 Q+ e
- }0 c$ ]* D4 \1 S- C
- }
. A2 S; e" |# B* d% f6 j ~7 m" ?
Скопировать код Как AI влияет на игровой процесс?
% Q/ Q3 d; |9 x$ y# [1 [- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
& `4 w3 U0 r9 @$ D' b Примеры использования AI в игре:
: k$ I8 ^3 C, k' | G- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
5 H5 ^# H8 }& V" i) q) i1 O" Y4 h Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
8 d. q& E8 F( `4 [* X7 O- y* l: \/ ~) n! A. I' X1 [! O
P.S.
) X9 e- T g; S8 |4 bКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄, v3 f [+ h; ]6 |+ n; c
1 j! p' n: ~7 C; a; d2 ~
; }$ X# N- I2 [/ q1 C `
, h7 ^! z! n- f7 PИз группы: Lineage 2 |
|