Роль AI в сборке L2J_Mobius3 r. I) Y j* l8 |( ~ J3 } s* Q- w; E
6 _2 A+ b3 |0 }0 @3 dВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).2 S* K) u4 r L
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.4 _2 i6 X' h7 F3 {% A3 ^1 H% \( d9 J
Основные классы AI:- AbstractAI.java3 m& X9 ?2 K% j/ V8 u' E( ?( u
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:4 \& \- W7 X% R6 {3 d$ x5 S
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
7 Z9 T2 Y" _3 {5 \" a
Пример метода из AbstractAI:* F: W& ~* _9 Y
) A4 M' o" m6 r
1 `; [% p, y0 F
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)( N9 U/ a. \ p+ F
- // Устанавливаем намерение NPC атаковать цель4 g3 N- h1 @" ~: I
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 5 ^) X7 D* p* N" L. E
- }/ ^0 D* x6 l# v3 D( h! R' c
Скопировать код 2. AttackableAI.java$ ?; K# f8 L9 w3 G
3 B9 v4 z, u0 f! b0 l% }# E
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:7 R9 }' O4 }. f: {4 J3 O' K' s
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
2 T' q: `, [1 j9 F1 K* S
Пример логики атаки NPC:! i0 i# n2 }1 d/ H3 P, w% `2 }' g
- @Override( }& j5 S8 [/ L
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
) w; o; k& D3 J0 b3 _/ z - // Добавляем атакующего в список целей
6 y" g" g/ a; @* v& h - getActor().addDamageHate(attacker, 0, 1);
( u( }8 D& m1 ?- { - // Если NPC не занят другим действием, инициируем атаку
. p# e- G8 \- I2 o* x9 p - if (!getActor().isAttackingNow()) {& b) j% G9 D' T: J2 N
- onIntentionAttack(attacker); // Нападаем на атакующего' K) Z- c' t7 \0 Q( q
- }
7 N" v; W) Y H' n. u% o3 V - }' y# B2 T1 U9 W3 \4 {6 ^
Скопировать код 3. NpcAI.java
1 r3 D% `# L7 W
) A+ z7 T+ I( ?, P; G- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI: W5 M( L3 K f* m/ f# v3 q
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
% c) [/ W$ C+ M# A" F7 U
Пример взаимодействия с игроком:# A* N8 g( o/ x/ A5 |
- @Override1 Y8 Z+ l8 a, v, l6 T [' }: k
- protected void onEvtThink() {( o4 L: o, ~" X _
- if (_actor.isNpc()) {
7 k( M2 Q. \3 P! i6 _5 C - // Открываем окно диалога при взаимодействии с NPC
# e9 m% Y* Y! n8 s2 q - _actor.showChatWindow(player);7 y0 S0 U! s" a5 f, K) {! ?
- }4 o* R8 E: ` z& }. S% H
- }; y5 F3 }5 h( b' D( O6 U* G
Скопировать код Как AI влияет на игровой процесс?
6 [) H; W. B8 ^( i# t( y- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии. S* G5 R# n5 ^& R3 T" Q
Примеры использования AI в игре:
% H- r* J2 O9 I9 q* _- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
9 B; C- j" q4 Z* o6 T' Z2 _( a. y- ^ Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.0 ?- e- ^. m+ W2 s
- u0 C* Y# Q6 k% ^P.S.1 [! w9 U! A! f, M
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ? n; k) E, `% g
/ ^+ A ~3 b2 V" H9 {7 [0 w4 d
4 r$ ]5 Q- ]7 J' R
/ i; {" e1 S4 M' g" YИз группы: Lineage 2 |
|