Game AI 39

Learning (3) - 플레이어 행동 예측

개요 플레이어의 행동을 예측하는 것은 여러 성향의 플레이어들에게 대항하는 AI를 만드는 데 도움이 된다. 많은 연구 결과에 따르면 인간은 무작위로 행동하는데 잼병이라 이를 이용하여 플레이어의 행동을 어느정도 예측할 수 있다. 예제로 간단하게 플레이어가 왼쪽을 고르는지, 오른쪽을 고르는지 맞추는 게임이 있다고 하자. 그렇다면 플레이어의 행동을 다음과 같은 방법으로 예측해볼 수 있다. 그냥 확률로 계산 그냥 지금까지 통계적으로 플레이어가 어떤 행동을 했는지를 이용하는 것. 이 방법은 구현이 매우 간단하지만, 플레이어가 이를 눈치채고 다르게 행동할 가능성이 높다. N-Gram 플레이어가 왼쪽을 골랐으면 "L" 오른쪽을 골랐으면 "R"이라는 문자를 이용하여 플레이어가 지금까지 한 행동을 문자열로 표현할 수 있다..

Game AI 2023.10.29

Learning (2) - 파라미터 학습

파라미터 학습 가장 쉬운 학습 알고리즘은 여러 개의 파라미터들의 값을 바꾸는 것. steering 알고리즘이나, 길찾기 알고리즘등에서 사용되는 magic number가 대표적인 예이다. 의사 결정 확률등을 조금 변화시키는 것도 AI동작을 크게 다르게 할 수 있다. 이처럼 파라미터들은 학습하기 좋은 대상이다. 파라미터 그래프 파라미터를 학습할 때, 파라미터 값에 따라 점수를 매길 수 있어야 한다. 점수는 AI에서 해당 파라미터 값이 얼마나 좋은지를 의미한다. 파라미터가 단 하나라면 위 그림처럼 2차원 그래프가 나오겠지만 파라미터가 여러 개라면 다 차원의 그래프가 나올 수 있다. 이런 경우 파라미터 값들의 집합에 따라 점수를 매길 수 있다. 파라미터 학습하기 만약 점수와 값의 그래프가 미분 가능하다면, 그냥..

Game AI 2023.10.22

Learning (1) - 기초

오프라인 및 온라인 학습 플레이어가 게임을 하는 중에도 AI는 학습할 수 있는데, 이런 걸 온라인 학습이라고 부른다. 온라인 학습은 플레이어의 행동에 따라 동적으로 대응이 가능하다는 장점이 있다. 그러나 온라인 학습은 행동의 예측이나 테스트가 어렵다는 단점이 있음. 만약 버그라도 발생했다? 이슈 재현부터 쉽지 않음. 대부분의 게임 AI에서 학습은 오프라인임. 어떤 지형에서 정확한 길찾기나 이동에 관한 정보를 학습한다든지, 물리 엔진을 이용하여 상호작용하는 것을 학습한다든지 할 때 많이 쓰인다. 로딩 중에 학습하는 것도 오프라인이지만 온라인 학습의 단점을 동일하게 지닌다고 보면 됨. . 행동 내부 학습 intra-behavior learning 학습 중에 가장 간단한 부류로, 캐릭터의 행동 중 작은 부분을..

Game AI 2023.10.09

Rule-Based System (3) - Rete

2023.01.07 - [Game AI] - Rule-Based System (2) Rule-Based System (2) 2022.12.12 - [Game AI] - Rule-Based System (1) Rule-Based System (1) 개요 규칙 기반 시스템(Rule-based systems)은 1970~1980년대 AI 연구를 주름잡았었다. 게임에서도 20년가량 쓰였지만 비효율적이고 구현이 힘들다는 tsyang.tistory.com Unification 다음과 같이 와일드카드를 이용한 패턴이 있다고 해보자. (?person (hp 0-15)) AND (라디오 (held-by ?person)) 그리고 데이터 베이스는 다음과 같다. 데이비드 (hp 30) 레베카 (hp 15) 루시 (hp 25)..

Game AI 2023.01.22

Rule-Based System (2)

2022.12.12 - [Game AI] - Rule-Based System (1) Rule-Based System (1) 개요 규칙 기반 시스템(Rule-based systems)은 1970~1980년대 AI 연구를 주름잡았었다. 게임에서도 20년가량 쓰였지만 비효율적이고 구현이 힘들다는 평가를 받고 있다. 결정 트리나 상태 머신으로 더 쉽 tsyang.tistory.com 구조 및 인터페이스 룰베이스 시스템의 알고리즘은 간단하지만 자료구조는 구현이 까다롭다. 특히 매칭해주는 로직이 제일 무겁다. DB DB는 트리구조로 관리된다. class DataNode : string id class DataGroup extends DataNode : DataNode[] children class Datum ext..

Game AI 2023.01.07

Rule-Based System (1)

