본문 바로가기

이론

(4)
동적으로 섬 생성하기 - 4 (지형 생성 해보기) 전 편을 읽으신다면 이해에 큰 도움이 되실겁니다. 이제 유니티에서 섬을 그려봅시다. 노이즈는 FastNoiseLite라는 라이브러리를 사용해서 만들건데요, 이 파일만 유니티 프로젝트에 임포트하시면 되겠습니다. 윈도우 기준 저 페이지에서 우클릭하신 후 다른 이름으로 저장하신다면 .cs 파일로 저장될 겁니다. 또, 위의 코드와 씬을 모조리 받으신 후 유니티 프로젝트에 임포트하시고 읽으실 것을 추천드립니다. 코드가 비대해져서 더 이상 따라쓰시거나 복붙하시기가 좀 힘들 것 같네요.... 여기서 새로 만든 MapEditorGUI.cs 파일은 인스펙터에서 게임을 시작하지 않아도 인스펙터의 Map 스크립트 필드의 값을 바꾸거나 Generate Map 버튼을 클릭함으로써 맵을 생성하도록 해줍니다. 맵의 바이옴을 시각화..
동적으로 섬 생성하기 - 3 (노이즈를 사용한 지형 생성) 지난 시간에는 바이옴을 다각형으로 나눠봤습니다. 궁극적인 목표는 결국 섬을 생성하는 것이기 때문에, 이번 시간에는 지형을 생성해 볼 것입니다. 우리가 사는 지구의 지형은 불규칙적입니다. 섬의 형태도 불규칙적이고, 대륙의 형태도, 해류의 형태도 불규칙적입니다. 그렇기 때문에 지형 생성은 특별한 규칙으로 생성하기보단, 무작위성을 이용하는 편이 간단합니다. 저희는 노이즈를 무작위로 생성함으로써 섬을 만들어보려고 합니다. 그러나 모든 픽셀이 다른 픽셀에 영향을 끼치지 않고 무작위성을 띈다면 기대한 결과가 나오긴 힘들 것입니다. 좋은 난수 생성기는 생성된 수 사이에 관계가 없고 어떠한 패턴도 보이지 않습니다. 약간의 무작위성은 유기적이고 살아있는 듯한 행동을 프로그래밍 하는 데 좋습니다. 하지만 무작위성을 유일한..
동적으로 섬 생성하기 - 2 (바이옴 분할의 시각화) 실제로 그려보기 (유니티 c# 사용) 물론 직접 그리진 않고 라이브러리의 도움을 받을것입니다. 저는 csDelaunay라는 라이브러리를 사용하려고 하는데, 쓰다 보니 불편한 점이 이만저만이 아니라 저장소를 포크하고 제 입맛대로 마개조했습니다. 이 저장소의 master 브랜치를 포크해주시면 되겠습니다. 아직 연재중인 글이기 때문에 아예 포크하셔서 앞으로 있을지 모르는 변경점을 업데이트 받으시는 것을 추천드립니다. 우선, 보로노이 다이어그램을 생성 후 시각화해봅시다. 보로노이 다이어그램을 이루는 다각형의 무게중심을 랜덤하게 생성해야합니다. [SerializeField] private Vector2Int size; [SerializeField] private int nodeAmount = 0; 우선 Map이라..
동적으로 섬 생성하기 - 1 (바이옴 나누기) 습도, 고저차, 식생 분포의 요소를 가진 여러 바이옴을 가진 섬을 만들어 보려고 합니다. 하나하나 만들기엔 너무 노가다라 절차적 생성 기법으로 한번 비벼볼 계획입니다. 처음엔 섬을 특정한 청크 단위로 바이옴을 나눠보기로 했습니다. 그런데 마인크래프트처럼 n*n 범위의 정사각형으로 나누기엔 핏이 안맞을 것 같다는 생각을 했습니다. 그도 그럴것이 마인크래프트의 맵이 사실상 무한한 형태라... 제가 구현하고 싶은 것은 좁디 좁은 섬입니다. 비교 대상과의 스케일 차이가 너무 커서 같은 방법으로 나누기엔 너무 분포의 모양새가 안살 것 같다는 우려를 하는데... 그러다 아주 좋은 슬라이드를 발견했습니다. 보로노이 다이어그램을 통해 만드는 것 같더라고요? 설명할 여유가 없어 이미지로 설명을 대체합니다. 보로노이 다이..