비디오 게임에서 NPC 행동 모델 및 인공지능(AI) 종류 - FSM, 퍼지 로직(Fuzzy Logic), BT, 기타
비디오 게임에서 게임AI는 주로 NPC의 반응성, 적응성, 기타 지능적인 행동을 생성하는데 사용됩니다. NPC는 게임에서 플레이어가 제어하지 않는 비플레이어 캐릭터 (Non-player character, NPC )로 AI 시스템이 관리하는 비디오 게임 내의 개체입니다.
게임 AI는 지능에 관한 것이 아니며 게임 플레이 경험을 개선하는데 목적이있습니다.
(AI 학문 분야의 목표를 상당부분 공유하지 않으며 실제 AI는 기계 학습, 의사 결정, 추론등의 강력한 AI 의 궁극적인 목표를 다룸)
비디오 게임의 인공지능(Artificial intelligence in video games)
https://en.wikipedia.org/wiki/Artificial_intelligence_in_video_games
FSM(Finite State Machine)
유한 상태 기계(Finite-State Machine, FSM)는 특정 순간에 유한한 개수의 상태 중 하나에 있을 수 있는 계산 모델입니다. FSM은 입력에 대해 한 상태에서 다른 상태로 전이(Transition)할수있으며 상태 목록, 초기 상태, 상태 전이를 일으키는 입력(전이를 트리거하는 입력)들로 정의됩니다.
결정적 유한 상태 기계 (DFA) - 각 입력에 대해 하나의 결과만 존재합니다.
비결정적 유한 상태 기계 (NFA) - 같은 입력에 대해 여러 결과가 나올 수 있습니다.
FSM 사용 예시
자동판매기, 엘리베이터, 신호등(정해진 순서대로 작동하는 시스템)
게임에서 AI 캐릭터가 특정 조건에 따라서 정해진 상태(공격, 방어, 이동)를 전환하는 경우(간단한 행동 패턴을 가진 NPC나 적 캐릭터에 사용)
https://en.wikipedia.org/wiki/Finite-state_machine
NPC - 비플레이어 캐릭터 (Non-player character, NPC )는 플레이어가 제어하지 않고 AI 시스템이 관리하는 비디오 게임 내의 개체입니다
https://en.wikipedia.org/wiki/Non-player_character
상태로 로직을 구성하는 State 패턴(Unity Korea)
FuSM
FuSM(퍼지 유한 상태 기계, Fuzzy Finite-State Machine)은 FSM에 fuzzy algorithm을 접목시킨 모델.
상태 간 전이가 명확하게 결정되지 않고 여러 상태가 동시에 활성화될 수 있습니다(상태가 중간 값을 가질 수 있음) 각 상태에 퍼지(Fuzzy)값을 부여하여 가능성을 계산하고 특정 상황에서 여러 상태가 일정 비율로 활성화되는 방식.
비결정적 환경(모호함)이나 복잡한 행동이 요구되는 게임 AI에 사용될수있습니다.
예를 들어 게임 AI에서 캐릭터가 "공격"과 "방어"를 어느정도 동시에 수행하도록 설정할 수 있어 더 유연하고 자연스러운 캐릭터 반응(상태 변화)를 구현할 수 있습니다.
퍼지 로직(Fuzzy Logic)
퍼지 로직(Fuzzy Logic)은 참(True)과 거짓(False)만을 갖는 이진 논리가 아닌 연속적인 값으로 상태나 명제를 표현하는 논리 체계입니다. 퍼지 로직에서는 상태가 부분적으로 참일 수 있는 가능성을 반영하여 불확실성이나 모호함을 포함한 결정을 내릴 수 있습니다.
연속적 참값
퍼지 로직에서는 참과 거짓 외에도 0에서 1 사이의 값을 사용해 상태를 표현합니다. 예를 들어 기존 논리에서는 "온도가 높다"는 조건이 참(1) 또는 거짓(0)만 될 수 있지만 퍼지 로직에서는 "온도가 약간 높다"를 0.6 등으로 표현할 수 있습니다.
퍼지 로직은 인간의 언어나 경험적 판단처럼 애매한 개념을 수치화하여 계산합니다. 이를 통해 "어느 정도", "약간", "거의"와 같은 개념을 컴퓨터가 다룰 수 있게 됩니다.
자동차의 제어 시스템, 에어컨의 온도 조절, 세탁기의 세탁 설정 등 다양한 곳에서 응용
https://en.wikipedia.org/wiki/Fuzzy_logic
Fuzzy Logic - Computerphile
BT(Behavior Tree)
행동 트리(Behavior Tree)는 주로 로봇 제어 시스템과 게임 AI에서 시스템 또는 캐릭터의 행동을 정의하고 관리하는 데 사용되는 구조입니다. Behavior Tree는 여러 종류의 노드(Node)들로 구성된 트리 구조입니다. 트리의 루트(root)에서 시작하여 하위 노드들이 순차적으로 실행되며 노드는 조건을 검사하거나(제어 흐름 노드, control flow nodes) 특정 행동을 수행하고(실행 노드, execution nodes) 그 결과를 부모 노드에 전달합니다.
트리는 실행 중에 다른 조건을 평가하여 동적으로 행동을 전환할 수 있어 로봇 또는 게임 캐릭터의 유연하고 적응력 있는 행동을 가능하게 합니다(적이 가까워지면 공격하고 일정 거리 이상 떨어지면 추격하는 행동등을 정의)
행동 트리는 시각적으로 직관적이며(가독성) 설계 및 테스트가 쉽고(디버깅 용이성), 다른 행동 생성 방법보다 유연성, 확장성 및 재사용성이 더 뛰어납니다. 상태 기계(Finite State Machine, FSM)는 단순한 시스템에는 적합하지만 복잡한 행동 패턴을 처리하는 데 한계가 있을 수 있습니다(확장성)
https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control)
NN(neural networks)
신경망과 머신러닝. 복잡한 패턴을 인식하고 학습하는 데 사용되며 예측 모델을 통해 플레이어의 행동을 예측하거나 NPC의 대화 능력을 개선하는 데 사용할 수 있습니다. NLP(자연어 처리): 대화형 AI 캐릭터에 자주 사용되며 플레이어와 자연스러운 대화를 나누는 기능을 제공합니다.
https://en.wikipedia.org/wiki/Neural_network_(machine_learning)
GA(genetic algorithms)
유전자 알고리즘. 선택 , 교차 , 돌연변이와 같은 자연 선택 과정(생물학)에서 영감을 받은 메타휴리스틱 알고리즘.
여러 개체가 적응해 나가면서 점점 더 뛰어난 성능을 발휘하도록 설정할 때 사용될수있습니다( 적이나 NPC가 진화하면서 학습하도록 설정)
https://en.wikipedia.org/wiki/Genetic_algorithm
기타
규칙 기반 시스템(Rule Based System)
https://en.wikipedia.org/wiki/Rule-based_system
'유니티게임개발 > 개발정보' 카테고리의 다른 글
구글 플레이(google play) 피처링 앱/게임 후보작 등록 양식 제출하기 (0) | 2022.06.24 |
---|---|
Game jam(게임 잼) - 비디오 게임 개발 경연 대회 (0) | 2022.06.23 |
스마트폰 제품의 cpu성능(chipset)을 비교할수있는 웹사이트 (0) | 2022.03.07 |
스마트폰 사양 비교 웹사이트 (0) | 2022.02.18 |
geekbench - cpu 벤치마킹 프로그램 (0) | 2021.11.08 |