Роль AI в сборке L2J_Mobius
4 t5 V3 M1 l ^ L! Q+ r! F! u. z9 p! ?6 o
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)., m$ Z! {( z7 b8 k5 [6 @8 j8 d7 S/ o
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.- w$ I- m. R, a9 B# d
Основные классы AI:- AbstractAI.java- N i& _4 m! L
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:& \' c' q, L: o8 v% K
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
o* L3 ]2 u1 f; N- r: Z% i) }0 H
Пример метода из AbstractAI:
% ?4 d+ k+ m! W) P) u 0 o9 z9 L. x" b6 D. `" ?
4 C- E+ d: B; p& ]- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)+ i4 x9 S; v, y9 x1 S
- // Устанавливаем намерение NPC атаковать цель
6 L- f$ p4 L, E% v' Y - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
5 o/ ? k3 a- R/ ? - }
) u. v& S7 W0 @
Скопировать код 2. AttackableAI.java& G* q+ r; L3 {- @; p9 V
1 Q" P% V4 u( I8 |: n; R0 k6 o9 z- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
% o0 g- k# B3 j4 N4 u- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.. P5 |" E" Q) R5 c4 @
Пример логики атаки NPC:8 Z. A5 r+ X# s; C1 ^$ u
- @Override3 v5 k) }$ |: W8 g8 @5 m/ o
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий); j! C4 a* C( o/ l$ [
- // Добавляем атакующего в список целей
. @9 [% M! k8 [+ Y5 } - getActor().addDamageHate(attacker, 0, 1);
8 w# [4 ^8 V" s/ G% J+ C H4 P3 \ - // Если NPC не занят другим действием, инициируем атаку
$ n: ]% [! A9 p) N, L# f - if (!getActor().isAttackingNow()) {
) _- w0 m, H* ?) c. T - onIntentionAttack(attacker); // Нападаем на атакующего
7 E- ^1 `5 t, ~6 C6 C- E' b - }
7 Z6 z- x% _2 } V# J, ^" Q6 D5 y - }* {8 \- N, P, @- |/ K
Скопировать код 3. NpcAI.java
1 w/ b# n9 _& |7 L0 I+ |* F+ p m6 X( f8 d+ x% c: c
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:! N! ]5 L! I! D9 b+ ~1 g7 p1 k0 b4 @
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
/ x" X3 W2 p* x$ l2 }' h
Пример взаимодействия с игроком:0 B: Y* y8 R; e7 d( M" D: X
- @Override
) ~# D: H& S! I1 \* ? - protected void onEvtThink() {
/ w4 w! P* ?* W8 D, g - if (_actor.isNpc()) {
8 P( y, q% `6 @, a0 \ - // Открываем окно диалога при взаимодействии с NPC
3 l; {! \; I% q% c6 ?: t9 h/ g - _actor.showChatWindow(player);9 U3 u1 L9 X$ g
- }
% G- O0 R( V! B, ^0 q3 S - }# U! v$ ]" I) c+ Q! [
Скопировать код Как AI влияет на игровой процесс?
: k0 Q ~ H1 C- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.5 |. |/ M& W8 Z: K5 k2 d
Примеры использования AI в игре:
. P( u: S; R. h: V/ i8 }- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.' {$ B1 x/ s# E
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
/ J; C/ S, X# D* L& U1 N5 \# V: T- K
P.S.3 c, M8 A) I, f0 i
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?, H4 W0 b( o) f5 k, x$ \3 C
! `- o% I: N" w, p+ k; E
' Z5 M. {/ T2 {& @
* m% e% D+ U2 T. _2 q+ ~Из группы: Lineage 2 |
|