비디오 게임 속 NPC · 네 개의 플레이 가능한 세계

비디오 게임 속 NPC: 논플레이어 캐릭터는 어떻게 작동하는가 (플레이 가능한 데모 포함)

나만의 NPC 비디오 게임 만들기

비디오 게임에서 NPC란 무엇일까요? NPC가 어떻게 만들어지고 어떻게 행동하는지 살펴보고, 논플레이어 캐릭터가 움직이고 말하고 반응하는 실제 브라우저 3D 게임 네 개를 플레이해 보세요.

✦게임
만들기: NPC 비디오 게임

비디오 게임에서 NPC는 논플레이어 캐릭터입니다. 즉 플레이어가 직접 조종하지 않지만 공간을 차지하고, 상태를 유지하며, 세계의 조건에 반응하는 개체입니다. 이 용어는 의도적으로 넓으며, 그 넓이 때문에 대부분의 혼란이 생깁니다. 일정이 있는 상점 주인, 복도를 따라오는 분대원, 같은 대사를 반복하는 떠돌이 상인은 모두 NPC이지만, 만들어지는 방식도 다르고 실행 비용도 같지 않습니다.

이 페이지에서는 NPC가 실제로 무엇인지, 어떻게 만들어지는지, 그리고 살아 있는 것처럼 보일 뿐인 스크립트 트리거와 어떻게 구별하는지 다룹니다. 이 사이트의 플레이 가능한 세계 네 곳 — Agent Sprite Forge, The Cyclops’ Island, Mini World, 그리고 3D 게임 빌더 자체 — 를 실제 예시로 사용하므로, NPC에 대한 글을 읽는 대신 직접 다가가 그 행동을 지켜볼 수 있습니다.

간단한 답: 비디오 게임에서 무엇이 NPC인가

NPC는 게임 세계에서 플레이어가 직접 조종하지 않는 모든 캐릭터입니다. 위치, 상태, 그리고 플레이어가 버튼을 누르지 않아도 발동하는 최소 하나의 행동을 지닙니다. 장면에서 플레이어를 제거해도 그 캐릭터가 여전히 무언가를 한다면 — 경로를 걷고, 문을 열고, 근처의 사건에 반응한다면 — 그것은 NPC입니다.

캐릭터와 기제를 가르는 기준은 상태 소유입니다. 캐릭터는 프레임을 넘어 유지되는 변수를 소유합니다. 현재 체력, 현재 대상, 현재 순찰 인덱스, 현재 대사 노드 같은 것입니다. 기제는 실질적으로 상태가 없습니다. 조건이 충족되면 한 번 발동하고 끝납니다. 성문을 여는 압력판은 기제입니다. 성문이 열리는 것에 반응하고, 당신이 거기 서 있었다는 것을 기억하며, 경로를 바꾸는 경비병은 NPC입니다. 차이는 시각적 완성도가 아닙니다. 사건이 일어난 그 프레임 이후에도 무언가가 살아남는지 여부입니다.

비디오 게임 NPC의 짧은 역사

1970년대 후반과 1980년대의 텍스트 어드벤처는 NPC를 파서가 인식하는 대상으로 구현했습니다. 캐릭터는 파서가 인식하는 이름 붙은 명사 하나와 작은 플래그 묶음으로만 존재했습니다. 초기 텍스트 어드벤처의 도둑은 당신이 같은 방에 있고 그가 아직 훔치지 않았다면 물건을 훔쳤습니다. 그것이 두 개의 변수로 이루어진 NPC입니다. 존재 여부와 훔쳤는지 플래그입니다. 길 찾기도, 애니메이션도, 일정 관리도 없었습니다. 행동은 캐릭터가 아니라 플래그에 있었습니다.

