Роль AI в сборке L2J_Mobius) T H1 V$ C* ]; q7 X: c2 s$ M3 A
. x7 a9 e/ m) T2 @
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).7 v) F0 N8 |( B
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
& S @& H7 Z( Q. ?! EОсновные классы AI:- AbstractAI.java
, V8 E x5 {( L3 a6 M1 h- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:% I& ]5 T$ x2 x
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
2 p# x, ^7 }3 ?, [6 b+ ^) e
Пример метода из AbstractAI:" o, J/ X) G( a9 t
* X, H8 ~) H; w3 J7 n) L: t% z1 u* _ E+ B3 g
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)3 B6 R1 c: U: z1 [6 L
- // Устанавливаем намерение NPC атаковать цель; ?9 V2 q' n" `8 e2 u
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); ; ]5 z1 ^( o2 }' y* t/ R$ M7 q
- }& [1 J. k: V8 \! G1 F6 L4 N
Скопировать код 2. AttackableAI.java! Z6 A |$ }- V) `0 L$ w6 i |
! ~% y! f/ Y, @0 E3 A2 Z
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:0 d4 Y B0 s3 d2 n3 Q# j+ m
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
7 t) K+ h4 ~/ y1 `. v& l1 c' X2 d5 L. `& M
Пример логики атаки NPC:5 D! E# H2 h6 S7 q$ F
- @Override
9 }* g$ S" ^3 P: w( S4 o4 d - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
, g4 x. q" ~5 g7 m - // Добавляем атакующего в список целей
# \6 ^* R0 f+ }- d8 H( @9 P0 x - getActor().addDamageHate(attacker, 0, 1);
( H. [: I9 V& ]) ]6 ?% V - // Если NPC не занят другим действием, инициируем атаку
) Y$ s$ N" m: t( U J( T5 l; a9 c - if (!getActor().isAttackingNow()) {+ F1 \- i$ G: {2 u) `
- onIntentionAttack(attacker); // Нападаем на атакующего* v3 f" b: X" }4 h5 B: s
- }
9 o N5 j2 ?, K/ _. w' l - }
' O' Q3 |- X# e' n! q4 e6 c
Скопировать код 3. NpcAI.java
" F( x7 k3 r% z/ n; d6 |& I* k# T4 H7 o! Q# v4 x( B& ]
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
5 U( m# d5 H F* r$ s- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.) f7 e* k3 N, f, u9 M
Пример взаимодействия с игроком:
( X" a% L. }7 S% c! S- @Override* N% K, D6 f( ] z8 A
- protected void onEvtThink() {% r) R1 y" m8 ?- ~6 P* K6 L. Q
- if (_actor.isNpc()) {
1 S& R) F! p! E8 E7 U w8 h - // Открываем окно диалога при взаимодействии с NPC
! @& ?4 w/ f! c! H! i7 \ - _actor.showChatWindow(player);8 |- E* T" h( R( U. b( B2 @
- }
5 T+ \9 ^0 K" \ - }
! t$ q6 o# ^2 `& @
Скопировать код Как AI влияет на игровой процесс?5 n4 p! Z: {- {* m
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.3 j6 y8 C9 f; `# m- B, h
Примеры использования AI в игре:$ T) |: K. v6 ^
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
' e: B$ D) G1 C& E- U Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.( w) B3 d5 {0 j! H5 Y
) c4 B8 ?$ o4 NP.S.6 g. A B+ a( I# C8 }
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?; p. Y9 T/ {0 Z8 w
. G4 N" ~' t8 O! @* g1 S
+ G* x* U* V8 j
( K" k" c1 Z" z$ l% hИз группы: Lineage 2 |
|