Роль AI в сборке L2J_Mobius/ e: X0 g2 ]- X9 }
2 Q/ O' J6 @, \/ W e; xВ игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)./ x* @ q. |% T: j
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
. o4 w! U w1 W5 TОсновные классы AI:- AbstractAI.java5 T* i2 B3 {! S, B; v
- Это базовый класс, от которого наследуются все AI. Он содержит основные методы и логику, которые можно расширять для создания различных типов поведения NPC.
- Задачи AbstractAI:
1 n2 k2 B0 a' |0 u2 A) D+ s- Определение целей NPC.
- Реакция на действия игроков (например, атаки).
- Обработка передвижения NPC.5 s% s* Q, @4 k+ N
Пример метода из AbstractAI:! e! f8 Y F7 s8 s
' g2 d+ q( \' }5 t1 Y: d
$ @1 |/ R2 R* K# \: {* K; F- public void onIntentionAttack(Creature target) { // public void наНамерениеАтаковать(Существо цель); V8 J& L1 I" B. o4 L. {0 E/ R7 _- n
- // Устанавливаем намерение NPC атаковать цель& t. b/ N8 f( x! q' M$ r
- setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
* ~: w, G0 D- D/ `( \6 y% g \: H* f - }
5 ^6 q! g/ t$ Y
Скопировать код 2. AttackableAI.java& p; C" G( n! N, ~' ]& r' U
" x& U: \4 A1 O+ T
- Это расширение AbstractAI, которое управляет поведением атакуемых NPC. Этот класс отвечает за логику агрессивных существ (например, монстров), которые могут атаковать игроков или других NPC.
- Задачи AttackableAI:* D k* @$ A2 m9 d) n8 W
- Реакция на атаку игрока.
- Преследование цели.
- Использование умений (магических или физических) в бою.0 b4 k5 ~/ a& \$ |( o. q
Пример логики атаки NPC:
2 N, J F( L, g, h: r- @Override
. e" ?) T- X1 h, A - protected void onEvtAttacked(Creature attacker) { // public void наСобытиеАтаки(Существо атакующий)
; }, k# K/ _% J' N) H& h - // Добавляем атакующего в список целей
+ h; U& H# K; `9 n& Z s - getActor().addDamageHate(attacker, 0, 1); 4 @# w" }' J$ _3 R3 n
- // Если NPC не занят другим действием, инициируем атаку
$ d+ v- M0 e) Q1 j* A - if (!getActor().isAttackingNow()) {; _) N6 f5 g! M2 e2 b
- onIntentionAttack(attacker); // Нападаем на атакующего
- D8 g3 V: r, V3 ?4 s$ j - }) _& P9 a- G9 D8 `* J1 ?
- }) W. `1 e+ v) D6 G: }6 M
Скопировать код 3. NpcAI.java
# _, g1 B( O) N7 l! a& e4 C! l$ {- ~2 l+ m4 K
- Этот класс используется для мирных NPC, таких как торговцы, квестовые персонажи или персонажи, с которыми игроки могут взаимодействовать, но которые не участвуют в бою.
- Задачи NpcAI:
! I# }" p; W! p' w) K+ P( M- Открытие окна диалога при взаимодействии с игроком.
- Вызов событий или скриптов при выполнении квестов.' ^" f% [9 J% E7 j! b
Пример взаимодействия с игроком:
* v0 {3 v. Y! w, @: H& L7 w- @Override
, \7 x$ P5 B( _2 t - protected void onEvtThink() {
6 Z6 h* r; \6 M - if (_actor.isNpc()) {$ ~1 m" z9 d8 ]$ d
- // Открываем окно диалога при взаимодействии с NPC
+ ]) ?5 |- h+ X$ V+ O, |( g$ V - _actor.showChatWindow(player);" T0 Q# i$ Y" P* H
- }- _7 D8 s5 k. f, M2 A& R; P
- }
; D5 V* l0 X4 U1 o" O$ A, Z1 [2 t( ?
Скопировать код Как AI влияет на игровой процесс?
2 t: l" H0 N6 q6 U2 O P, X- Реакции на действия игроков: Если игрок атакует NPC, AI решает, как NPC будет реагировать: атаковать в ответ, убегать или звать на помощь. Это зависит от типа AI (например, боевой или мирный).
- Логика боя: В боевых ситуациях AI управляет тем, как NPC использует свои способности, выбирает цели и принимает решения в зависимости от ситуации. В бою AI может решить использовать определённое умение или сменить цель на другого игрока.
- Поведение вне боя: AI также управляет действиями NPC, которые не участвуют в бою. Например, как NPC патрулируют территорию, как они следуют за игроками (в случае сопровождения), или как реагируют на вход в их зону агрессии.& c' \! O1 v1 q+ U$ v
Примеры использования AI в игре:0 I6 `4 a+ c' n0 P
- Патрулирование и преследование: NPC могут перемещаться по заданным точкам патруля, а при обнаружении врага — начать его преследование и атаку. Это управляется через AttackableAI.
- Умные боссы: Боссы в игре часто используют сложные AI-сценарии. Например, боссы могут менять свою тактику в зависимости от уровня здоровья, призывать помощников или использовать мощные способности при достижении определённых условий.
- Интерактивные NPC: Мирные NPC, такие как торговцы или квестовые персонажи, используют NpcAI для взаимодействия с игроками. Они могут открывать окна торговли, запускать квесты или реагировать на специальные события.
! v2 g: ]+ s( V) z9 S, }: C* K- L Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным.$ p7 n& o6 ^8 v/ V
4 z1 b0 q3 C% `+ b6 U
P.S.
( S8 l6 q1 z* h9 SКажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? ?( ~. a: v G5 h9 R5 ]& b4 x# q" ~9 E0 Y
! X& P! O7 K+ A* z9 v3 r+ G1 Z; O3 {6 b) s( `. d" y- E8 X
) W0 u8 ]# O" ` u5 U \( A. t& z
Из группы: Lineage 2 |
|