스프라이트 시대의 NPC는 애니메이션과 충돌을 더했지만 행동은 얇게 유지했습니다. 마을 주민은 고정된 두 지점을 왕복하고, 플레이어가 반경 안에 들어오면 대기 애니메이션을 재생하고, 접촉하면 대화 상자를 열었습니다. 중요한 기술적 변화는 NPC가 이제 물리 세계에서 위치를 가지게 되었기에 값이 싸야 했다는 점입니다. 8비트와 16비트 하드웨어에서 한 화면에 수십 개가 동시에 등장했으므로, 각 NPC는 몇 바이트의 상태를 받고 거리 비교보다 복잡하지 않은 프레임별 검사를 실행했습니다.

일정 기반 NPC는 메모리와 CPU 예산이 플레이어의 위치와 무관하게 캐릭터가 존재할 수 있게 해 주면서 등장했습니다. 영업시간 값, 집 경유 지점, 걷기 경로를 지닌 상점 주인은 당신이 도착했을 때 다른 곳에 있을 수 있고, 그 부재는 플레이어가 알아볼 수 있습니다. 구현은 시계 하나와 조회 표 하나입니다. 게임 시각 21시에는 집 경유 지점을 목표로 삼고, 08시에는 상점을 목표로 삼습니다. 플레이어는 표를 보지 못하고 결과만 봅니다.

생성형 NPC는 현재 시대의 것입니다. 상태마다 한 줄씩 저작하는 대신 캐릭터 설명을 저작하고, 모델이 실행 중에 대사나 짧은 외침, 행동을 만들어 내게 합니다. 이제 트레이드오프는 저장 공간이 아니라 결정성입니다. 생성된 대사는 완전히 미리 볼 수 없으므로, 어조와 길이, 그리고 NPC가 참조할 수 있는 범위에 대한 안전장치가 필요합니다. 3D 게임 빌더에서 NPC 프롬프트가 설명 하나와 작은 행동 집합으로 제한되는 이유가 바로 이것입니다.

현대의 NPC는 어떻게 만들어지는가

모든 NPC는 다섯 개의 협력하는 부분이 쌓인 구조입니다. 상태, 경로 탐색, 애니메이션, 대사, 인지입니다. 상태는 NPC가 소유한 데이터입니다. 체력, 대상, 순찰 인덱스, 대사 노드, 경계 수준입니다. 경로 탐색은 지점 사이를 이동하는 방식입니다. 애니메이션은 이동과 대기 순간이 표현되는 방식입니다. 대사는 조건에 반응해 만들어지는 텍스트와 음성입니다. 인지는 NPC에게 무언가 변했다고 알려 주는 입력으로, 보통 거리 검사, 시야 레이캐스트, 트리거 볼륨 겹침입니다.

일반적인 프로젝트에서 이 부분들은 서로 다른 곳에 있습니다. 상태는 NPC 엔티티의 스크립트나 컴포넌트입니다. Unity식으로 말하면 모노비헤이비어이고, Godot에서는 노드 스크립트이며, 브라우저 Three.js 빌드에서는 메시에 붙은 평범한 객체입니다. 경로 탐색은 경유 지점 데이터이거나 내비메시입니다. 애니메이션은 대기, 걷기, 공격처럼 이름 붙은 클립을 가진 상태 기계입니다. 대사는 데이터 파일로, 흔히 작은 노드 그래프이거나 상태를 키로 한 표입니다. 인지는 보통 충돌 형상 하나와 프레임별 검사입니다.

가장 흔한 실패 유형은 상태와 애니메이션이 어긋나는 것입니다. NPC가 추격 상태인데도 여전히 대기 클립을 재생해서, 다리를 움직이지 않고 당신 쪽으로 미끄러집니다. 해결책은 애니메이션을 더 넣는 것이 아니라, 현재 상태를 기록하는 코드 한 곳과 그 값을 읽어 클립을 고르는 코드 한 곳을 만드는 것입니다. 이 둘이 서로 다른 스크립트에 있으면 미끄러짐이 생깁니다. 같은 함수에 있으면 생기지 않습니다.

