Game AI 39

의사 결정 - Decision Tree

Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 구현 가능하고 이해하기 쉽다는 장점을 가지고 있다. 위 트리에서 Leaf 노드는 실행할 액션(output)이 된다. input이 어떻게 들어오느냐에 따라 매우 민감하게 output이 바뀔 수 있기 때문에 주의가 필요하다. AND/OR Decision Tree내에서 AND/OR을 구현하는 것은 쉽다. 아래의 그림을 보자 Branching 위 그림처럼 Decision Tree에서 3개 이상의 Branch를 사용할 수 있는데, 2개의 branch만 사용하는 구조에 비해서 더 빨리 output을 찾을 수 있다는 장점이 있다. 그럼에도 불구하고 보통은 2개의 브랜치만 사용한다. 그 이유는 다음과 같..

Game AI 2021.10.21

Game AI - Combining Steering Behaviors (1)

2021.10.03 - [Game AI] - Game AI - Steering Behaviors (3) Game AI - Steering Behaviors (3) 2021.08.07 - [Game AI] - Game AI - Steering Behaviors (2) Game AI - Steering Behaviors (2) 2021.06.19 - [Game AI] - Game AI - Steering Behaviors (1) Align Align은 타겟과 방향을 맞추는 동작이다. 타겟.. tsyang.tistory.com Blending 과 Arbitration Steering behavior들을 조합하는 데에는 크게 두 가지 방법이 있다. 혼합(Blending)은 조향 동작(Steering Behavi..

Game AI 2021.10.10

Game AI - Steering Behaviors (3)

2021.08.07 - [Game AI] - Game AI - Steering Behaviors (2) Game AI - Steering Behaviors (2) 2021.06.19 - [Game AI] - Game AI - Steering Behaviors (1) Align Align은 타겟과 방향을 맞추는 동작이다. 타겟의 속도나 위치와는 관계가 없다. Align을 구현할 때 주의할 점은 회전 방향을 정하는 것인데 이.. tsyang.tistory.com Path Following (길 따라가기) 이 행동을 이해하기 위해선 우선 매개변수를 사용하는 곡선에 대해 알 필요가 있다. 2021.07.11 - [이론] - 곡선(Curve) & 스플라인(Spline) 곡선(Curve) & 스플라인(Spline)..

Game AI 2021.10.03

Game AI - Steering Behaviors (2)

2021.06.19 - [Game AI] - Game AI - Steering Behaviors (1) Align Align은 타겟과 방향을 맞추는 동작이다. 타겟의 속도나 위치와는 관계가 없다. Align을 구현할 때 주의할 점은 회전 방향을 정하는 것인데 이것은 타겟과의 방향 차이를 (-180, +180)도로 매핑하면 된다. protected override SteeringOutput GetSteer() { var result = new SteeringOutput(); var rotation = _target.Orientation - Character.Orientation; rotation = MapToRange(rotation); //회전각도를 [-180,180] 사이로 매핑 var rotation..

Game AI 2021.08.07

Game AI - Steering Behaviors (1)

이전글 : 2021.06.13 - [Game AI] - Game AI - 기본적인 이동 Game AI - 기본적인 이동 KINEMATICS 어떤 물체의 운동 상태는 다음과 같이 표현 할 수 있다. public struct Kinematic { public Vector3 position; public float orientation; // x-z 평면에서 +z축으로부터 시계방향 각도. public Vector.. tsyang.tistory.com 가속도 있는 이동 이전글의 마지막에서 가속도가 없는 운동을 다뤘다. 가속도 없는 운동의 알고리즘들이 속도를 반환했다면 이번에는 각 가속도 운동 알고리즘이 다음과 같은 가속도를 반환한다. public struct SteeringOutput { public Vecto..

Game AI 2021.06.19

Game AI - Kinematic movement alogrithms

KINEMATICS 어떤 물체의 운동 상태는 다음과 같이 표현 할 수 있다. public struct Kinematic { public Vector3 position; public float orientation; // x-z 평면에서 +z축으로부터 시계방향 각도. public Vector3 velocity; public float rotation; //각속도 } 그러나 이거 가지고 운동을 표현하기는 조금 어색한데, 가속도의 개념이 빠져있기 때문이다. 따라서 외부에서의 힘(가속도)는 다음과 같이 표현할 수 있다. public struct SteeringOutput { public Vector3 linear; // 가속도 public float angular; // 가속도(각) } 이걸로 운동 상태를 업데..

Game AI 2021.06.13

게임 AI의 구현

때로는 단순하게 복잡한 게임 AI가 꼭 좋은 AI는 아니다. 복잡한 AI는 생각하는 대로 구현하기 힘들고 예상치 못한 버그도 많이 생긴다. 단순한게 좋은 예 팩맨의 사례를 보자. 팩맨에는 4가지 유령이 존재한다. 각 유령의 타겟은 다음과 같다. Blinky(빨강) : 플레이어의 위치를 쫓아감 Pinky(핑크색) : 플레이어가 보는 방향의 사각형 4칸을 쫓아감. Inky(청록색) : 플레이어와의 거리를 사용하여 쫓아감 Clyde(주황색) : 플레이어가 멀면 플레이어를 쫓아가고, 가까우면 게임 맵의 구석으로 감. 유령들의 목적지를 정하는 코드는 한두줄이면 된다. 그러나 이런 4가지의 간단한 AI들이 합쳐져 플레이어에게 훌륭한 경험을 제공한다. 그 예로 팩맨을 리뷰하는 플레이어들은 유령들이 자신에게 덫을 놓고..

Game AI 2021.05.31

게임 AI의 모델

모델 게임 AI의 모델은 여러 가지가 있다. 아래 그림은 그 중 한 가지 예이다. 이 모델에서는 AI의 작업을 세 가지로 나눈다. 이동 의사결정 전략 그러나 모든 AI가 위 세가지 요소를 사용하는 것은 아니다. 예를 들어, 체스와 같은 경우는 오직 전략만 사용한다. 반면에, 슈퍼 마리오 의 AI같은 경우에 전략은 없다. 이동 이동 알고리즘은 단순히 특정 위치로 이동하는 것이 아니라 장애물이나 방(통로)과 같은 공간을 이동하는 행위도 포함된다. 의사 결정(Decision making) 의사 결정은 캐릭터가 다음에 뭘 할지를 정하는 행위이다. 공격, 가만히 있기, 순찰, 탐험, 숨기 등등이 모두 포함된다. 몇몇 결정은 이동 AI가 필요한데, 예를 들어 근접 공격을 하는 경우 공격 대상에게 이동을 먼저 해야 ..

Game AI 2021.05.24