Роль AI в сборке L2J_Mobius
4 x5 t3 D& O7 I& G9 K7 e6 p3 ^% w; p$ N1 \5 m& f4 N L7 X$ m
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)." @5 D' S# N- t5 E& E1 S1 Z
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.; i( ?9 l/ K2 \* k, m0 @0 c5 T
Основные классы AI:- AbstractAI.java
9 M0 Z; z; g5 \4 I& z9 I/ a; f- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:8 e9 ^2 A0 b1 O. Y% B; a8 j
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.+ O5 n/ E `# N- ]
Пример метода из AbstractAI:
' K1 W' |( m. M( \# ^4 k4 |$ K q / N+ t4 m* E- D( A7 g" h4 ?
7 O2 c; h4 ~/ A9 Z( m
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
" h# x1 H1 \, x, G- w9 [3 d - // Устанавливаем намерение NPC атаковать цель
' Y1 \" |/ Y3 q& ~( f' X - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 7 O5 D* K2 e: a5 f
- }
3 p& {# ~* A# }0 v$ M+ V# L+ F* j
Скопировать код 2. AttackableAI.java
% a+ _3 f7 n+ k) P5 \' _9 B" A' I' M# G) z1 r" f: s
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
' A* E/ r6 \/ ]$ C+ w- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
' k9 I6 B; O# j7 {1 J
Пример логики атаки NPC:
: t3 [5 w7 q" n5 K e J+ `- @Override
! b' W: K' P, }- i3 U( U0 P/ h - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
8 [; g. B3 @. f) _) m8 B7 m* w - // Добавляем атакующего в список целей
% h' h$ {( [# ^ - getActor().addDamageHate(attacker, 0, 1);
$ K3 K! _* R: y - // Если NPC не занят другим действием, инициируем атаку O% k2 A' T+ S; v4 S: @
- if (!getActor().isAttackingNow()) {( g. O) j" F; U# o' ~0 n3 o
- onIntentionAttack(attacker); // Нападаем на атакующего; Q% b& k1 k, Q! l% V& p
- }
( n8 o2 d% I4 N8 Q9 W - }
2 g, p" }" Y' h
Скопировать код 3. NpcAI.java
) S d6 u h7 I; d2 B8 C0 A4 ]7 Y% X9 T4 B8 q
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
8 x6 N. ?* x' g$ q1 d' x5 G( l! R- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.4 _' s- |3 [5 C: H
Пример взаимодействия с игроком:# r' m. h0 f, _. l9 [. V
- @Override
/ c- h7 \4 E1 O% X- _ - protected void onEvtThink() {% Y7 F# Q: b$ ?+ F5 E: F
- if (_actor.isNpc()) {
* s( P! ^* ?; K( T0 T' [ - // Открываем окно диалога при взаимодействии с NPC
5 M5 g% r( q/ m) G5 } - _actor.showChatWindow(player);
1 l; Z( x& `6 L - }+ k. {. c" J3 w3 b$ {, e0 S! M- x: b
- }
: T% {5 I) z- _* Q# F8 c/ j
Скопировать код Как AI влияет на игровой процесс?
* P( m2 F! \7 x4 `5 k$ A- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
3 J( V' u% i7 ?5 C+ K! { Примеры использования AI в игре:7 S, d6 w( ^2 s
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.) u% i# Q+ E% j" z5 F( C
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.7 E' p, N" g* [/ ]/ B+ c
( i# `3 k- m! w5 z9 }+ o
P.S.
* f/ U" A7 y, t9 U A GКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?- u; X7 ^! s y3 k
3 V) r! t0 n/ R
& l6 e# d# r$ r" T2 J9 N; f9 v* s7 x& l8 Q5 v6 L5 r
Из группы: Lineage 2 |
|