---
key: lesson/npc-perception
type: lesson
id: npc-perception
lang: ru
title: Восприятие NPC и память о цели
summary: >-
  Разделяем состояние мира и знания персонажа: видимость, последнее наблюдение,
  забывание и понятная реакция.
updatedAt: '2026-10-20'
status: active
url: 'https://gamemechanics.pro/ru/lessons/npc-perception/'
jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/lesson/npc-perception.json'
markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/lesson/npc-perception.md'
aliases: []
tags:
  - npc-ai
  - perception
  - state-machines
sourceIds:
  - source-52855da41e5f6f4d
sources:
  - id: source-52855da41e5f6f4d
    title: 'Martin Walsh: Modeling Perception and Awareness in Splinter Cell Blacklist'
    url: >-
      https://www.gameaipro.com/GameAIPro2/GameAIPro2_Chapter28_Modeling_Perception_and_Awareness_in_Tom_Clancy%27s_Splinter_Cell_Blacklist.pdf
    verifiedAt: null
relations:
  - type: requires
    direction: outgoing
    label: Перед началом
    key: lesson/state-machines
    title: Состояния и переходы
    url: 'https://gamemechanics.pro/ru/lessons/state-machines/'
    jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/lesson/state-machines.json'
    markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/lesson/state-machines.md'
  - type: requires
    direction: incoming
    label: Продолжить изучение
    key: lesson/npc-action-selection
    title: Как NPC выбирает действие
    url: 'https://gamemechanics.pro/ru/lessons/npc-action-selection/'
    jsonUrl: >-
      https://gamemechanics.pro/api/v1/knowledge/ru/lesson/npc-action-selection.json
    markdownUrl: >-
      https://gamemechanics.pro/content/knowledge/ru/lesson/npc-action-selection.md
  - type: explains
    direction: outgoing
    label: Применение принципа
    key: mechanic/boss-fight-atlas--boss-cover-line-of-sight
    title: Укрытие и линия видимости
    url: >-
      https://gamemechanics.pro/ru/knowledge/mechanic/boss-fight-atlas--boss-cover-line-of-sight/
    jsonUrl: >-
      https://gamemechanics.pro/api/v1/knowledge/ru/mechanic/boss-fight-atlas--boss-cover-line-of-sight.json
    markdownUrl: >-
      https://gamemechanics.pro/content/knowledge/ru/mechanic/boss-fight-atlas--boss-cover-line-of-sight.md
  - type: explains
    direction: outgoing
    label: Применение принципа
    key: mechanic/voice-audio--family-22
    title: 'Скрытность, приманки и контроль шума'
    url: 'https://gamemechanics.pro/ru/knowledge/mechanic/voice-audio--family-22/'
    jsonUrl: >-
      https://gamemechanics.pro/api/v1/knowledge/ru/mechanic/voice-audio--family-22.json
    markdownUrl: >-
      https://gamemechanics.pro/content/knowledge/ru/mechanic/voice-audio--family-22.md
  - type: practices
    direction: outgoing
    label: Применить на практике
    key: practice/maintenance-patrol
    title: Ремонтный патруль
    url: 'https://gamemechanics.pro/ru/knowledge/practice/maintenance-patrol/'
    jsonUrl: >-
      https://gamemechanics.pro/api/v1/knowledge/ru/practice/maintenance-patrol.json
    markdownUrl: >-
      https://gamemechanics.pro/content/knowledge/ru/practice/maintenance-patrol.md
  - type: related
    direction: outgoing
    label: Связанные материалы
    key: lesson/state-machines
    title: Состояния и переходы
    url: 'https://gamemechanics.pro/ru/lessons/state-machines/'
    jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/lesson/state-machines.json'
    markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/lesson/state-machines.md'
  - type: reviews
    direction: outgoing
    label: Проверить через призму
    key: lens/schell-028
    title: Машина состояний
    url: 'https://gamemechanics.pro/ru/knowledge/lens/schell-028/'
    jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/lens/schell-028.json'
    markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/lens/schell-028.md'
  - type: reviews
    direction: outgoing
    label: Проверить через призму
    key: lens/schell-063
    title: Обратная связь
    url: 'https://gamemechanics.pro/ru/knowledge/lens/schell-063/'
    jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/lens/schell-063.json'
    markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/lens/schell-063.md'
  - type: contains
    direction: incoming
    label: Учебные маршруты
    key: path/npc-behavior
    title: Поведение NPC
    url: 'https://gamemechanics.pro/ru/learn/npc-behavior/'
    jsonUrl: 'https://gamemechanics.pro/api/v1/knowledge/ru/path/npc-behavior.json'
    markdownUrl: 'https://gamemechanics.pro/content/knowledge/ru/path/npc-behavior.md'
placements: []
supersededBy: []
attributes:
  category: engineering
  level: intermediate
  minutes: 6
endsAt: null
provenance: >-
  Авторский материал gamemechanics.pro. Учебные примеры требуют проверки в своём
  проекте.
license: CC-BY-4.0
codeLicense: MIT
attribution: gamemechanics.pro contributors
---
# Восприятие NPC и память о цели

