저번에 이어서...
과정을 기록하는거라 목차도 어떻게 해야할지 잘 모르겠고 그냥 두서없이 적는다. 나중에 정리해야지.
패스 오브 엑자일 레벨 제너레이션 유튜브의 8:30쯤을 보다가 비슷한 레벨 제너레이션 툴을 만들어봐야겠다고 생각했다.
처음엔 깃허브에서 Edgar-Unity를 보고 유니티의 GraphView를 활용한 새로운 에디터 윈도우를 만들어야겠다고 생각했으나, 이런걸 만들기엔 너무 새로 배울 것도 많고 공수가 많이 든다고 판단해서 새로운 물건을 찾고 있던 중 스플라인 패키지를 발견했다.
대충 샘플을 보니 점을 찍으면 베지어 곡선이든 직선이든 만들어주고 그 점들의 데이터를 활용할 수 있는 것 같다. 아주 유용하게 쓸 수 있을 것 같아서 바로 테스트 해봤다.
만들어본 내용을 대충 요약하자면...
대충 x좌표 0에서 100까지, z좌표는 미리 설정한곳으로부터 랜덤하게 위아래로 조금씩 움직여준 후 중간에 점을 일정 개수 랜덤하게 배치해서 직선으로 이어준다. 랜덤은 유니티 랜덤 클래스를 활용해서 시드로 초기화하는 것도 넣었다.
원래 시드를 넣을 생각은 안하고 있었는데 어디선가 주워듣기론 나중에 생성했던 데이터가 다시 필요할 경우가 있다고 해서 추가했다. 예를 들면 과거에 들렀던 맵을 다시 들를때...? 아직은 잘 모르겠다.
유튜브 보니 패키지 안쓰고 직접 구현해서 쓰는 사람도 이미 있고 나도 직접 구현해서 써도 되지만... 굳이 그렇게 하진 않고 그냥 만들어진걸 사용하는 것으로 결정했다. 오히려 최소한의 기능만 제공해주는 패키지가 더 활용할 수 있는 방법이 다양해서 좋긴 한데, 굳이 갖다써야하나 싶기도 한 그런 딜레마가 있는 것 같다.
아직은 부자연스럽게 생성되는 경우가 많아서, 다음엔 이 선을 좀 더 다듬어야겠다.
그 다음엔 선을 따라 메시를 생성하고, 진짜 강같이 구불구불한 곡선을 만드는 법을 알아볼 예정이다.
그리고 아직까진 UI가 툴치곤 많이 불친절한 것 같아서 그런 점도 개선하고 싶다.
절차적 컨텐츠 생성에 관련해서 찾아보니 알고리즘 자료는 다양한데... 결국 직접 본인이 원하는 대로 몇가지 알고리즘 택해서 만들고 다듬으라는 얘기가 많아서 일단 그냥 시도해보고 있다. 잘 될지 안될진 모르겠다.