두 번째로 흔한 실패는 레벨과 맞지 않는 경로 탐색입니다. 예전 배치를 기준으로 저작한 순찰 경로는 지형이 바뀐 뒤에 NPC를 벽으로 밀어 넣거나 절벽 아래로 떨어뜨립니다. 브라우저 빌드에서 가장 저렴하고 견고한 방법은 순찰 지점을 이름 붙은 빈 객체로 유지하고 로드할 때 다시 찾아내는 것입니다. 그래야 벽을 옮겨도 경로가 끊기지 않습니다.

NPC의 비용이 커지는 곳은 인지입니다. NPC마다 프레임마다 레이캐스트를 하는 것은 캐릭터가 몇 개일 때는 괜찮지만 수백 개일 때는 낭비입니다. 흔한 최적화는 공유 공간 그리드, 검사 주기, 그리고 레이캐스트를 실행하기 전의 조기 거리 제외입니다. NPC가 40미터 떨어져 있고 인지 반경이 8이라면 레이캐스트는 절대 일어나서는 안 됩니다.

장면에서 각 부분이 사는 곳

상태: NPC 엔티티 자체에 둡니다. 작게 유지하세요. 숫자 몇 개와 현재 대사 노드를 위한 문자열 하나면 됩니다. 그보다 더 필요하다면 NPC를 두 캐릭터로 나누세요.

경로 탐색: 장면과 함께 저장되는 월드 공간 지점 목록으로, 모델에 굽지 않습니다. 애니메이션: 리그에 있는 이름 붙은 클립으로, 하나의 상태 전환으로 선택합니다. 대사: 별도 데이터 파일에 두어 작가가 코드를 건드리지 않고 편집할 수 있게 합니다. 인지: 트리거 볼륨과 거리 검사로, 레이캐스트는 첫 단계가 아니라 마지막 단계로 둡니다.

1

01

NPC 모델을 장면에 놓고 현재 상태, 대상, 순찰 인덱스 필드를 가진 상태 컴포넌트를 붙입니다.

2

02

경유 지점 객체를 서너 개 추가하고, 레벨을 수정해도 경로가 살아남도록 이름을 붙입니다.

3

03

최소한 대기와 걷기를 포함하는 애니메이션 상태 기계를 연결하고, 오직 현재 상태 값으로만 구동합니다.

4

04

NPC의 인지 반경에 맞춘 인지 트리거 볼륨을 추가합니다.

5

05

대사를 상태를 키로 한 작은 표로 작성하고, 일치하는 상태가 없을 때 쓸 기본 대사를 둡니다.

6

06

로드할 때 경유 지점과 대사 키를 다시 찾아낸 뒤, 벽 하나를 옮겨 보고 순찰이 여전히 작동하는지 확인합니다.

네 개의 플레이 가능한 세계, 네 가지 종류의 NPC

NPC 행동을 이해하는 가장 명확한 방법은 NPC 옆에 서서 그가 볼 수 있는 것을 바꿔 보는 것입니다. Neta Studio의 이 네 세계는 각각 다른 행동 패턴을 보여 줍니다. 세계를 열고 NPC의 인지 범위 안으로 걸어 들어간 다음, 밖으로 나와 무엇이 달라지는지 지켜보세요.

Agent Sprite Forge는 짧은 캐릭터 설명과 작은 상태 집합으로 정의된 NPC를 실행합니다. 하나에게 다가가면 그 설명을 바탕으로 응답이 생성되며, 세계가 노출하는 상태로 제한됩니다. 흥미로운 시험은 반복입니다. 같은 NPC에게 두 번 다가가 두 번째 응답이 얼마나 달라지는지 비교해 보세요. 그 변동은 세계가 아니라 모델의 것입니다. 상태 기계는 고정되어 있습니다.

