Роль AI в сборке L2J_Mobius) F% B* A8 {) ?8 H% r9 ?2 ^
, l9 \8 ^0 b9 D; U8 g; c6 zВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
: _/ `. g: y7 L0 _. c5 c, f1 ZВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях./ F0 x1 K6 Y* E8 m# r
Основные классы AI:- AbstractAI.java* W/ L7 h, i" u
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:- v0 G2 P3 o( d' G) t5 W& w5 j
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
! E4 Q! X O) Q! o
Пример метода из AbstractAI:
4 U- ?: Z4 Q1 S: ?- p+ F - V: o1 z7 L( A( v0 _
) K6 z' x0 b5 s, w3 H* V8 ^0 P- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)$ t2 ]- G: z0 \9 o$ f9 G
- // Устанавливаем намерение NPC атаковать цель
. s/ V4 M2 w3 J - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); . R( \3 x, h7 t2 M
- }
* G6 c6 d8 V; s. W0 j+ k: e' C
Скопировать код 2. AttackableAI.java
0 Y2 e" B1 B( ]1 U
4 D O; G7 u/ m4 R' u' W- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
. |% N# K7 H9 @, t- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
4 }% [ d& B: w$ U
Пример логики атаки NPC:6 J" v% E. J4 e
- @Override
( K; [' ?" p& c) F+ j9 p - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
( I2 e& ~7 C9 W6 _. A4 g: U - // Добавляем атакующего в список целей
, G: [' P, U" J$ ]) ^ - getActor().addDamageHate(attacker, 0, 1); / Z( z2 i7 K; n1 m& S: f5 ^: J
- // Если NPC не занят другим действием, инициируем атаку
L- q" B4 M$ G - if (!getActor().isAttackingNow()) {
5 H* q" W; a/ E5 \2 G - onIntentionAttack(attacker); // Нападаем на атакующего& B/ J6 I3 W0 H+ |6 `3 B
- }
# k0 R& g7 @4 `/ Z* l2 @* } - }" U6 J) n% I% a; e
Скопировать код 3. NpcAI.java
& m- k/ [$ i& e7 C9 e% N9 p# j$ f5 R
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
8 L% |) @/ D' t4 V- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.: P5 I7 ?$ V+ @, ~: c2 o( `8 ]
Пример взаимодействия с игроком:
/ k5 |8 J5 T# Y0 ?- @Override
+ a* x' {1 W8 G% _( j9 Y/ v. P - protected void onEvtThink() {* P/ K l: V3 `2 i% B0 p
- if (_actor.isNpc()) {) R0 M( u# I4 V% w" N( u& N
- // Открываем окно диалога при взаимодействии с NPC* A/ d' s6 |6 l# u9 R' L Z
- _actor.showChatWindow(player);
: f; V" j" d" E! a - }
4 Z G C* @* {5 S5 z) K - }6 r7 l* i/ J3 W* T; M; C
Скопировать код Как AI влияет на игровой процесс?
! F9 W7 r- g6 O5 ?8 M" S- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.- G& J2 V" f6 V6 K
Примеры использования AI в игре:$ J) R2 V' ]/ o7 b" ` w5 m1 {
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.; ]' g) \$ ^4 {+ D% ~" M% o5 ?0 i
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
& _" F% E8 C- e6 E8 d2 ?* j+ y @/ e7 I x4 r
P.S.
/ `# G& Q9 H* v4 @4 h" C& }Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?# h- y2 J& L; D& Z' X/ w; |
$ ~$ j% X( R7 q* m, X) c: g/ P4 e7 y
5 @3 e* Z0 a w& |0 E" K0 v9 _" ?0 n+ C, ^" |9 }- V) R0 t
Из группы: Lineage 2 |
|