Роль AI в сборке L2J_Mobius* Q4 D: S* w1 u( ^6 ^) m1 D3 J9 v
7 z9 ^7 ~7 l- q
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).( p) D, ]- K9 l8 d
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях., M7 Y2 J7 `2 l* b. E8 K8 Y. J
Основные классы AI:- AbstractAI.java3 E2 j+ ^+ `, X, G( \& \% V% w7 A
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
. h/ U, t3 ^5 B7 W: P- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.' G1 W1 L9 N/ h
Пример метода из AbstractAI:7 ~# `7 l4 h: `, e3 I
0 M- M$ M' p! j* D4 K! V) h& V8 ~; z% ` |
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)8 g1 M( F+ H" p3 |
- // Устанавливаем намерение NPC атаковать цель
4 {) W* j8 \' E8 F4 X+ U+ V - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
& F9 m% n# R) F6 {4 d - }) o, n( k; {; f* ?8 q$ _
Скопировать код 2. AttackableAI.java
5 x( U9 f7 Q3 c2 A# b |- U4 N; U5 c b3 R1 _+ r1 A9 K
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
: J$ [4 [* q- h0 ]$ E- L- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.$ b! t9 H8 |% {6 M0 y( |
Пример логики атаки NPC:
$ Y: G2 }5 }( F$ j Y* S- @Override% Y+ }- m S+ g/ r0 I
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
6 Z5 h$ `4 u# K* ^6 G& Y - // Добавляем атакующего в список целей
5 ~$ K2 h# D) O D - getActor().addDamageHate(attacker, 0, 1);
/ W2 w% c% ~. r( ^7 D6 S - // Если NPC не занят другим действием, инициируем атаку
& w" G v+ R! s! T K! ~4 I* [ - if (!getActor().isAttackingNow()) {
1 K' h# M6 ]9 Z! R' R - onIntentionAttack(attacker); // Нападаем на атакующего
! W: m! ]9 n' K \6 x; J4 E - }- j4 E: f% |7 Z- p& M( S5 `
- }
9 i. c' d" E6 [: ]
Скопировать код 3. NpcAI.java
& i, e7 K% y1 x8 t3 Z
5 e8 f5 J$ k1 k+ b% z- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
?0 w- E' e4 l/ P. i- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
" F' w" O$ v. E3 |9 {, b% m
Пример взаимодействия с игроком:0 h/ w0 ^: j6 w; H8 j( J O
- @Override
0 U' v- W) Y, W# ~. }0 K+ O - protected void onEvtThink() {( f" i4 w. J* @% {
- if (_actor.isNpc()) {
' ~* Z! o- J& F# i* G5 J - // Открываем окно диалога при взаимодействии с NPC! Q4 F: m0 n2 _+ e7 O
- _actor.showChatWindow(player);
# u# ^ `# K7 T( l3 K - }
4 u0 m6 j& s. Y; P8 Q - }; T3 i" `1 w; P G: U4 N
Скопировать код Как AI влияет на игровой процесс?, `$ x0 F7 w; p5 o! i
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
$ L. j6 z A1 [( q1 g Примеры использования AI в игре:
6 A% v, z# Q! A3 S0 I- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.3 J3 M2 b0 O _+ C
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.' l4 h4 n) o+ _# P
7 B8 A8 _" @1 V
P.S.
: z% v% ^+ a. ^% gКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
' d) y* j7 p# h7 @; B4 @& W! r% t4 i
3 i' r5 O( P: V6 m1 S$ p
& o! k- M& R; t f9 |Из группы: Lineage 2 |
|