Роль AI в сборке L2J_Mobius
2 P" x b* e" ], ?
& a K! ]( P$ r2 ^; P" i% e9 u2 E! {В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).( y/ M. V- G6 o2 [0 X$ |! J
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.1 G+ E/ @, Z3 B- X
Основные классы AI:- AbstractAI.java$ d% s+ J" a4 ?+ }$ I! Q( p
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:8 e" u: @) r) F
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.6 N2 N$ P4 z$ b% b: H: Z+ e/ K& G
Пример метода из AbstractAI:
4 ^3 B3 m4 T2 l9 |( @$ D
4 C" W- d; A2 O0 i% P9 M
0 g& e0 p3 r1 w- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
" \8 x4 F; ^9 D: P8 r: q% ` - // Устанавливаем намерение NPC атаковать цель% t( z, Y' F$ R) [4 l% }5 E
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); # @# m$ I: B6 K+ T7 L0 E3 Y
- }
) F- o9 w F# m# ~0 h# t/ C
Скопировать код 2. AttackableAI.java
- ^. `, B9 V R5 d$ }5 k5 `9 J# S$ j( H+ I0 _& v# @# m/ P
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:9 d( k. S" U! J; a4 F* o1 I, \
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
, `8 h |+ @/ s( T$ a
Пример логики атаки NPC:
# o* ?* g$ `! W- a% z+ c- @Override
. m* h3 m" @' B1 } - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
1 P& v$ h/ C* z- | - // Добавляем атакующего в список целей7 h$ s- y7 ?# _! ?# A; N
- getActor().addDamageHate(attacker, 0, 1);
3 [4 b) n4 L1 { - // Если NPC не занят другим действием, инициируем атаку
* x, K) v; R o - if (!getActor().isAttackingNow()) {
* Q% I# F; G) `& Q' J3 V/ U - onIntentionAttack(attacker); // Нападаем на атакующего
! J' e7 v! P4 T - }3 z# L0 B% u) k" l5 t
- }6 j4 b( v1 K. d6 X, D
Скопировать код 3. NpcAI.java# `% q) o7 h. t) P' O
6 S* r4 N5 E \/ L
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:6 j6 F, L' _- d, S: C$ N
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.1 W/ m, Q8 g" A* }: Z
Пример взаимодействия с игроком:
9 [5 }8 R- b# G- U6 t7 g( r- @Override% Z9 y! [% B$ N
- protected void onEvtThink() {
" K& a2 f: D! a8 z8 j( P - if (_actor.isNpc()) {6 j# k6 e o. U: l# ?
- // Открываем окно диалога при взаимодействии с NPC+ d1 H! f0 G. l+ Q, e% b/ Z2 }
- _actor.showChatWindow(player);; ]. ]; r4 `! u* x
- }
8 ~9 I# K5 K, w - }) m* e b0 ?, M* _% \# n8 t
Скопировать код Как AI влияет на игровой процесс?
* D" \( ~8 H! H5 ~. t( Y3 ]# q- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
: _" p/ E. A# k' \ i4 L1 L4 a Примеры использования AI в игре:
Y3 @4 b* z4 _- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.$ n* ^; n: [# `: B2 P
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.% @0 X4 ~$ u R7 Q" c
$ d* l. W/ y: p) @P.S.
; o0 G% s" z7 J( Z7 l4 O* g5 [Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
! f9 d# |0 Z i
( x# t. z2 Z* T% Y ?
' E( L6 M6 a4 E: z% s
+ v: s" x5 M, G6 eИз группы: Lineage 2 |
|