Роль AI в сборке L2J_Mobius
! G" }! P! c n( I) I- b) B( m4 P0 S
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).: m' \3 X. b2 D( l5 \- G
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.* @% M+ r6 F3 a Q
Основные классы AI:- AbstractAI.java. n9 f+ v* j, N' |/ m
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
) u/ ]& W4 X1 Z) y. O6 o: w+ X- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.3 E0 I5 {# R" K5 K' n# ^8 \3 @
Пример метода из AbstractAI:
/ q: j- W8 R$ h' k5 L
: \9 |/ E8 ]' m, o" T, {5 I8 y8 W' V# Z: j$ ]. _3 ^
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
! I7 t. L- a0 g \, i: M# o - // Устанавливаем намерение NPC атаковать цель
$ |% ^- z* O- o( _6 R8 ] - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 4 r, w7 i/ M. o0 C; h
- }; Z6 |2 W( O" J, ]6 Y
Скопировать код 2. AttackableAI.java7 e5 f( x- M: B6 b- z
8 G( u9 H' J( }0 {( k8 u2 ?/ j0 B
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
. B! @; n& U7 n; L) B- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.9 }2 `1 [7 p, p; H6 @
Пример логики атаки NPC:
, t1 s5 k& I- _! v- @Override
5 R: \% A* U q- p6 U2 P. M( _ - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
# D% L2 [0 M( s* t+ D- T - // Добавляем атакующего в список целей) d9 h7 T$ m( r4 p" C- J G
- getActor().addDamageHate(attacker, 0, 1);
0 D$ |7 q. k1 r$ `0 X - // Если NPC не занят другим действием, инициируем атаку* \2 N. e3 ~, W# }( I! c$ I% j( X
- if (!getActor().isAttackingNow()) {% ^0 k$ ]# W: N+ V. @7 E
- onIntentionAttack(attacker); // Нападаем на атакующего1 |8 G$ H& H i5 H, S
- }9 N# Q6 w5 k, b8 E" ~5 q
- }- b9 p: J$ V; O6 Y
Скопировать код 3. NpcAI.java
0 Z" y* U1 ^5 B4 [. D5 E, ^
) T1 F6 k1 [3 w3 Z; E/ F$ k1 @- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:8 {/ k, g: r( p5 Q) M
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
/ E2 o, v2 s2 k) j. w; }5 \
Пример взаимодействия с игроком:
* a, E2 U9 U/ g* \& f o2 e+ _3 c- @Override
' a* e9 h; }7 e0 M- P - protected void onEvtThink() {3 |0 K% G+ j3 S& r' d
- if (_actor.isNpc()) {
: Z% h7 u9 Y2 U - // Открываем окно диалога при взаимодействии с NPC
* X5 h$ ?9 F( T, Q0 K: e0 K. q3 O - _actor.showChatWindow(player);
. v% P* a$ r3 ]$ s - }' x' L" ~5 q8 O0 O ~! j
- } q9 v3 Z) ^) x( n
Скопировать код Как AI влияет на игровой процесс?
( r5 {( P! Y _& Q3 B. J- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии., m5 T, {1 k: R# L8 k+ r3 ^/ G
Примеры использования AI в игре:
: I i+ T0 Y# B' l- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
6 W7 f( b6 R' F8 h Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным. T q& M8 R7 I' x) |
' r+ ?& ? [" p: i) b8 H1 ~# I
P.S.
* L, E. K1 A; UКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?7 n6 D& w t7 T3 g9 u. w
" @2 ~& k9 p: U4 x" M
4 F' Q- p% [) [% d* i
) j- S1 n$ F/ g6 ]Из группы: Lineage 2 |
|