Роль AI в сборке L2J_Mobius6 m2 x4 ?2 P: F k& M: F- ?
- S: N7 U7 Q/ b- Q* F+ b4 tВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект).& q6 @& J1 O* y( K) I
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.. o2 M3 Q U' D+ p/ e( `
Основные классы AI:- AbstractAI.java
0 J0 s2 l0 O0 T0 v D- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:; |( Q# y- P' z9 t# i2 L
- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.* Y+ D' _5 M- a& [
Пример метода из AbstractAI:2 F$ k, E @" |) a
$ _1 C) C" p, C
& g- ` B2 b6 k [; R$ W( I- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель). U9 A" G3 C: B+ l, B
- // Устанавливаем намерение NPC атаковать цель3 C/ X2 r/ _/ d2 \- U- e
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
7 L K/ t2 A4 o2 F4 u - }
7 v5 o/ G* ]- G0 q8 j. M. P
Скопировать код 2. AttackableAI.java
/ L1 d2 y9 ^0 ?; T- K, k" w9 ^5 w0 M
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:
) J, G* T/ a- z' a0 c9 W; y8 E- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.
2 _+ [: T3 K% P& h$ y; l
Пример логики атаки NPC:* N1 h; N7 J9 O" F( ^
- @Override/ z; }4 k, K/ k j" X: d
- protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
" W9 N7 c# P6 O1 | - // Добавляем атакующего в список целей" i3 t1 n) [0 z% X; x
- getActor().addDamageHate(attacker, 0, 1);
# |2 [2 u- I. ^4 K, k - // Если NPC не занят другим действием, инициируем атаку& w) h: r7 o0 k1 }4 L
- if (!getActor().isAttackingNow()) {
- o3 C5 C% E1 c* a9 y. M1 Z" z! r O4 `- C - onIntentionAttack(attacker); // Нападаем на атакующего6 h/ a: `6 t& P& ]
- }/ V$ ~6 L$ ?4 q4 C7 E
- }
* ^- N/ w# \# k6 ?; Y) K) O0 z
Скопировать код 3. NpcAI.java, B5 D E* h5 J; _' z& b! e) s( C
5 b/ t5 T! G) K
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
/ Q; x# @( l5 B' a, |' O- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.
( [; E/ f+ Y4 |- C% @" r7 b+ w
Пример взаимодействия с игроком:
' L2 U }. T% e7 U: V9 G- @Override
. U7 k M! h* I' H - protected void onEvtThink() {% C/ [. B! o( V$ O) e- ]
- if (_actor.isNpc()) {
! g/ J p6 y1 `/ j5 i - // Открываем окно диалога при взаимодействии с NPC
, K( V) | [. ^4 w& L% m - _actor.showChatWindow(player);. ~: D6 z! H, L9 v( m
- }# a4 a# `% ^7 P; b8 l# l; D) W+ s& X
- }
) ]/ F- ~) ~) W" e% E9 j
Скопировать код Как AI влияет на игровой процесс?9 E: \, W( G0 m6 V
- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.
* R5 \( X: T6 m6 ~8 r& ?6 Y1 O8 d Примеры использования AI в игре:$ V" Y( i% m7 M/ W
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события./ F& U1 n5 _. G3 C- ?5 g! t! z: B
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.* t) T0 G3 d. O6 X* |: M
. S9 } L& ^! h9 y, j# U' d8 e
P.S.% n' Z# u: P: m' k$ E5 R6 k
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?
% `4 C. E5 v: A+ [- D/ H$ h0 i/ L% s! ~( p, N# B& g/ f7 A' q }
9 M0 [- T; D/ q( C4 [6 F' w6 G: `, U$ X1 R" U
Из группы: Lineage 2 |
|