Роль AI в сборке L2J_Mobius4 F; S6 Z; W- O- v4 a
: `" }2 F6 q2 }* Q& _$ y- l% V
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).) p! F6 z% _. I7 F" p" e
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.3 C, n6 w" t2 K. ~' o7 D
Основные классы AI:- AbstractAI.java
) a5 r3 S# V* N! d" z' d W) L- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
. m% G6 ]+ y' n( [' P2 ^: _; P# t9 `- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.$ v6 @4 v" r. }" u
Пример метода из AbstractAI:
& D) K9 G7 A" A- F! _6 N
7 I; |4 l ?; @( s# C$ ?& c% c2 e3 l$ V
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
/ [/ h- \1 A5 ?- ] - // Устанавливаем намерение NPC атаковать цель/ i. B a1 D: H
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
: N. ~' }( w/ m; O5 f - }
. M$ ~5 w: ^$ c, D+ q( g
Скопировать код 2. AttackableAI.java8 t5 q$ e/ r' Q& t+ v
3 J2 ?* L9 t1 _7 J5 W
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:, _3 b: }/ Y1 x6 h* d
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.; J$ M& A% {& ?5 o) |. ` M5 H
Пример логики атаки NPC:
- N8 t3 \* T' ]1 j& S+ r1 O% n- @Override1 U# R, R* G2 G
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)( W4 ` O; ~% r, w; E$ p$ o* E
- // Добавляем атакующего в список целей
& T" }, u- Q4 C9 b q1 t - getActor().addDamageHate(attacker, 0, 1);
- o. r6 l$ a& V* i% j H1 @ - // Если NPC не занят другим действием, инициируем атаку
9 Z( O9 O( {4 o+ n, a' F - if (!getActor().isAttackingNow()) {% V& ^ \; G0 L' Q' T7 r/ y" U
- onIntentionAttack(attacker); // Нападаем на атакующего
0 r R4 K; W5 L, ? - }
& @8 f) h8 o: D3 L- R - }
) A" R# {6 S/ n, Y: d/ J/ y2 Y8 L% E
Скопировать код 3. NpcAI.java
$ b, F/ L1 E" e$ ~
3 n; k! e) I2 b- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:6 t/ F: W2 C1 f9 I6 d
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.# w( {' p) h* @. |2 n
Пример взаимодействия с игроком:( Z/ C# D E n% h6 a
- @Override; @) l: p0 D" X0 X
- protected void onEvtThink() {9 I& A* E7 `+ d8 o7 T1 R( m5 M
- if (_actor.isNpc()) {
% r |! a; u9 G* i4 {& d8 J - // Открываем окно диалога при взаимодействии с NPC1 z3 x6 I$ L: _9 y7 @
- _actor.showChatWindow(player);+ M% l* Z# Q& ~2 B, @- A
- }
$ K! ^$ Z( E" z" b! M- o - }5 a0 r$ s* h: J0 S- [( |
Скопировать код Как AI влияет на игровой процесс?* F% k- A: q% Y" W# ]$ `# v3 s
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
& I* o2 J2 R. n5 ] Примеры использования AI в игре:
5 o; ~* Z+ H0 |+ [- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.& y9 F9 e5 {; t1 d
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным. q* n' w/ Y/ u1 E7 |* Z
7 t5 w9 Q! H9 f, `+ p+ v7 J2 ^' D
P.S.4 x, L; }. F; a% d! e2 S: V# E) ^
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ? G G' ` K- g
) @- N0 [ d! ]: w) ~' p; x4 y
+ v. c3 h* r C7 d t) s, v; @
1 ^5 \% d" q% y, j9 QИз группы: Lineage 2 |
|