Роль AI в сборке L2J_Mobius
* f) f. M* Z4 u% q: J/ h0 H/ L
! v/ v" N) c/ e& u/ bВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
6 N2 p! V1 x9 g- ^6 HВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.' [+ k/ R2 z4 X& N5 C
Основные классы AI:- AbstractAI.java
% k7 J$ `1 v' c: y9 o- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI: Q Q# X# w) F. Z, T" | k
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.4 T8 ]) a0 v' Y
Пример метода из AbstractAI:. U0 o/ |: r" Q \! W4 v
3 F& d A, u5 n' @
' g2 k8 i& F6 W+ n; J/ o6 a- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)2 t. F0 @: t) S1 r) D
- // Устанавливаем намерение NPC атаковать цель
2 n! P% d+ l; G' p - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
/ p: j) Y, L) _0 [5 F6 o. o - }
: S9 Q# a7 X7 [) K- p# W- ^( z
Скопировать код 2. AttackableAI.java
' ~$ n+ |& q+ ?/ r+ |
+ s& p4 e& S" V9 f- ?- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
9 _6 S' \: P! x$ X+ c- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
2 S! P( y u9 J/ J" K4 d# {2 I
Пример логики атаки NPC:7 o8 c% w( j% {! I& [ h
- @Override8 E0 k1 D( S3 m% `
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)/ w" n b: X4 r: @3 B! i( Z. |
- // Добавляем атакующего в список целей
% z, Y j& u" ^2 k9 r - getActor().addDamageHate(attacker, 0, 1); 1 | [# `" f- N; I, T. G. l
- // Если NPC не занят другим действием, инициируем атаку
! a. |) v3 B% ~" g! Y3 R3 w - if (!getActor().isAttackingNow()) {( K+ V t; o& M" |- q* Q3 g! s
- onIntentionAttack(attacker); // Нападаем на атакующего- i1 k( B7 p7 k4 w w/ ]9 @; [
- }2 n& i& n/ L U) _. X+ j$ p/ `
- }
2 z3 \1 F1 {% y: e ]% W
Скопировать код 3. NpcAI.java
; N9 n" p' c. i2 t6 h: N' o X4 a' e' A! }0 u X
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:3 o8 Y P' w4 I5 ]' i
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.. e4 N. r- Z& e* V9 U: l
Пример взаимодействия с игроком:/ _. i6 U: |. q
- @Override
/ J( V0 T: \, O0 v6 Z7 R - protected void onEvtThink() {
7 c% ?9 [! a* U - if (_actor.isNpc()) {
3 A+ O3 N) l7 p t - // Открываем окно диалога при взаимодействии с NPC3 U( |. z8 S( d8 v: P" G' G
- _actor.showChatWindow(player);1 h# O8 Q* N' h7 U6 j4 X% g
- }8 |0 q V1 z0 S3 O
- }
! ~$ x3 {1 a5 g2 t2 t
Скопировать код Как AI влияет на игровой процесс?
9 `4 X& H: y8 K. _* ~# n+ q# v9 w- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
6 \5 A T6 x( ]' M1 [5 t- H Примеры использования AI в игре:& C' F# C& n' p! z) l5 D
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.8 N0 ~* R- Q# ]# p& M9 g
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
' h; I) A2 M& e2 O% K) O3 U& S2 g. r$ G p1 @& r
P.S.
* c; g/ x; j: EКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
. W- S) ^; a3 ~! [; K* a1 o; X9 ~" E1 p, d
4 T+ c2 x- x- U7 ]1 q# d l. j |, S4 o- l9 `( y' x. ?
Из группы: Lineage 2 |
|