본문 바로가기

알고리즘/알고리즘 In game

(5)
[유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [구현(2)] https://sharp2studio.tistory.com/45 [유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [구현(1)] https://sharp2studio.tistory.com/44 [유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [이론] BSP 알고리즘 (Binary Space Partitioning)은 한국어로 이진 공간 분할법이라는 뜻이다. 말 그대로 한 공.. sharp2studio.tistory.com 이전 포스팅으로 BSP알고리즘을 통해서 맵을 나누고, 그 안에서 방을 생성하며 각 방끼리 연결을 어떤식으로 할 지에 대해서 알아봤다. 이번에는, 이전에 나눴던 영역에 타일을 깔고 collider를 넣는 작업을 해볼것이다. 우선, 적당한 타일 이미지를 받아온다...
[유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [구현(1)] https://sharp2studio.tistory.com/44 [유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [이론] BSP 알고리즘 (Binary Space Partitioning)은 한국어로 이진 공간 분할법이라는 뜻이다. 말 그대로 한 공간을 계속해서 2개로 나눠주면서 맵을 만들어 주는건데, 특히나 다회차 진행을 반복하게 되는 로 sharp2studio.tistory.com 저번 포스팅으로, BSP알고리즘이 어떤 것인지 알아보았다. 이번에는 , 유니티 내에서 BSP알고리즘을 통해서 공간을 나눠보고, 시각적으로 확인을 해보도록 할것인다. 먼저, 각 노드의 정보를 담을 클래스를 생성해준다. public class Node { public Node leftNode; public Node..
[유니티] BSP 알고리즘을 이용해서 랜덤한 게임 맵 생성하기 [이론] BSP 알고리즘 (Binary Space Partitioning)은 한국어로 이진 공간 분할법이라는 뜻이다. 말 그대로 한 공간을 계속해서 2개로 나눠주면서 맵을 만들어 주는건데, 특히나 다회차 진행을 반복하게 되는 로그라이크 류 게임에서 플레이어에게 다양한 경험을 주기 위해서 자주 사용되곤 한다. 예시를 보이자면, 위와 같은 그림의 전체적인 맵이 주어졌다고 가정을 할 때, 이 공간을 둘로 나눠준다. 전반적으로 맵의 크기가 균형있게 되려면, 가로와 세로 중 더 긴 방향을 둘로 나눠주는게 좋은 결과가 나오게 된다. 위의 사각형은 가로가 더 기므로 가로로 나눠주면 되는데, 정확히 반반으로 나누기 보다는 랜덤한 좌표에서 잘라준다면 이런식으로 2개의 공간으로 나눠지는걸 볼 수 있다. 또한, 처음 공간을 root..
[유니티]A* 알고리즘(에이스타 알고리즘)을 통해서 길찾기[구현] https://sharp2studio.tistory.com/42 A* 알고리즘(에이스타 알고리즘)을 통해서 길찾기 구현(이론) A* 알고리즘이란? 길찾기 알고리즘에 여러 종류가 있다. DFS,BFS를 통해서 길찾기를 할 수도 있고, 다익스트라 알고리즘을 통해서 가중치가 포함된 경로의 길찾기를 할 수 있을 것이다. 게임에서 sharp2studio.tistory.com 앞선 포스팅에서 A* 알고리즘이 어떤건지에 대해서 알아보았다. 이어서 실제 게임에서 적용되는 모습을 보이도록 하겠다. 우선 클릭한 위치로 이동해주는 간단한 함수를 만들어 준다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class P..
A* 알고리즘(에이스타 알고리즘)을 통해서 길찾기 구현[이론] A* 알고리즘이란? 길찾기 알고리즘에 여러 종류가 있다. DFS,BFS를 통해서 길찾기를 할 수도 있고, 다익스트라 알고리즘을 통해서 가중치가 포함된 경로의 길찾기를 할 수 있을 것이다. 게임에서 보통 길찾기를 할 때에는 다익스트라 알고리즘의 변형인 A* 알고리즘을 사용한다. A* 알고리즘은 휴리스틱 이론을 사용하는데, 이는 중간 지점에서부터 목적지까지의 가중치를 예상하는 기법을 말하며, 이 기법의 계산 방식에 따라서 수행시간의 차이가 매우 달라진다. A* 알고리즘은 다익스트라와 다르게 출발지와 목적지의 입력을 받는다. 출발지부터 갈 수 있는 선택지를 모두 openlist에 넣고, 이 openlist에 들어간 노드들의 비용 순서대로 탐색을 진행하는데, 비용은 출발지로부터 현재 노드까지의 최단거리를 gco..