Роль AI в сборке L2J_Mobius
8 f0 I0 @, F9 o# i3 d
) G4 G g* r0 _- h7 @$ ]0 JВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).- Z- I8 p- U e# p
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.9 Y! a5 G4 [6 A2 B
Основные классы AI:- AbstractAI.java
4 y f/ k8 M( C+ u+ v' Q- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:: |7 A6 J/ f4 _( {5 Y
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.' N1 a: {4 u# r2 g9 G) R" _( l
Пример метода из AbstractAI:1 K( G$ I* S4 j8 n% t9 k7 x
' f- L+ c- f; m3 c# r9 @
9 v4 x7 a% |( ]5 m6 _7 W- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)% e' M9 ?# b6 ?* w5 [* ~& O
- // Устанавливаем намерение NPC атаковать цель
6 s$ i: Y0 m* H- m - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
9 y; k5 i6 p& W9 n0 c( C* j - }
2 f3 Q& U5 g0 f, M$ l8 m7 m
Скопировать код 2. AttackableAI.java: X; N) i+ c/ D1 }. U$ D
. h- R @# r5 @8 c6 s8 u* l
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
) e' m* o3 B& O! x- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
3 d( S7 p# t1 B2 e
Пример логики атаки NPC:4 N+ H, h9 G1 r! p, Y' z) N* m
- @Override2 N1 r( I- J: I/ W; u
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
, j% j1 f9 p- W' ` - // Добавляем атакующего в список целей( } X" f# _/ p( @& p# k+ o
- getActor().addDamageHate(attacker, 0, 1); ' H2 c" O8 A* p3 [
- // Если NPC не занят другим действием, инициируем атаку
3 ]( ]6 r% G ]1 H3 _" M - if (!getActor().isAttackingNow()) {
% ]/ g3 z+ d+ s6 } - onIntentionAttack(attacker); // Нападаем на атакующего" @/ n1 u* [; Z# C4 ?0 L
- }$ v- o6 r' d i( y! x5 h
- }# {/ z6 t: F" n3 m
Скопировать код 3. NpcAI.java
3 o0 F( W1 }/ U$ A- z2 P9 x) k( a! A% J1 }- U6 Y3 T& Y5 }
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:5 O5 {7 R' w: o* p! Z
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
$ [- E7 G6 U- C4 v. \3 f3 h- F" S
Пример взаимодействия с игроком:0 }9 f% f; [6 \6 y( r5 b
- @Override% e: x5 L& m# x6 k2 R% a; ~
- protected void onEvtThink() {
7 ]! E. z1 f0 b( f. A - if (_actor.isNpc()) {; W/ b; B' p4 L; Z& U( n
- // Открываем окно диалога при взаимодействии с NPC& S/ S" _/ _+ j" S
- _actor.showChatWindow(player);, ~3 X! h3 h# y @4 }
- }/ N6 ~1 N: y9 ?5 n1 y9 n
- }! a& g9 P( L! V+ k3 F/ M1 Z$ j+ I
Скопировать код Как AI влияет на игровой процесс?; y9 j5 d' R8 R
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.' B+ Z U9 F3 x! e
Примеры использования AI в игре:
% h9 k( r1 R) h) _- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
! Z8 l% O" q/ n) H. X Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.4 |* a1 o; e, a, g6 ~
" i' y2 `/ K- m8 Y! ^/ T1 R2 i5 lP.S.
6 h1 y) k- ` ]8 Q6 `Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄' Q5 ^# o& @5 f
$ o- c h% _$ m. o
# d4 b2 a* n3 R9 d) Q' |; {* H* C- Y8 v8 X- D
Из группы: Lineage 2 |
|