Роль AI в сборке L2J_Mobius
2 Z& V5 Y6 @& n, [* i6 Z/ V* e" s/ N% U1 S! U s1 i
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
* v# v6 O) }, h( e1 j8 @. l. dВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.3 e0 x+ E/ P4 T: S
Основные классы AI:- AbstractAI.java. @: S8 Z4 m' o# G( O. j) K
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
3 N$ C2 |/ `( {8 d$ o4 F! b( s- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
4 i# V- w8 Q# W C
Пример метода из AbstractAI:
1 I: L9 |2 j' o+ R9 a$ x 7 b5 e6 T4 }& E' M3 B
' K. K+ v2 Z; n( F7 l5 e9 Q2 x
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)9 M4 K- t3 o. w E
- // Устанавливаем намерение NPC атаковать цель! l- d! j- _' C; Q3 _ X/ f
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
1 V% W! G# ~% A" E. t5 d: E - }
7 s4 A( D% Q% Y& d, I# j
Скопировать код 2. AttackableAI.java
4 P; S4 r( ^# N1 I) S0 }6 A1 B! ]9 H4 q3 K1 o* C
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:5 r( E5 q1 A$ [* _, ~8 J
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
7 i+ ` c5 b* C' X; d ^
Пример логики атаки NPC:" n9 O/ E& X- R |
- @Override) ^% X7 K8 F* T& l6 _4 v
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
) |7 r! v, X" o - // Добавляем атакующего в список целей
4 x h+ S' T P* C, W - getActor().addDamageHate(attacker, 0, 1);
0 A L7 e! n7 i7 N1 p7 j( S, X - // Если NPC не занят другим действием, инициируем атаку
5 W/ H0 W- d# o8 ^- h# O - if (!getActor().isAttackingNow()) {; p7 l' B( l3 l% P# A6 t" l8 N, v$ ?
- onIntentionAttack(attacker); // Нападаем на атакующего: o& \) n/ L/ y2 q" h
- }
5 q: i. n1 W: N$ z7 p% w - }/ h: _" a9 X5 q' a; f% N1 [( e
Скопировать код 3. NpcAI.java4 Q% b' ~) s5 e/ C. q
1 P4 O# G8 |0 ?3 B
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:9 F# ~, {0 _4 }% X$ k- ?# G
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.% G1 l8 L, N; i7 B3 P" L- O
Пример взаимодействия с игроком:
7 R4 v7 c* \& r7 j! J+ D- @Override: H+ V! y) v6 D5 X5 C) I" V7 t
- protected void onEvtThink() {
9 t) a6 h- S& O6 T, Z4 h# \ - if (_actor.isNpc()) {
. z9 ?# o7 K' |9 I# X ^. j - // Открываем окно диалога при взаимодействии с NPC" F7 ?# M+ r$ C8 Z
- _actor.showChatWindow(player);" z' Q7 e2 }2 U; W2 m% u9 N" m6 R
- }
! S: {7 y) D. P - }
# Y1 s' t8 G/ E/ I6 H7 n) o5 A
Скопировать код Как AI влияет на игровой процесс?" v0 K. N7 ^- p' l0 C6 n
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.% O' Q: w- g9 W( o7 O) f* n+ c' A
Примеры использования AI в игре:- c: q$ n d4 ?+ |6 g. C6 z/ j
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.- w( l7 W2 X1 z1 Y
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
# m0 f* `6 |# ?2 V. x9 \) V; y. b5 R& ?) I0 ~, i$ _& X
P.S.# h; K# g! Q$ i" L( q! H& O
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
. t* Y1 H7 h# c) }
2 H7 k8 G7 C! m& T# w3 x& e, M( u) F
; L9 n! q- Q8 f2 `8 _$ l6 `! D
Из группы: Lineage 2 |
|