Роль AI в сборке L2J_Mobius
" b* R4 ~' J3 ?5 V6 t
3 {0 q) w n4 gВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).% n" h$ a! m1 ?
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
$ j E i* d4 H% _0 rОсновные классы AI:- AbstractAI.java: V# d3 M7 s( l" {6 t d0 C4 ~- r
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:- g, V& @8 [) s0 _- ^
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.5 K5 @0 u' U$ s7 K0 g: l" D
Пример метода из AbstractAI:7 S+ E3 [/ m( E! Y7 J9 K1 z0 L
6 j8 i8 h) q2 q5 [3 U0 h0 v" j6 n2 w
- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель)- F9 E7 Y2 K; r; S @: J6 k
- // Устанавливаем намерение NPC атаковать цель6 @ L7 F$ I. B- O0 o3 V
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); , @" n' z r# Y& |7 n
- }8 l3 P( K- ^9 W* {
Скопировать код 2. AttackableAI.java
, b% T* ~' Z" N j \# {
P: ^- D! \! b, _- e2 t. N- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:3 {/ U: L' U+ N4 h; Y9 d6 Z
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
, K/ |; A( Y* e5 i0 w5 y
Пример логики атаки NPC:
* j! \: W/ y% u' w! a( S& ?3 M9 C; I- @Override
/ ]+ E- Z. Z# @* H- ? - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)1 B* z3 y1 S; g
- // Добавляем атакующего в список целей
O" }/ l& e1 G' R2 v% K0 J - getActor().addDamageHate(attacker, 0, 1);
( e s: Z7 {% h: r+ } - // Если NPC не занят другим действием, инициируем атаку
7 s1 U6 \& D/ J - if (!getActor().isAttackingNow()) {$ H3 I. l0 n8 |, m* c; L
- onIntentionAttack(attacker); // Нападаем на атакующего
- ?3 Z" F3 e0 J: z+ V - }
2 `' K* ~# d6 v& \/ N+ x - }
; @8 j: D c+ Z2 d0 Z5 W; P
Скопировать код 3. NpcAI.java* r" _9 Y ]9 D2 g- Y) `; o+ R
# _& `7 v0 V0 d& X# h( m6 N
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:& g+ T5 p. ]$ H+ y! V B
- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.+ M5 s+ T; S! V9 E! x; ^9 l2 ]
Пример взаимодействия с игроком:
* T9 _. B1 e% n- @Override
I* g- y3 O% F. Z, E - protected void onEvtThink() {! K8 s0 |* \: m0 \5 [7 P- X
- if (_actor.isNpc()) {% b( s/ G q/ L; d- w' `
- // Открываем окно диалога при взаимодействии с NPC
" B" n4 h& f" | - _actor.showChatWindow(player);# c1 E4 r4 V- ?) ~3 t& I- n
- }9 s/ l9 b4 q) o
- }$ @6 M8 t! g3 m1 s: G
Скопировать код Как AI влияет на игровой процесс?2 G: V, O1 d3 a& v: ?2 z
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
) s$ `8 n: s; h" _1 P Примеры использования AI в игре:, _# ~% ?: y( Q( W- x" x
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события. Q" i+ N2 i$ E. V$ b [
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.
9 s( }: y8 M0 [5 X1 v R$ U O5 v7 M/ N ^1 B
P.S.# R3 V: w3 M q1 C
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
7 W: v5 n7 X9 Y* U$ k/ T% b# k+ x% Q
% Y& W" D0 @7 r3 I
. D3 x% z# v( S) ?' t, z k$ Y
Из группы: Lineage 2 |
|