개요 규칙 기반 시스템(Rule-based systems)은 1970~1980년대 AI 연구를 주름잡았었다. 게임에서도 20년가량 쓰였지만 비효율적이고 구현이 힘들다는 평가를 받고 있다. 결정 트리나 상태 머신으로 더 쉽게 대체 가능하다는 점도 이런 평가에 한 몪 했다. 그러나 디버깅이 용이하고 컨텐츠 창작이 쉽다는 장점도 있다. 아이디어는 간단하다. "IF" 조건이 만족하면 "THEN" 컴포넌트를 수행한다. 그 외에도 어떤 트리거를 선택할지를 정하는 중개자(Arbiter) 컴포넌트도 있다. 아이디어 DB매칭 만약 IF 조건이 DB에 부합한다면 트리거가 발동한다. 이런 조건을 패턴이라고 한다. A : HP = 50 B : HP = 30 C : HP = 100 D : HP = 25 D : has-C4 만약..

Game AI 2022.12.12

목표지향 행동 - 3

2022.11.24 - [Game AI] - 목표 지향 행동 - 2 목표 지향 행동 - 2 2022.11.20 - [Game AI] - 목표 지향 행동 (Goal-Oriented Behavior) - 1 목표 지향 행동 (Goal-Oriented Behavior) - 1 2022.11.13 - [Game AI] - 마르코프 시스템(Markov Systems) 개요 지금까지는 몇몇 인풋들이 캐릭터에게 제공 tsyang.tistory.com 목표 지향 계획 계획의 필요성 이전에 다룬 로직에서는 해결이 불가능한 상황이 있다. 다음 예시를 보자 목표 : 체력 회복 = 4 목표 : 적 죽이기 = 3 행동 : 화염구 (적 죽이기 - 2) MP - 30 행동 : 회복 (체력 회복 - 2) MP - 20 행동 : 대회..

Game AI 2022.12.04

목표 지향 행동 - 2

2022.11.20 - [Game AI] - 목표 지향 행동 (Goal-Oriented Behavior) - 1 목표 지향 행동 (Goal-Oriented Behavior) - 1 2022.11.13 - [Game AI] - 마르코프 시스템(Markov Systems) 개요 지금까지는 몇몇 인풋들이 캐릭터에게 제공되면 그에 따라 어떤 행동을 할지 결정했다. 이런 과정에서 캐릭터의 '목표'는 빠져있다. 심즈(Th tsyang.tistory.com 이전 글에서 다음과 같이 문제를 언급했다. 두 가지 문제가 있는데, 하나는 행동을 하며 생기는 부수 효과(side effect)들을 무시한다는 것이고 다른 하나는 수행 시간을 무시한다는 것이다. 이 둘을 해결해보자. 효용(Utility) 부작용을 무시한다는 게 뭐..

Game AI 2022.11.24

목표 지향 행동 (Goal-Oriented Behavior) - 1

2022.11.13 - [Game AI] - 마르코프 시스템(Markov Systems) 개요 지금까지는 몇몇 인풋들이 캐릭터에게 제공되면 그에 따라 어떤 행동을 할지 결정했다. 이런 과정에서 캐릭터의 '목표'는 빠져있다. 심즈(The sims)와 같은 게임의 경우 캐릭터는 밥을 먹거나, 잠을 자거나, 책을 읽는 등의 행동을 취할 수 있다. 이런 행동들은 캐릭터들의 정서 및 신체적인 상태를 표현한다. 이런 행동들을 하기 위해서 결정 트리(Decision Tree)를 사용할 수도 있지만 심즈와 같은 경우라면 결정 트리가 매우 커질 것이고 각 캐릭터마다 수백개의 액션이 존재하게 된다. 더 나은 방법은 캐릭터가 자신의 욕구에 맞는 행동 중 하나를 고르게 하는 것이다. 이것이 목표 지향 행동 (Goal-Orie..

Game AI 2022.11.20

마르코프 시스템(Markov Systems)

개요 마르코프 시스템은 흔히 쓰는 명명법은 아니고, 그냥 마르코프 프로세스(Markov Process)를 쓰는 시스템이라는 뜻이다. 왜 쓰냐? 퍼지 상태 머신처럼 한 번에 여러 상태가 존재할 수 있는 것은 유용한데, 퍼지 상태 머신의 경우 각 상태의 소속도자체는 의미가 없고 상태들의 소속도를 적절히 역퍼지화(Defuzzify)해야 의미가 생긴다. 그러나 만약 상태들의 값 자체에 의미를 두고 싶은 경우에는 마르코프 프로세스를 이용할 수 있다. 마르코프 프로세스 과거는 무시하고 현재 상태로만 미래를 예측할 수 있는 경우를 다룬다. 대략적으로 설명하면 다음과 같다. 현재 날씨 상태를 표현하는 데이터가 있다고 하자. 어떤 날에 날씨가 맑다면 그 다음 날도 날씨가 맑을 확률이 0.8, 흐릴 확률이 0.2이다. 어..

Game AI 2022.11.13