Роль AI в сборке L2J_Mobius
- G1 L6 j) @: @, w- r2 P, x% ?6 ~' X: Z1 }" S$ Q6 x1 N
В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).: I- o1 t W0 z: @
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.* s# |% @1 J4 H6 G! r& x: U
Основные классы AI:- AbstractAI.java# L' X. A$ H' {- W8 ]: R, z
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:3 {# K- d! e* R
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.* `0 z. ` c+ K' g0 `7 |& h) p
Пример метода из AbstractAI:2 z7 h9 l9 ^2 f! D8 f
9 X. c- G" M, W/ G1 L6 F2 ?8 ?- }/ b$ R. A9 \
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)
4 F4 i: O% f/ J' u - // Устанавливаем намерение NPC атаковать цель
. M0 y9 n/ w0 ?: [) M6 K3 S1 O7 f2 g1 N) s - setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
1 a# ?* R- C( } - }
* g5 g/ u2 d, O) t( G: B: w* x$ X# N
Скопировать код 2. AttackableAI.java- @1 Z" C( @% Z1 O( n1 M
9 y9 m0 K: K5 q6 C& L5 O# P- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
. \5 G* ^2 G4 f) R: R4 h- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
8 Y. M4 z2 B: v' T
Пример логики атаки NPC:& C8 X8 Z7 Z4 X
- @Override
9 E. B5 `9 i/ x1 u - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
5 i9 q( r' I* K - // Добавляем атакующего в список целей
D6 z2 X- M% E ~ - getActor().addDamageHate(attacker, 0, 1); ' j- z3 Z2 q7 C+ u* K* a
- // Если NPC не занят другим действием, инициируем атаку
/ V: g, l' x: O* n1 S - if (!getActor().isAttackingNow()) {0 Q0 A! A! v6 Y; h+ y! X3 r( n' m
- onIntentionAttack(attacker); // Нападаем на атакующего
4 B: s+ z7 M( D - }' G v3 j ~7 d f1 e! |
- }. _+ G3 d) F8 I( t- Z3 M
Скопировать код 3. NpcAI.java
1 L7 U6 |/ k- R+ P' d$ V7 k% S5 F) p6 W9 N
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
5 x% e, ]6 `5 Z1 C, w$ Y- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов./ q" o! E% x& {: K4 S$ [; C
Пример взаимодействия с игроком:
- ?* i; |, i: ?- x' k% ?- @Override: t5 `3 V4 o$ j- M" z( z/ j, q& v$ m
- protected void onEvtThink() {0 B# z- q8 E m7 [
- if (_actor.isNpc()) {- o1 f3 c2 X) V
- // Открываем окно диалога при взаимодействии с NPC
' q5 v% H) L0 Z% g* j( H - _actor.showChatWindow(player);, k& `7 j2 r) ?/ T# o6 l
- }$ O: g# A4 p: i2 |6 E, E
- }. n. N7 q; v' t+ W( B
Скопировать код Как AI влияет на игровой процесс?# S; U) r( l f4 S% I0 T6 q
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.5 c# [1 q, n- J/ M9 l9 i% U
Примеры использования AI в игре:3 v- w$ V& c# x' |* P
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
0 u) m6 W, v# l Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
5 S& @; h% K" V; p5 s {/ L$ @* E/ o8 r
P.S.
0 C+ h# `/ s" f1 c5 V: vКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?2 {! @& i C5 p3 O: a2 u& [- b
8 q/ {9 Q+ K9 ?! o- C% K( Q# ^1 c j: Z" B# C3 I
! C% f3 `2 F7 M2 O# zИз группы: Lineage 2 |
|