Роль AI в сборке L2J_Mobius
, R; E, P% z; J
0 |# R! A9 g6 e9 N- K6 ~, B3 yВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).7 x. y8 A0 s' c6 o
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.; t E* h, u+ a+ n/ I0 I% ]
Основные классы AI:- AbstractAI.java
- \ v: T, B& N# E& h. t- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
: Z& \. S$ U# y4 s# ]- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.+ M7 j4 `7 d5 l2 _1 X6 x
Пример метода из AbstractAI:) {% u& C, \. n$ H+ r3 O
$ J6 k: N' j/ g. K
* t+ j* O$ K" H9 g' ~. x, P# d
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель); g" b5 q9 U8 t4 ? K7 F
- // Устанавливаем намерение NPC атаковать цель
; M: x* `1 Y0 f( `8 A - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); 1 s9 w5 X, _# A2 b& X
- }
9 V8 e: q# H9 ?# c0 B
Скопировать код 2. AttackableAI.java
( X9 G7 O! J. g' j+ E, E
: V3 w' }( h& s s8 J1 Z- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
/ ^" ?* e T8 ?! f7 e t- F- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою." W5 u* D9 O J/ `, ]' u7 ~* r
Пример логики атаки NPC:; Q1 q3 A1 v: \# n. H$ N5 a" k! e8 A
- @Override
6 _7 K6 V" \' K: Y - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
+ G: t" {; B- l$ @ - // Добавляем атакующего в список целей- e5 @% I `" ?6 P
- getActor().addDamageHate(attacker, 0, 1); 1 Z! S# `1 F. D; z1 n+ N
- // Если NPC не занят другим действием, инициируем атаку6 R) B* S+ S* w% }( d
- if (!getActor().isAttackingNow()) {, M% e/ M% Q. R
- onIntentionAttack(attacker); // Нападаем на атакующего
7 `! n5 T! Q8 V3 O - }, l( z4 M+ ^. d
- }& r/ r; G" r, p/ Z4 ]8 j% b
Скопировать код 3. NpcAI.java
) K9 W3 F/ V9 L0 L- L
; m+ d' i" K: ^7 x* s- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
: ]9 r3 d5 `0 X3 M6 U- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.8 p3 d3 h( X% B: f/ Y) J
Пример взаимодействия с игроком:* M7 M6 N9 d9 o8 @& }; ]8 |" n% ]
- @Override
" V& s* b2 |" x' Y! }/ w - protected void onEvtThink() { G- A4 C/ g$ c V( ]6 g" E
- if (_actor.isNpc()) {
" R, [. {1 T" r - // Открываем окно диалога при взаимодействии с NPC
" {. [$ J# p, s5 ?- N - _actor.showChatWindow(player);
" n5 ~" B' d+ K% p' _ - }
+ S9 T7 H K1 c# M6 D - }; L0 {1 K0 Z$ F2 u. G
Скопировать код Как AI влияет на игровой процесс?
* q0 u6 R5 f" ^4 @; x4 V" H- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.; s/ Z, x' u0 x, F
Примеры использования AI в игре:6 `) F& h4 E; N% E' T
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.; z" {* u4 P2 q/ @, s% u5 D, V! j
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным./ \+ Z4 s( X0 C6 v) a- b+ u& B
! T/ J, l$ m4 l7 }1 `4 t
P.S.( C* T4 _6 Q- j4 }3 j! |
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?; x1 j& J; d2 `9 d: B$ ?
4 {; s: f1 Z; A% Q m) t. t% H% r, _: t& h; x4 o$ j1 E
7 C" [# w1 F U2 |' D! Z3 s
Из группы: Lineage 2 |
|