Роль AI в сборке L2J_Mobius" _/ p# ]' K* A9 H$ F, | \* s3 N
, h$ _6 u" U: X9 X# @* JВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).( X1 F& b$ h1 V7 e2 l& j4 I+ B
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.$ H) s6 P3 T t; t- n
Основные классы AI:- AbstractAI.java* i/ I# Y( {0 I7 \& z" j
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
. ~! V; Y( `! R5 o+ c% ^0 J- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.) k$ D3 ~9 @% t5 `
Пример метода из AbstractAI:
: f( W# H% H& h' N) f+ C' d% \% E1 S % c1 c, P! l2 _7 }) n+ h
0 z R" T- ?3 V5 h( w- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
& }: G& \4 f0 Y3 j7 E - // Устанавливаем намерение NPC атаковать цель
5 U9 i) A/ k) j% S2 |" K; L2 b8 K - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); : _7 u4 k x+ Y) T$ N
- }; Y$ z4 g0 q% A! ?8 I9 _, m
Скопировать код 2. AttackableAI.java. V/ Y6 ]4 B; l0 e
, `7 E( d! g& x7 w- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:' C# Z R' r2 L# z
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
! P7 J! K' G4 R5 L
Пример логики атаки NPC:0 g( }" }4 N( J- L. I+ G. q d
- @Override
, ]9 e% Q, c8 f/ R& g - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)/ ~2 {/ N4 Z" ]6 M9 O: g' L
- // Добавляем атакующего в список целей
! S1 k A9 t9 v( ? - getActor().addDamageHate(attacker, 0, 1);
$ S$ F' f! v3 l6 x7 P - // Если NPC не занят другим действием, инициируем атаку
5 W1 V. D6 V6 J/ }# n - if (!getActor().isAttackingNow()) {
h6 z5 Y/ G b! b$ y- W; t# B - onIntentionAttack(attacker); // Нападаем на атакующего
. g6 \' k$ `8 s4 [, W; T! k% Y+ t - }: o( S. `+ u% r# n; A
- }
; m1 V( @+ R4 r4 m
Скопировать код 3. NpcAI.java
" ?$ b1 o5 z: S" d& a: ]* k/ _' j Z& G6 V' A/ l
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:( K7 |( [4 A, j- H# |! O) K
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
' I' @: p0 z% j8 E3 e% n
Пример взаимодействия с игроком:+ p0 ^6 O& J3 j+ {
- @Override U# D5 X& ]. \
- protected void onEvtThink() {( n" W, t, |* ]2 i2 B
- if (_actor.isNpc()) {# I4 u( ~9 P; i; q9 g
- // Открываем окно диалога при взаимодействии с NPC
9 _- ]% }6 h9 N) B( N4 Y - _actor.showChatWindow(player);) p" @* I" A/ U1 j" q/ c
- }
6 w/ c; B# F4 r" j9 _$ { - }
) e+ X, l; p' J9 |+ n( N1 r9 |
Скопировать код Как AI влияет на игровой процесс?2 v. u# x: c6 `# c
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.4 D& H' K- {( P
Примеры использования AI в игре:
/ f* t* C J2 M E$ e: L8 t+ |- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.- }' Y1 N* {0 Y$ }7 _
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.) ?# w7 X" i! _
3 Y1 ^. Y0 t1 H( g6 V
P.S.3 @9 ^' Z, ^5 T5 U/ z' u; g4 z+ u R
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?3 z9 T" O0 Y1 e- E; d9 m3 Q q+ }
0 o( e5 Z& a: h' h8 D5 {
5 V+ I" q M* x0 Q: O1 i! v
% s/ J/ ~" e: _3 B2 G- }/ UИз группы: Lineage 2 |
|