Роль AI в сборке L2J_Mobius
: S4 f1 k- F: g) _
: i, h2 N! t* q5 J. CВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
' ]" F8 S- q" F- O$ m6 T0 k" qВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
( ^, Q" _; ^ R/ `Основные классы AI:- AbstractAI.java
$ u+ z* @0 ]% W6 c m; @6 F- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
r0 m; d2 b' n$ v' y1 O- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
# [- b. f% u% Z' p
Пример метода из AbstractAI:
! l% @1 a l5 u `( e5 O ) @0 i' T/ }) {: z* U0 d$ C
0 u1 r/ S7 t( d- ^+ x0 B7 }
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель). i+ L6 M. M3 M* ~) R0 P4 A
- // Устанавливаем намерение NPC атаковать цель
# Q0 R. t% R* W; k# w) @ - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
+ d+ h2 }% p$ Q! _( _ v. Q - }( c/ R, k9 `& x8 F& Y1 {+ J
Скопировать код 2. AttackableAI.java
, l% N8 D2 ?% j) m! Y! H3 g
1 [) H) ]0 d+ b% B0 r3 \- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:( x0 v4 c4 @( O
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
+ V# W/ }: y4 K& b" ^
Пример логики атаки NPC:( s6 M1 [1 d; S' F8 \
- @Override
. H/ U7 {4 c7 k- w' W: Y# U. r! z - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
4 L5 a) L- l: I0 a5 Z/ @ - // Добавляем атакующего в список целей a: j3 M+ Y* h
- getActor().addDamageHate(attacker, 0, 1); ) A+ z" o1 ~" F( ^4 i+ @8 l+ ]
- // Если NPC не занят другим действием, инициируем атаку
^( v [: [0 c/ @ - if (!getActor().isAttackingNow()) {
' t8 |2 U, j+ k/ D, { - onIntentionAttack(attacker); // Нападаем на атакующего
4 g/ `/ H8 R9 E& |1 H9 s! l! L - }& V$ n/ q4 l) e( Z3 i, O
- }* O% x& B& ~7 V7 M
Скопировать код 3. NpcAI.java/ @& C& @0 g, F2 j
2 A" R$ L2 \$ d/ u3 D- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
8 u" t5 ]* R5 p- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
5 o4 S9 ^+ o! g7 P3 t# n- j
Пример взаимодействия с игроком:
9 S6 Z5 b4 k9 @# A- @Override- s, o4 F& f% [( q$ U2 m
- protected void onEvtThink() {
+ R8 t7 s2 ~! [7 s8 K C, M& m$ L - if (_actor.isNpc()) {
! Z( Z6 [: Q3 J% i - // Открываем окно диалога при взаимодействии с NPC+ P& r0 K0 G: h$ m
- _actor.showChatWindow(player);* P0 k5 Y- _% P" N8 ^; ?
- }$ G9 R9 T$ j1 h8 y2 w
- }
; S* F& p0 F* ~$ n& I$ A$ j5 |" j
Скопировать код Как AI влияет на игровой процесс?
3 M' k8 j) ?! _0 C' K7 R0 g3 l! [- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.( g! Y- x; k/ E; H& _* O w' d
Примеры использования AI в игре:
% v/ E6 i" u; h! ^' t+ {1 D8 q- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события." o- U" O; s6 U" \
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
/ j* H% ~6 w$ {, w, X: m6 l9 p0 S' A! d$ ~0 u$ M# q
P.S.
& g/ i9 i+ j2 ~! @: A+ zКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
) c0 I, D* Y1 e3 U3 N; a+ P& B# r2 f. q/ l0 M9 Z
: r8 N- c( l( u- z5 B# W/ S
- N, b; q' u m2 rИз группы: Lineage 2 |
|