Роль AI в сборке L2J_Mobius
2 p5 i F, l, ]4 o V, h o& [% n+ A: U0 L$ y# O6 ?! G
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).
" r) w0 j6 o* G7 A) B1 g4 JВ L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
9 I: u- m9 c8 C) KОсновные классы AI:- AbstractAI.java& d5 ^* C- W* {4 D* k( F
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
3 m8 U% K, l* G, s6 x- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.$ i7 ?. ]* X' M
Пример метода из AbstractAI:
+ _9 Z4 ^5 t0 [2 |$ Y8 K : H! u2 M; T' b' M# _
1 U4 U/ ~, _3 A: @
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
" w& o7 r. c3 }0 n. U& | - // Устанавливаем намерение NPC атаковать цель1 X3 [; |% r- R' Q5 d
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
0 z5 \- ?" U4 I/ s - }& j1 a0 w/ r7 |
Скопировать код 2. AttackableAI.java
* }4 a: F' ~9 [4 x' q
( H5 I7 d( V, G& z/ e0 ~! O- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
" }" v( B5 S, k2 X/ T- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.2 Y* ?' s# W" Z% h1 e
Пример логики атаки NPC:: s3 @ o* B1 Y9 Q) c
- @Override! g; X- [8 a" a
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)# q# _$ O( r/ N3 E6 c* V
- // Добавляем атакующего в список целей- w3 {; \5 C$ M' C& P2 W+ F
- getActor().addDamageHate(attacker, 0, 1); ^6 F* Y& z' y! f
- // Если NPC не занят другим действием, инициируем атаку, v. }# I0 k& t3 Q& Q" u4 Q) `( p
- if (!getActor().isAttackingNow()) {
. W- B1 J; M9 | - onIntentionAttack(attacker); // Нападаем на атакующего
' l3 f1 r5 M$ M/ g+ x# Z: } - }3 j9 Z. r3 _2 S9 A
- }
% g4 y, y% O( W* ~$ p
Скопировать код 3. NpcAI.java
. o* I0 t% o& I$ g
! A: H# N, E3 S+ P7 K- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:0 ]' n- e2 v& t7 _6 P, o$ u
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
) x6 m& F# g; R' s0 T3 x
Пример взаимодействия с игроком: _& `* I+ X2 a" o
- @Override
0 y" j3 M, F. A: x% F - protected void onEvtThink() {& N0 u( l! A* g& t8 B' ]
- if (_actor.isNpc()) {* F: N0 Z$ M# ~6 f
- // Открываем окно диалога при взаимодействии с NPC' Q. c0 W' k8 l' i
- _actor.showChatWindow(player);
: B9 `& S* E: R, ] - }
* p" o4 l X4 e, E - }( V, L7 t/ U' V# x2 R, @+ l
Скопировать код Как AI влияет на игровой процесс?/ }# O2 F* I4 N; v h9 s
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
. J3 N8 }$ f% ]5 b Примеры использования AI в игре:, u$ f2 Q8 G. ^6 P
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.. F% f: h4 _8 D9 p. Y, U, ]
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.# _; C" t* F% B5 `
. B& L3 D! C2 b2 W
P.S.
- u+ O9 \1 F5 |3 C# K" s# DКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄! A( `6 I* p A2 E+ q" g7 j
& i. S# ]( T. z
, D2 L' R" e% }: n4 [7 y
0 u6 B) X" e+ ^ b o
Из группы: Lineage 2 |
|