Роль AI в сборке L2J_Mobius
) O4 b$ a- z7 T4 x/ V1 A( y' m8 a. o8 ^
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект). G) \' _7 \ ?. _; y5 b
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях. n6 `5 R" t2 q( q1 Q) @4 m4 H
Основные классы AI:- AbstractAI.java! A6 w. @2 n% d$ K; `1 M0 M
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:# |/ F' [3 E0 C+ W$ H8 |6 J0 R% `
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
: B" v3 ?3 s3 ~) }9 e
Пример метода из AbstractAI:, g: p! v1 u [! ^, D; P& ]$ g4 S
' V% h$ `7 A7 L2 `1 p- @! C
8 t1 M9 I7 k% {% H0 P' |3 e- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)% x: K6 W7 `6 L
- // Устанавливаем намерение NPC атаковать цель
% k9 l0 b0 L3 A9 m - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 2 ^! k2 E9 Y( C: ]! M. a# b
- }
! O1 m9 `8 U0 ~$ }# V
Скопировать код 2. AttackableAI.java
; T. r$ L; D: r* n v2 I1 N) {
& b$ f5 i0 G$ ?- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:# e4 P! R' C5 Y0 \: X z4 s
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.0 x, X3 J. S0 B1 X V S- W3 L* G
Пример логики атаки NPC:
) V- s) a- m- r5 w* w- x- @Override7 M( _. x/ e: g2 I/ h
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
/ b% I" v/ `8 _ i* ?! { - // Добавляем атакующего в список целей
; w& f1 Z! i) A* e: A( a. O8 p+ F; N - getActor().addDamageHate(attacker, 0, 1); . T* n i8 k* f* d
- // Если NPC не занят другим действием, инициируем атаку1 N+ C5 K/ z5 W0 L
- if (!getActor().isAttackingNow()) {
* b4 m: z* @% M - onIntentionAttack(attacker); // Нападаем на атакующего4 Y% [2 p1 {' _; _, m% S' N
- }
9 F4 i& P* \- I' L' d3 [( E9 Y - }
8 u+ Q0 P- m0 g& b: ]
Скопировать код 3. NpcAI.java
$ D5 q, h8 w7 J& j6 w2 v4 [ A' n' l$ |# F+ v. M' N; j2 E$ s$ ^3 {
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
. z9 F) L& @! i- u; ?; n/ X4 P- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
4 b) w( C% u B& I, t7 H+ g
Пример взаимодействия с игроком:
) j7 p3 B2 k4 p/ e4 ]- @Override' ]$ O4 `% J! a( T9 d
- protected void onEvtThink() {
0 X; J: m* c2 y' L3 A* ~$ f - if (_actor.isNpc()) {- P3 Q: \5 b. n$ z8 `- k8 L
- // Открываем окно диалога при взаимодействии с NPC
8 M( ^1 ?. O6 T0 O$ u( l& G/ R; E9 M - _actor.showChatWindow(player);) ] L! Z4 p O8 J
- }
: H z$ \2 b" q6 f6 v - }/ \" C0 C$ e9 `- [9 |6 e
Скопировать код Как AI влияет на игровой процесс?
5 Z B7 f/ C1 S% X! S, ]- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
5 r5 h) A" ~! H* R, ^: G4 z$ W Примеры использования AI в игре:
' Y6 a' y* X; l% x( G- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события./ g, q3 {+ [4 \( U
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.4 u! x( z8 h J C" d9 x
" }3 p! n1 v W9 \) X! e7 ?P.S.
! U. G* U6 O. \ Y' [4 h; t, qКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?, a4 B; m% I" `/ y' N8 X5 ?
0 S4 A: f: P& Z% u6 U
# `1 Q- J' |+ d3 f8 X
% y4 O* q9 s" |8 S+ l/ }, BИз группы: Lineage 2 |
|