artace.ru - творческий сектор

Название: Роль AI в L2J_Mobius [Версия для печати]

Автор: admin    Время: 2024-10-21 22:39
Название: Роль AI в L2J_Mobius
Роль AI в сборке L2J_Mobius  O/ e! l% L- H" ?4 N# F9 @" X3 J' ]
[attach]504[/attach]
' H- C$ a2 d" m4 ?В игре Lineage 2, NPC (неигровые персонажи) играют ключевую роль: они могут быть монстрами, торговцами, квестовыми персонажами и другими существами, взаимодействующими с игроками. Для того чтобы NPC могли динамично реагировать на действия игроков, в игре используется AI (Artificial Intelligence — искусственный интеллект)." y, a' r* W; o
В L2J_Mobius, AI определяет, как NPC будут вести себя в определённых ситуациях: как они реагируют на атаки, следят за игроками, взаимодействуют с другими объектами игрового мира, и какие действия они предпринимают в различных игровых ситуациях.
8 T" |" ~# m& T7 pОсновные классы AI:8 q2 C& p# u& ?' L+ v0 N5 [6 U6 u2 q
2 @7 Q) B; p$ x7 z: q/ @5 X
  1. public void onIntentionAttack(Creature target) {  // public void наНамерениеАтаковать(Существо цель)
    ! U  N4 ]7 [+ D$ A
  2.     // Устанавливаем намерение NPC атаковать цель' N* o; a4 m: s1 h, F9 B- Z  Y' n
  3.     setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);  
    $ p; \1 w, U; V& m1 L  p1 ?
  4. }
    $ ]5 N2 u* a3 a1 K' J# ?: v& g! `
Скопировать код
    2. AttackableAI.java. c5 }4 M  n- \& k2 `' ~1 g6 e& M' B
9 O, Y; z# U8 @/ r+ V- E, W! y
Пример логики атаки NPC:
) {/ Y0 [! f, v& ^9 x! M
  1. @Override
    " Y# S# B( z, Y
  2. protected void onEvtAttacked(Creature attacker) {  // public void наСобытиеАтаки(Существо атакующий)2 V1 ]4 q! a. K5 `+ z0 R3 W( Y; M- R$ \# G
  3.     // Добавляем атакующего в список целей
    2 l' c7 H* R9 l5 |3 N
  4.     getActor().addDamageHate(attacker, 0, 1);  
    5 j- d' G7 p* }$ \) ^1 b# I. y; j
  5.     // Если NPC не занят другим действием, инициируем атаку
    # C! {2 V7 ]! R$ h* Q' \9 s
  6.     if (!getActor().isAttackingNow()) {
    ) u! ?  {, J6 R+ [4 L( Q2 ~! _0 ?
  7.         onIntentionAttack(attacker);  // Нападаем на атакующего& F& h; [& ^. k# T! w5 n
  8.     }; v' T, [" e5 O# p! g
  9. }$ n# y/ s2 r9 h6 N8 B+ V1 _4 L
Скопировать код
3. NpcAI.java
: h* T" |  V& b4 j- [. V
0 C  N1 k5 ?( M8 c4 z0 C  IПример взаимодействия с игроком:- }$ |- Y5 I9 Q. w$ o: N
  1. @Override9 o" Y/ @. U" y6 q; F% Y) s+ N9 M
  2. protected void onEvtThink() {0 r% {0 O$ Z4 a* z, {6 k
  3.     if (_actor.isNpc()) {$ T- B% b& g# ]$ U/ W
  4.         // Открываем окно диалога при взаимодействии с NPC% x6 t/ F! {% L) Y6 k" m6 o
  5.         _actor.showChatWindow(player);
    % \' s# \  M0 U1 U6 Z& f# W
  6.     }
    ( k, J8 X( `5 j3 A& ?; ~' c* O
  7. }# O! X6 {( A4 I
Скопировать код
Как AI влияет на игровой процесс?2 m5 h# m. I1 ^* s
Примеры использования AI в игре:. r1 b/ _8 Y6 _
Итог:AI в L2J_Mobius — это ключевой элемент, который делает NPC живыми и динамичными. С помощью AI можно управлять как агрессивными монстрами, так и мирными NPC, настраивая их поведение в зависимости от различных условий. Основные классы AI, такие как AbstractAI, AttackableAI и NpcAI, позволяют гибко настраивать поведение NPC, делая игровой процесс интересным и разнообразным." x8 {7 k+ }# N! C0 W
6 c! _0 n. r) {/ E3 n" g
P.S.2 M% K& J! i* S8 x1 R' z2 Z9 s8 b4 O
Кажется, что иногда NPC умнее, чем мы думаем... будьте осторожны, вдруг они планируют захват сервера? 😄8 V4 T, |* N9 O7 p$ ]: m. d/ z$ f1 m9 |, s

1 }* G: v+ X, x" Z1 C$ l! J  {4 w" v; r- F# e

5 ?& c3 Q% O& \6 k. U. Y[groupid=76]Lineage 2[/groupid]




Добро пожаловать artace.ru - творческий сектор (https://artace.ru/) Powered by Discuz! X3.5