The Cyclops’ Island는 추격과 수색 패턴을 지닌 거대한 NPC를 사용합니다. 플레이어가 인지 반경 안에 있으면 사이클롭스는 추격하고, 플레이어가 시야에서 벗어나면 마지막으로 알려진 위치를 수색한 뒤 순찰 경로로 돌아갑니다. 수색 단계가 그것을 유도 미사일이 아니라 캐릭터로 읽히게 만듭니다. 오래된 정보에 근거해 행동하기 때문입니다.

Mini World는 상호작용 안내가 있는 짧은 순환 경로 위에 작은 NPC 여러 명을 배치합니다. 그들의 행동은 의도적으로 얇습니다. 걷고, 멈추고, 플레이어가 1미터 안에 있으면 반응합니다. 여기서 가치는 수량입니다. 다섯이나 여섯을 한꺼번에 지켜보며 설득력 있는 NPC 순환이 실제로 얼마나 저렴한지 확인할 수 있습니다.

3D 게임 빌더는 NPC를 직접 배치하고 구성하는 곳입니다. 각 NPC는 설명 하나, 순찰 경로 하나, 상태 집합 하나를 받습니다. 작은 것을 만들어 보세요. 방 하나, NPC 하나, 경로 하나로 시작해 경계를 시험하세요. NPC가 당신을 전혀 알아채지 못할 때까지 인지 반경을 줄이고, 멈추지 않고 알아챌 때까지 키워 보세요. 그 두 극단 사이의 쓸모 있는 폭이 바로 튜닝 문제이며, 이는 모든 엔진에 존재합니다.

성능에 관한 한 가지. 브라우저 빌드에서 NPC 비용은 지오메트리가 아니라 인지 검사와 애니메이션이 좌우합니다. 프레임마다 레이캐스트를 하는 NPC 열 명은, 공유 주기 검사를 하는 NPC 열 명보다 비용이 더 큽니다. 고해상도 모델이 주기 검사 쪽에 있더라도 마찬가지입니다. NPC가 활성화될 때 장면이 끊긴다면 먼저 인지 루프를 살펴보세요.

  • Agent Sprite Forge설명 기반 NPC와 제한된 생성 응답. 작은 상태 집합과 캐릭터 프롬프트가 어떻게 주제를 벗어나지 않는 대사를 만들어 내는지 확인해 보세요.
  • The Cyclops' Island추격, 수색, 순찰 복귀 상태를 지닌 거대한 NPC 하나. 오래된 정보에 근거한 행동이 어떻게 지능처럼 읽히는지 연구해 보세요.
  • Mini World근접 안내가 있는 짧은 순환 경로 위의 가벼운 NPC 여러 명. 캐릭터가 존재감 있게 읽히기까지 행동이 얼마나 적게 필요한지 확인해 보세요.
  • 3D 게임 빌더NPC를 배치하고, 설명을 설정하고, 순찰 경로를 그리고, 인지 반경을 조정합니다. 당신을 전혀 알아채지 못하는 NPC와 멈추지 않고 알아채는 NPC 사이의 쓸모 있는 폭을 찾아보세요.
Little Ritual — 작은 행성 위의 퀘스트 NPC.

NPC를 설득하는 것은 그래픽이 아니라 행동인 이유

경로를 걷고, 문 앞에서 멈추고, 당신이 돌아왔을 때 다른 곳에 있는 저해상도 캐릭터는 살아 있는 것으로 읽힙니다. 한자리에 서서 같은 대사를 반복하는 고해상도 캐릭터는 가구로 읽힙니다. 플레이어는 다각형을 평가하지 않습니다. 플레이어는 그 캐릭터가 무엇을 원하는지에 대한 모델을 세우는데, 그 모델은 메시가 아니라 타이밍과 위치에서 나옵니다.

