Роль AI в сборке L2J_Mobius
- E) w# P, v) n# @( ?
' }" u. b8 G9 s0 rВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
0 v2 I. F. ?+ n4 M8 WВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
; Z) _7 V7 m3 KОсновные классы AI:- AbstractAI.java
. _$ w, F- O( I j) q- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:+ h6 F" y( g D6 n' k
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.7 ?, r: H( [% I% K
Пример метода из AbstractAI:, V* D& }1 B% z8 f1 D: d
: N M2 @/ e$ Z, c$ G+ ^! K5 S- g- R( S9 r/ x
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
" ~6 V( r( q+ I - // Устанавливаем намерение NPC атаковать цель
/ P. l8 w& |: X2 |! T4 C - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
( X1 y4 s) n" i1 N5 H - }/ R: d. f& f9 V3 z, `/ z7 b1 k
Скопировать код 2. AttackableAI.java
; d6 U+ S' T- L$ D6 d' i0 N! c; z$ u0 ]# Y% J
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:. @# l' `, O- {* A+ K) j* O
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.) u: \& E j9 a' \( f
Пример логики атаки NPC:
7 g d: z7 ^+ N" \1 l- @Override3 A5 E8 R8 D# X( _) S& L* C7 P& C: _
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
2 r2 v: }, L8 `! \ - // Добавляем атакующего в список целей
" @/ |. G* i9 w3 Q+ Q9 ` - getActor().addDamageHate(attacker, 0, 1); 2 c; \4 s9 m2 o5 m* r2 V/ [
- // Если NPC не занят другим действием, инициируем атаку
" T6 X' C) z8 M# p3 S - if (!getActor().isAttackingNow()) {
: o* I+ e- H/ C# o5 D" ~6 C- g - onIntentionAttack(attacker); // Нападаем на атакующего
$ U# [* I% o m" t# W. T. w - }# G( O& T) |: b9 ]
- }& C& m% ?2 Y# ~" i8 d
Скопировать код 3. NpcAI.java/ A* K$ B7 x0 b' ] d- I* _" T9 U
3 G' R' H# L, `- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:% T# q; H8 A: ^8 }
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
- M5 Q- T/ b v* g( T4 m; x2 P+ U
Пример взаимодействия с игроком:9 e& f" D" u) `' m0 _4 Y' @
- @Override% G$ Q- @+ q, `
- protected void onEvtThink() {$ ?1 p& }, b' v4 y& A I5 N
- if (_actor.isNpc()) {
9 Q9 i9 P/ Q `6 \0 e - // Открываем окно диалога при взаимодействии с NPC% E1 T @7 Q& {$ l7 F* V1 J
- _actor.showChatWindow(player);, M; S1 Q4 J+ x8 I+ z* M8 D9 `
- }- |0 R* u; S1 t$ x) F. s
- }% v5 ]! l! o% F- _+ Z# K
Скопировать код Как AI влияет на игровой процесс?
+ O1 M2 _: _( Y# N8 K# k3 L- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
6 `1 E6 k7 N2 U/ b% c+ x; } Примеры использования AI в игре:
) v# U+ J7 E: {- f- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.* C; v: l* Q9 c. q
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
, M; U0 n W7 u* E1 g( h: N4 X3 s: {* L0 s- f8 `6 }
P.S.
7 |+ R) }2 M3 s! h: s/ jКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?* g- e" k' W! j9 [1 \& W
8 z+ O- w0 S* R' [+ ~9 s% Y2 K0 R# j
o' h/ @' `8 wИз группы: Lineage 2 |
|