Роль AI в сборке L2J_Mobius4 Q5 q% x4 _, k# \7 ?5 H2 V2 t, C
4 W* l8 {- w# W7 YВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
2 ^( x ]6 v$ D# {) tВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.* _' |. J0 d/ Q, u! m& O
Основные классы AI:- AbstractAI.java
! @8 i/ P/ {/ J- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI: z! M2 m) @% i
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
1 s C7 O6 o/ d: S
Пример метода из AbstractAI:3 H) W, D" O$ S$ X+ n, \5 `# H5 P7 D
' P, h* K- v1 t+ Z
" J9 t! C0 P! k" f _; D4 o+ Z
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)* p0 J; | H" a% G
- // Устанавливаем намерение NPC атаковать цель& C0 I/ f& h2 G& i4 Y
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); ( z3 }, c- I6 q
- }7 N4 V2 X. n. e6 ?) ?4 k
Скопировать код 2. AttackableAI.java) x: {6 Q3 {! r0 r8 J9 p4 w
2 A" q/ c, u0 a2 ^; ?% O
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:5 ?, K$ I) b" C3 R
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.4 d$ C" u( C9 m& W
Пример логики атаки NPC:. c' y/ ~) O* l+ {8 p) W+ q
- @Override
8 ]% t; r4 C3 ^7 z - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)7 ~% Q2 w7 P* h/ g! o% ^
- // Добавляем атакующего в список целей
) t9 w, ]+ k5 a, y3 V* E - getActor().addDamageHate(attacker, 0, 1); ( s1 Q: x! B$ U* v5 V5 Q( r' h
- // Если NPC не занят другим действием, инициируем атаку* O3 F2 J& _3 Q9 p
- if (!getActor().isAttackingNow()) {+ ]! Y4 K9 C4 T4 Q
- onIntentionAttack(attacker); // Нападаем на атакующего" o$ f. Z/ K2 m$ O4 w: F7 c
- }
/ j6 h/ A6 R# k! ^; q$ @' n4 N' c8 h - }) J* y+ m7 O9 E, q7 W
Скопировать код 3. NpcAI.java
8 F9 R# p ~1 Z+ Z D4 {, z2 u, A x) s# D; y/ o- ^
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:; N! x7 y- T7 U3 p+ r
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.3 q9 c) z# k `5 _ x' K* b
Пример взаимодействия с игроком:0 y4 C1 N* A. W
- @Override+ `/ p9 Z9 ?" N
- protected void onEvtThink() {
# e+ E% J( \7 Z8 q+ I) O! w+ p - if (_actor.isNpc()) {
8 U; D, V5 h* n - // Открываем окно диалога при взаимодействии с NPC
: Z% \1 O9 J h$ n - _actor.showChatWindow(player);
2 ^8 l9 S! Z2 J, M( q$ e! l! Z - }
' S8 t6 L5 {; n0 z - }- X, z" M' S' P- B/ ?9 f3 d" ^6 q
Скопировать код Как AI влияет на игровой процесс?2 U' w. Z) L3 u: X$ y! t" ^
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
5 x. |9 W, @# p/ \ Примеры использования AI в игре:
3 Q U2 g5 U1 s/ ?6 ~- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
( D/ C" b6 k7 H Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
) f( z, o2 }; g+ s/ q* f9 W6 R
) X& D4 W, K- e" ^# s, rP.S.
; B/ T/ ?+ c( u7 U5 v/ Q2 HКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
8 A) I8 j7 m/ [3 F
5 T7 _- Y9 Q( x0 K/ L% t' a
+ d8 M1 Q( e4 R. k/ J+ y/ M
( N+ L4 O- n+ V- [# X+ S& b0 ?Из группы: Lineage 2 |
|