그 기제는 기대입니다. 한 캐릭터가 아침에는 시장에, 밤에는 집에 있다면 플레이어는 이 캐릭터에게는 일과가 있다는 가설을 세우고, 그 가설은 두 번째 방문에서 확인됩니다. 그 확인이 바로 효과의 전부입니다. 시계 하나와 조회 표 하나만 들면 됩니다. 조각상에 디테일을 더하는 것으로는 대체할 수 없습니다. 조각상은 결코 무언가를 반박하거나 확인하지 않기 때문입니다.

훨씬 오래된 게임의 일정 기반 NPC가 여전히 회자되는 반면 시각적으로 더 뛰어난 정적 NPC는 잊히는 이유가 여기 있습니다. 행동이 곧 내용입니다. 모델은 포장입니다. 브라우저 편집기에서 만들고 있고 시간이 한정되어 있다면, 텍스처에 쓰기 전에 상태 전환과 순찰 경로에 시간을 쓰세요.

NPC와 스크립트 트리거를 구별하는 방법

NPC와 트리거는 둘 다 플레이어에게 반응하기 때문에 디자인 리뷰에서 혼동됩니다. 구별 기준은 사건 이후에도 무언가가 지속되는지 여부입니다. 무엇을 보고 있는지 판단할 때 아래 신호들을 점검 목록으로 사용하세요.

이 표는 순수성 시험이 아닙니다. 많은 게임이 트리거로 NPC의 행동을 시작시킵니다. 경비병을 순찰에서 경계로 전환하는 트리거 볼륨 같은 것입니다. 이는 정상이며 올바릅니다. 문제는 트리거가 플레이어에게 캐릭터로 제시될 때입니다. 한 번 발동하고, 그 캐릭터는 다시는 아무것도 인식하지 못하며, 착각은 두 번째 조우에서 무너집니다.

신호NPC인 경우스크립트 트리거인 경우
반복같은 캐릭터가 두 번째 조우에서도 반응한다한 번 발동하고 다시는 발동하지 않는다
상태프레임을 넘어 유지되는 변수를 소유한다 — 경계 수준, 순찰 인덱스발동/미발동 플래그 외에는 상태가 없다
위치조우 사이에 세계를 이동한다배치된 자리에 머문다
반응 범위맥락(시간, 체력, 거리)에 따라 다르게 반응한다맥락과 무관하게 같은 반응을 보인다
실패끼이거나, 대상을 놓치거나, 길을 잘못 찾을 수 있다실패하지 않는다 — 발동했거나 발동하지 않았거나 둘 중 하나다
비용프레임마다 인지와 애니메이션 예산을 쓴다사건 이후에는 무시할 만하다
대사상태를 키로 한 집합에서 한 줄을 고른다고정된 한 줄만 재생한다
The Cyclops' Island — 충돌체가 있는 적 NPC.
Ashenmere — 결투하는 동안 읽어 낼 수 있는 적 AI.
Mini World — 세계를 걸으며 그 안에 배치된 캐릭터를 만나 보세요.

그것이 속한 세계로 걸어 들어가기

스프라이트는 설 자리가 없는 캐릭터입니다. 마지막 단계는 다른 곳에서는 제공하지 않는 것입니다. 방금 만든 시트를 누군가 걸어 다닐 수 있는 세계, 즉 작은 섬, 행성, 비 내리는 길모퉁이에 넣는 것입니다. 이 사이트의 모든 세계는 하나의 글로 된 묘사에서 만들어져 플레이할 수 있는 페이지로 공개되었습니다.

3D 게임 빌더로 돌아가기

완성된 3D 세계, 게임, 장면 31개가 모두 한 페이지에 있습니다 — 하나같이 플레이할 수 있습니다.

플랫폼: Neta Studio페이지: 비디오 게임 속 NPC: 논플레이어 캐릭터는 어떻게 작동하는가 (플레이 가능한 데모 포함)다음으로 읽기: /explore/guide/what-is-a-non-player-character · /explore/guide/what-are-npcs · /explore/guide/npc-behavior
×