본문 바로가기

분류 전체보기

(56)
[슈퍼 해커톤 2022] LUA 스크립트랑 친해지는 중 메이플스토리 월드를 제작하는 해커톤에 참가하게 됐는데 새로운 스크립트를 배워야 한다 해서 별거 있겠어~라고 생각했는데 별거 있었다. 기존에 유니티로 구현했던 BSP알고리즘으로 맵 만들기를 적용해보려 했는데 생각보다 언어에 대한 이해도 부족때문인지 구현이 힘들어서 다량의 IF문을 동반해서 맵 만들기를 완성시켰다. 아직 언어적으로 많이 부족해서 코드가 깔끔하지는 않지만 그래도 생각한대로 구현 완성
[유니티] 오브젝트 풀링 Object pooling에 대해서 알아보자 오브젝트 풀링은, 게임 내에서 계속해서 재활용되는 오브젝트들을 Instantiate/Destroy 하지 않고, 컨테이너에 그 오브젝트들을 넣은 후 SetActive를 통해서 오브젝트의 생성,파괴를 연출하는 방법이다. 오브젝트가 생성되고 파괴될 때 Instantiate/Destroy를 사용하게 되면 성능 소모와 프레임 저하가 발생할 수 있기 때문이다. 코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectPooling : MonoBehaviour { [SerializeField] private GameObject objectPrefeb; Queue ObjectPool = new Q..
[유니티] 반복되는 배경을 사용해서 런닝게임 기초 만들기(무한 스크롤링) 게임을 만들 때 배경은 중요하다. 특히, 캐릭터의 움직임을 표현하는 과정에서 캐릭터가 직접움직이는 경우도 있지만, 배경을 움직이게 해서 캐릭터가 앞으로 나아가는듯 보이게 하는 방법도 있고 실제로 사용되는 경우도 많다. 오늘은 뒷 배경을 계속해서 한 방향으로 움직이는 방법으로 캐릭터의 움직임을 표현해보도록 하겠다. 먼저, 배경으로 쓸 Image를 준비한다. 이미지를 project창에 넣고, Insepector를 통해서 위의 사진처럼 Wrap mode를 Repeat으로 설정해준다. 유니티 Hierarchy-우클릭-3D Object-quad를 통해서 quad를 생성해주도록 한다. 이 만들어진 quad를 ,카메라 크기만큼 늘려준다. 다음으로는 quad에 넣을 material을 만들어 줄 것이다. 유니티 proj..
[유니티] 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..