분류 전체보기 188

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

DOTS 1.0 나온 기념 세팅법

ECS 1.0 pre-release 버전이 나왔다. 설치해보자 우선 유니티 2022.2.0b 이상을 깔아야 한다. IDE도 최신으로 바꿔야 함. 아래 링크 참고 (https://docs.unity3d.com/Packages/com.unity.entities@1.0/manual/getting-started-installation.html) 그다음 여기 들어가서 다음 두 패키지를 깔아주자. com.unity.entities com.unity.entities.graphics 그다음에는 렌더링 파이프라인이 맞는지 확인해봐야 한다. ECS는 빌트인은 지원 안 하고 URP나 HDRP만 지원한다. 만약 프로젝트 만들 때 이거 골랐으면 추가로 설치할 필요는 없다. 안했다면 PackageManager - Unity Re..

게임엔진/DOTS 2023.01.01

알아둘 만한 알고리즘들

개요 알아둘 만한 알고리즘 및 자료구조를 정리. 해당 알고리즘에 대해 자세히 알아보는 게 아니라 나중에 '아 이런 게 있었지. 하며 찾아볼 수 있도록 하는 용도.' 여기 나열된 게 최선의 알고리즘은 아닐 수 있으므로 어디까지나 구글링의 시작점으로 활용해야 한다. (ex. 경로의 가중치가 음수인 경로를 구하고 싶다면 벨먼 포드를 쓰는게 아니라 벨먼 포드보다 나은 알고리즘을 검색해본다.) 너무 기초적인 것(ex. KMP)은 다루지 않는다. 일반 펜윅트리, 세그먼트트리의 Lazy Propagation 구간 자체를 업데이트할때 쓸 수 있다. 백준 문제 (백준 2934 - LRH 식물)가 있다. 세그먼트트리랑 비슷함. 희소 테이블 (Sparse Table) 어 대충 정적인 Array의 1,2,4,8,16... 번..

알고리즘/일반 2022.12.24

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

IL2CPP, MONO, AOT, JIT 여러 줄 정리

[유니티 TIPS] 알고 있으면 쓸데 있는 IL2CPP, Mono, AOT, JIT 개념 파헤치기 1. 유니티 엔진 내부는 C++로 짜여있다. 유저 코드 부분만 C#으로 짜여있다. 따라서 유저 코드 부분에서만 C#사용으로 인해 속도가 느리다. 2. IL2CPP로 빌드하면 유저가 쓴 코드도 CPP로 변환된다. 3. C#을 컴파일하면 IL코드가 생성되고, MONO는 IL코드가 다시 여러 플랫폼에서 돌아갈 수 있게 해준다. 4. Mono는 IL코드를 그때그때 컴파일한다. 즉 JIT방식이다. 5. JIT방식은 인터프리터보다는 빠르다. JIT은 인터프리터와 달리 중간 처리된 코드(IL코드)를 컴파일 하기 때문 6. IL2CPP역시 Mono같은 역할을 수행한다. IL코드를 여러 플랫폼에서 돌아갈 수 있게 해주는 것..

목표지향 행동 - 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