-
게임 AI - 조종행동(SteeringBehavior) - 3
개요 이동하면서 적을 회피하는 기능을 만들자 아이디어 원하는 기능은 이동하려는 경로에 장애물이 있을경우 장애물을 회피하며 이동하는 것이다. 장애물이 가만히 있을경우엔, 지난 포스팅으로 해결되기 때문에, 장애물이 이동하는 경우를 가정해볼것이다. 장애물이 이동중일때 회피하기 위해선 단순하게 장애물이 이동하고자 하는 위치... Read More
-
게임 AI - 조종행동(SteeringBehavior) - 2
개요 조종행동을 이용해서 장애물을 회피하는 AI를 만들자. 지난번에 설명한 조종행동의 구조와 더불어 적을 회피하는 AI를 만들어보자. 아이디어 원하는 내용은 가만히 대기하고 있을경우, 아군이 지나가면 길을 비켜주고 적군이 지나가면 길을 막는다. 이동하고 있을 경우, 아군이나 적군이 지나가면 길을 지나친다. 길이 좁을... Read More
-
게임 AI - 조종행동(SteeringBehavior) - 1
개요 조종행동을 이용해서 자연스럽게 동작하는 AI를 만들자. 사이드 프로젝트인 EternalSmash를 제작하면서 적을향해 움직이는 AI가 필요했다. 이동하다가 이동 경로에 장애물이 생기면 회피를 해야하는데, 자연스럽게 회피하는 것을 구현하기가 어려웠다. 이 부분을 조종행동으로 해결할 수 있겠다는 생각이 들... Read More
-
EternalSmash - 행동트리 에디터 만들기 4
개요 사이드 프로젝트에 사용할 행동트리 에디터를 만들자. 이번엔 Inspector창을 만들고 노드들의 정보를 저장하고 불러올 수 있게끔 UI를 추가했다. MemoryPack을 이용해서 데이터를 저장하고 불러올 수 있는 기능을 만들고 연결하여 노드를 저장하고 로드할 수 있도록 했다. MemoryPack ... Read More
-
MemoryPack 정리
개요 CyGames에서 제작한 Serializer인 MemoryPack에 대해서 알아보자. MemoryPack 이란? MemoryPack은 C#과 유니티에서 사용할 수 있는 Binary Serializer이다. 일반적인 타입을 직렬화 했을때 다른 Serializer보다 2~5배 빠르며, 최대 10배 까지도 성능... Read More
-
EternalSmash - 행동트리 에디터 만들기 3
개요 사이드 프로젝트에 사용할 행동트리 에디터를 만들자. 이번엔 노드들의 포트연결과 삭제 처리를 추가하겠다. 포트 연결 포트는 만들어놓기만 한다고 해서 연결되진 않는다. 어떤 조건에 연결할것인지 설정을 해줘야 한다. 여기에선 나 자신이 아니고, 같은 방향의 포트가 아니면 연결할 수 있게끔 설정했다. ... Read More
-
EternalSmash - 행동트리 에디터 만들기 2
개요 사이드 프로젝트에 사용할 행동트리 에디터를 만들자. 이번엔 여러 타입의 노드를 만들어보겠다. 그 전에 그동안 바뀐 내용을 소개하겠다. 변경된 부분 기존에는 스크립트를 이용해서 VisualElement를 추가하는 방식으로 작성했었다. 하지만 UIBuilder를 사용해 만든다는 취지와 맞지 않아... Read More
-
EternalSmash - 행동트리 에디터 만들기 1
개요 사이드 프로젝트에 사용할 행동트리 에디터를 만들자. 사이드 프로젝트에 사용할 행동트리를 구현했었다. 행동트리를 Builder패턴으로 생성하게끔 구현했는데, 아무리 보기좋게 코드를 작성해도 한눈에 알아보기에는 무리가 있었다. 또 코드로 작성되어있기 때문에 프로그래밍을 할 수 없다면 수정할 수 없다는 문... Read More
-
UIToolkit - 0. 개요
개요 UIToolkit 대해 알아보자. UIToolkit이란? 웹 프론트엔드는 html, css, js의 조합으로 개발한다. html으로 큰 레이아웃을 설정하고, css로 스타일을 정의한 후에 js로 동작을 설정한다. Unity가 여기에서 영감을 받아 제작중인 새로운 UI시스템이 UIToolkit이다. UI... Read More
-
게임 AI - 양보하는 에이전트
개요 양보하는 에이전트를 통해 길찾기 도중 에이전트끼리 겹치지 않게 한다. 길찾기를 하는 에이전트끼리 겹치지 않게 하기위해 양보하는 방법을 선택하였다. 결론만 말하자면 이는 실패한 방법이다. 어떤 아이디어로 개발을 했고, 어째서 실패한 알고리즘이라고 생각하는지 알아보자. 설명 어떤 알고리즘으로 에이전트의 ... Read More
-
게임 AI - Astar JPS 성능비교
개요 에이스타 알고리즘과 JPS 알고리즘의 성능을 비교해보자 에이스타 알고리즘과 JPS 알고리즘이 각 상황에서 어떤 성능을 보이고 어떤 차이가 있는지 알아보자 테스트 조건 가로 세로 100 x 100, 200 x 200 타일에 여러개의 장애물을 랜덤하게 설치한다. 각각의 길찾기 알고리즘으... Read More
-
게임 AI - JPS(Jump Point Search)
개요 에이스타 알고리즘을 확장한 길찾기 알고리즘인 JPS 알고리즘에 대해 알아보자. JPS 알고리즘이란? 출발 지점부터 목표지점까지 탐색 과정 중간중간에 포인트를 찍어가며 경로를 찾아내는 알고리즘이다. 에이스타 알고리즘을 확장한 알고리즘으로, 성능이 상대적으로 뛰어나다. 구현 JPS의 구성 JPS 알고리즘은 어떻... Read More
-
게임 AI - Astar(에이스타)
개요 길찾기 알고리즘 중 하나인 Astar 알고리즘에 대해 알아보자. 에이스타 알고리즘이란? 출발 지점부터 목표지점까지 주변을 점진적으로 탐색하며 경로를 찾아내는 알고리즘이다. 다익스트라 알고리즘을 확장한 알고리즘으로, 노드에서부터 목표까지의 거리값인 휴리스틱 추정값(H)이 존재한다는 차이점이 있다. 장애물이 고정되어 변화하지 않... Read More