Роль AI в сборке L2J_Mobius3 t* {& { H" I$ F- T2 ^! }
2 i; G) m9 p3 \! Z
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
7 `" }! A) K6 n, t, {/ y* V) \В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
! C8 R0 V' ?& J8 ^& dОсновные классы AI:- AbstractAI.java
- i- l4 e; ]9 [% [ r- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:) s! d. }/ s$ s$ q7 P2 [& s
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.
, [" Q* ]1 ], u
Пример метода из AbstractAI:- n; A$ F$ h S: ]! _# Q+ O+ x/ b, r
. H( E8 m* r5 @: c( L' a9 P2 m" D. A! ]4 h7 c3 G" E8 j
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)8 t, g8 C {; S& F+ Z
- // Устанавливаем намерение NPC атаковать цель
* N5 p5 _. x2 B' t) \+ I' l w, W( ~ - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); . I7 o, b, W7 ^3 J
- }
6 P+ _! f6 r- w
Скопировать код 2. AttackableAI.java) I7 k3 I. ?5 D: {) M* i
# r' q% V$ T4 X \- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:3 c- L0 g) J- N* g7 W
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
" {) Z* G& d x/ F& t
Пример логики атаки NPC:
/ A' _- X/ h/ E8 G$ Q- @Override2 v x; z! p& W9 e- i+ k( \
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
8 A" _% L% v. Q: D% ] - // Добавляем атакующего в список целей
/ M6 F4 O/ Q' c3 P5 W+ V& A - getActor().addDamageHate(attacker, 0, 1); 3 y# @2 D2 q9 q* o ^! M: B9 m
- // Если NPC не занят другим действием, инициируем атаку
% |' ^/ {5 [" W$ W- O - if (!getActor().isAttackingNow()) {
* N5 y4 k* V: S, e1 l - onIntentionAttack(attacker); // Нападаем на атакующего" p$ u: t6 A) ]
- }
( N1 E1 {7 x+ o& x - }2 A$ t) p$ m, T& _1 O$ Q+ h" [
Скопировать код 3. NpcAI.java' O! Z2 N9 S3 A y- \# q
6 H) w4 N7 [; `* T a, Q4 N& d- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:4 B( T+ W0 H: ]2 U. N
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.# t9 g9 k+ r; I% k/ {, V4 u* a
Пример взаимодействия с игроком:2 j/ f1 o+ F( `1 e' a
- @Override
1 m. P# j( G- I7 K% }* t3 w - protected void onEvtThink() {" n5 ^. c5 ]4 e6 `3 x+ _& i
- if (_actor.isNpc()) {
" p& L6 [8 c/ `7 I- z4 d - // Открываем окно диалога при взаимодействии с NPC
- ?& y$ f3 `% P* j+ s& r - _actor.showChatWindow(player);/ z7 h; l) D6 u. w) ?( ~" {
- }
/ ^: y! R8 ?! N5 j9 j' k* m - }
7 k3 S! U4 @% C2 c
Скопировать код Как AI влияет на игровой процесс?" }9 {: ]& R4 v
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.* [5 C2 C* Z) C/ R s" R" d
Примеры использования AI в игре:1 E* F ?# a3 e; t! S! S
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.# D; P5 ]9 T9 x% V- ?/ t6 q$ m; O
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.1 b6 t! B3 s+ }6 M6 w/ y! F& D
; V, v$ q5 P4 J8 }. M
P.S.2 y+ S6 ^% \ o9 I, w! }
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
$ r9 R9 P5 w$ T4 u' [( d5 M* x; r
1 J$ e7 e: K- s5 t% ^) z9 `. `0 h
' p( K+ n, @* g! ?8 hИз группы: Lineage 2 |
|