id: npc-perception
type: lesson
key: lesson/npc-perception
lang: ru
status: active
url: https://gamemechanics.pro/ru/lessons/npc-perception/

Разделяем состояние мира и знания персонажа: видимость, последнее наблюдение, забывание и понятная реакция.

## Что нужно знать

Игровой код знает координаты всех объектов. NPC не обязан знать их. В этом уроке ИИ означает алгоритм поведения персонажа, а не языковую модель.

## Принцип

Отделите наблюдение от решения. Восприятие сообщает «цель видна» или «шум услышан», память хранит последнее известное место, поведение выбирает действие. Глава Мартина Уолша в Game AI Pro 2 разбирает восприятие и осведомлённость как игровые модели, для которых важны последовательность правил и обратная связь.

Начните с [состояний и переходов](/ru/lessons/state-machines/). Затем явно определите, какие сведения доступны в каждом состоянии. Если NPC использует скрытые координаты игрока после потери видимости, это должно быть осознанным правилом игры, а не случайной утечкой данных.

<span id="пример-наблюдательный-дрон"></span>

## Практический пример

### Наблюдательный дрон

В самостоятельной учебной модели дрон замечает игрока в секторе 90° на расстоянии до 8 м при свободном луче до контрольной точки цели. Одного радиуса недостаточно: стена блокирует наблюдение. Луч до одной точки тоже упрощает реальность и может давать странные результаты у края укрытия.

При видимости дрон обновляет последнее известное место. Потеряв игрока, он ищет в этом месте две секунды, затем возвращается к маршруту. Он не обновляет память сквозь стену.

Иллюстративный псевдокод, не код конкретного движка:

```text
visible = within_range(target) and within_cone(target) and clear_ray(target)
if visible:
    memory.position = target.position
    memory.expires_at = now + 2.0
    state = tracking
else if now < memory.expires_at:
    state = searching
    search_position = memory.position
else:
    state = patrol
```

Предполагается, что до первого наблюдения срок памяти уже истёк. Вариант хранит короткую память, но не моделирует накопление подозрения. Добавляйте его, только если это нужно игровому правилу.

## Частые ошибки

- Дальность есть, проверки преграды нет: NPC видит через стены.
- Поиск идёт к текущей скрытой цели: память на деле всеведущая.
- Состояние меняется без сигнала: игрок не понимает, обнаружен ли он.

## Проверка результата

- Покажите отладочный сектор, луч, состояние и точку памяти.
- Проверьте цель впереди, позади, за стеной и на границе дальности.
- После потери видимости переместите игрока и убедитесь, что точка памяти неподвижна.
- При дискретном обновлении проверьте истечение памяти на первом тике после срока.

## Задание для ИИ-агента

> Реализуй раздельные наблюдение, память и состояние дрона. Подготовь четыре сцены проверки и журнал причин перехода. Назови упрощения луча и частоты обновления. Визуально обозначь поиск, не используя только цвет.

Для разбора используйте призмы [«Машина состояний»](/ru/lenses/#schell-028) и [«Обратная связь»](/ru/lenses/#schell-063).

## Связанные материалы

- Перед началом: [Состояния и переходы](https://gamemechanics.pro/ru/lessons/state-machines/) (key: lesson/state-machines)
- Продолжить изучение: [Как NPC выбирает действие](https://gamemechanics.pro/ru/lessons/npc-action-selection/) (key: lesson/npc-action-selection)
- Применение принципа: [Укрытие и линия видимости](https://gamemechanics.pro/ru/knowledge/mechanic/boss-fight-atlas--boss-cover-line-of-sight/) (key: mechanic/boss-fight-atlas--boss-cover-line-of-sight)
- Применение принципа: [Скрытность, приманки и контроль шума](https://gamemechanics.pro/ru/knowledge/mechanic/voice-audio--family-22/) (key: mechanic/voice-audio--family-22)
- Применить на практике: [Ремонтный патруль](https://gamemechanics.pro/ru/knowledge/practice/maintenance-patrol/) (key: practice/maintenance-patrol)
- Связанные материалы: [Состояния и переходы](https://gamemechanics.pro/ru/lessons/state-machines/) (key: lesson/state-machines)
- Проверить через призму: [Машина состояний](https://gamemechanics.pro/ru/knowledge/lens/schell-028/) (key: lens/schell-028)
- Проверить через призму: [Обратная связь](https://gamemechanics.pro/ru/knowledge/lens/schell-063/) (key: lens/schell-063)
- Учебные маршруты: [Поведение NPC](https://gamemechanics.pro/ru/learn/npc-behavior/) (key: path/npc-behavior)

## Источники и происхождение

Авторский материал gamemechanics.pro. Учебные примеры требуют проверки в своём проекте.

- [Martin Walsh: Modeling Perception and Awareness in Splinter Cell Blacklist](https://www.gameaipro.com/GameAIPro2/GameAIPro2_Chapter28_Modeling_Perception_and_Awareness_in_Tom_Clancy%27s_Splinter_Cell_Blacklist.pdf) (id: source-52855da41e5f6f4d)

CC-BY-4.0 · gamemechanics.pro contributors
