[NDC25] 프로젝트DX, 실감나는 '야생의 땅' 구축 비결은?

게임뉴스 | 윤홍만 기자 | 댓글: 9개 |


▲ 넥슨게임즈 김경환 TA

  • 주제: UE5 PCG로 오픈월드 바이옴 구성하기 - 새로운 듀랑고의 초원부터 정글까지
  • 강연자 : 김경환 - 넥슨게임즈 / NEXON GAMES
  • 발표분야 : 비주얼아트&사운드
  • 권장 대상 : 디자이너
  • 관심태그 : #UE5 #PCG #레벨링


  • [🚨 강연 주제] 언리얼 엔진5의 PCG를 이용하여 식생을 자연스럽고 효과적으로 분포시킨 사례를 공유합니다. 더불어 PCG를 활용하여 절차적으로 조합된 자연물, 인공물을 제작한 사례를 공유합니다.

    '야생의 땅: 듀랑고(이하 듀랑고)'가 프로젝트DX라는 이름으로 부활을 준비 중이다. 프로젝트DX에 대해 알려진 정보는 여전히 적다. '듀랑고'의 오리지널 요소를 계승하면서도 더욱 발전된 그래픽과 시스템이 도입되어 MMORPG 매력을 더욱 강화하고자 한다는 게 현재까지 알려진 정보의 전부라고 할 수 있다.

    '듀랑고'를 정의하는 요소 중 하나로는 매력적인 세계관을 빼놓을 수 없다. 타임슬립을 통해 공룡이 공존하는 기묘한 세계. 이러한 특징은 프로젝트DX에서도 여전한 모습이다. 매력적인 세계관과 배경은 그 자체로 플레이어들의 눈길을 휘어잡곤 한다. 과연 프로젝트DX는 '듀랑고'가 추구했던 야생의 땅을 어떤 식으로 만들고 있을까. 이번 NDC 2025에서는 넥슨게임즈 DX스튜디오의 김경환 TA가 연사로 나서서 언리얼 엔진5의 PCG를 활용해 프로젝트DX의 실감 나는 식생 구축 방법을 공유했다.



    ■ PCG란 무엇인가? - 절차적 콘텐츠 생성 툴

    PCG(Procedural Content Generation)란 간단히 말하자면 '여러 함수를 절차적으로 반복 사용해 콘텐츠를 생성하는 툴'이라고 할 수 있다. 이걸 활용하면 월드에 자연스럽게 식생을 비롯해 건물이나 자동차를 배치하는 게 가능해진다. 일반적으로 PCG는 넓은 지역의 환경을 구성하거나 작은 단위의 조합형 집합체를 구성하는 식으로 쓰이곤 한다.




    보통 넓은 지역의 환경을 구성할 때는 PCG 볼륨을 크게 하고 그래프를 넣은 후 로직대로 식생이나 오브젝트를 배치한다. 작은 단위는 액터로 구성된다. 액터에는 컴포넌트를 달아서 그래프를 연결해 로직대로 액터가 자동으로 생성되도록 하는데 주변 지형지물에 자동으로 다리가 놓이게 할 수도 있다. 프로젝트DX에서는 넓은 식생을 구축할 때는 군집화로, 작은 단위는 절차적 조합형 액터라는 걸 만들어서 사용했다.

    이렇게 구분했다고 해서 끝나는 게 아니다. 볼륨 안에는 초원도 있을 수 있고 정글도 있을 수 있다. 그래서 이건 정글이고 이건 초원이라고 정의해야 한다. 김경환 TA는 스플라인(Spline)을 써서 포인트 생성 영역을 구분했다. 열린 스플라인과 닫힌 스플라인 두 종류를 사용한 것으로 이를 활용해서 식생을 배치하는 동시에 수풀과 나무, 길을 구분해서 생성하도록 만들었다.




    스플라인으로 바이옴을 정의했다면 이제 본격적으로 식생을 배치할 차례다. 식생을 배치한다고 해도 막 심는다면 되려 어색할 수밖에 없다. 현실에서도 꽃들이 뭉쳐서 피어난 곳을 중심으로 좀 긴 풀들이 자라있고 외곽으로 갈수록 낮은 잡초 등이 자라난 걸 볼 수 있다. 때로는 죽은 나무 근처에 꽃이 핀 경우도 있는데 이 역시 바람에 날아가던 꽃씨가 부딪혀서 떨어져서 자랐기 때문이다. 프로젝트DX는 식생을 배치하는 데 있어서 이런 부분에서 아이디어를 얻어서 절차적으로 군집화해서 생성되도록 했다.



    ■ 자연스러운 식생 구현의 비법은? - 핵심은 거리와 밀도




    스플라인을 통해 큰 식생, 중간 식생, 전역적 식생이 자연스럽게 배치되도록 만들긴 했지만, 여기에는 한 가지 문제가 있었다. 특정 지역의 식생을 만드는데 스플라인이 무려 9개나 들어갔고 스플라인 위치도 일일이 맞춰야 했다는 점이다. PCG를 쓰면서 스플라인을 이렇게 많이 쓰는 건 너무 비효율적이기에 수학적인 계산을 통해 거리에 따라 절차적으로 생성되도록 만들었다. 그 결과 중심점 역할을 하는 포인트를 넣는 방식으로 스플라인을 하나만 쓰는데도 기존의 방식과 큰 차이가 없도록 만들 수 있었다. 여기에 최종적으로 노이즈를 섞어서 가장자리가 그럴듯하게 보이도록 했다. 사실상 중심점을 정하면 거리에 따라 스플라인이 알아서 식생을 배치하도록 만든 것이다.




    김경환 TA는 아티스트들이 쉽게 쓸 수 있도록 이 기능들을 서브그래프에 하나로 묶었다. 이 서브그래프트는 맨 처음 스플라인 데이터를 월드에서 들고 온다. 이어서 스플라인 데이터를 스플라인 샘플에 연결한다. 이어서 포인트를 생성하면 그 포인트를 선택해서 나무도 심고 풀도 자라게 하는 식이다. 핵심은 포인트의 밀도를 정의하는 것으로 군집의 중심점을 만들어야 한다. 큰 식생은 중심점 반경 2M 이내로 자라고 2M~10M는 중간 식생이 10M~20M는 전역적 식생이 자라도록 하는 식이다.

    이걸 합치면 하나의 서브그래프 안에 다양한 식생이 존재하게 된다. 이렇게 하면 큰 식생은 포인트 가까이에 배치되고 이어서 중간 식생이, 가장 멀리에는 전역적 식생들이 깔린다. 그 다음은 식생의 트랜스폼을 랜덤화하는 일로 위치를 살짝 이동시키거나 회전을 주거나 스케일을 조절해서 분포를 자연스럽게 만들면 된다.







    그다음은 Distance 노드를 이용해 군집의 중심으로부터 포인트들 사이의 거리를 Density에 저장해야 한다. Density는 일종의 포인트들이 갖는 파라미터 내지 고유값으로 중심점으로부터 가까운 포인트들은 0에 가깝게 멀어질수록 1에 가깝게 하는 식이다.

    이렇게 하면 일정 거리 안에 있는 포인트만 살아남게 된다. 다음으로 중심점 가까이 있는 포인트는 스케일을 키우고 멀어질수록 스케일을 줄여서 안정적으로 보이게 하면 끝이다. 이렇게 함으로써 다양한 군집형 식생을 구성할 수 있다. 김경환 TA는 이와 관련해서 식물로 뒤덮인 폐허가 된 도시부터 정글 등 다양한 환경의 식생을 예시로 들었다.







    군집의 형태로 식생을 넓게 분포시켰다면 다음은 조합형 액터를 통해 식생을 풍성하게 보이도록 해야 한다. 여기서 핵심이 되는 건 랜덤 시드다. 조합형 액터를 만들어서 군데군데 포인트를 준다고 해도 아무래도 정해진 형태대로라면 자연스럽게 보이지 않을 수도 있다. 똑같은 나무, 돌에 회전값을 준다든가 스케일에 변화를 주는 게 전부이기 때문이다. 랜덤 시드는 이를 막기 위한 요소라고 할 수 있다.

    BP 액터를 만든 다음에 그 안에 PCG 컴포넌트를 하나 넣어준 후 이 컴포넌트를 PCG 그래프에 끼워 넣으면 로직대로 그 액터의 랜덤 시드를 반영한 조합을 만들게 된다. 이렇게 하면 시드 값에 따라 나무나 돌, 인공물 등의 구성이 다채롭게 바꿀 수 있다. 식생만이 아닌 은신처 등 인공물에도 적용할 수 있는데 그래프 하나로 무한한 종류를 만드는 것도 가능하다.

    여기에 복잡한 로직을 더하면 모듈형 건물도 만들 수 있다. 몇 층짜리인지, 높이는 얼마나 높은지, 옥상이 존재하는지 등 건물 파라미터에 입력하면 끝이다. 이를 통해 앞서 자연스러우면서도 중복되지 않는 식생을 만든 것처럼 부서진 다양한 건물들을 만들 수 있다.









    ■ PCG는 만능이 아니다 - 생성 시간과 최적화라는 숙제

    이처럼 식생 등을 구현하는 데 있어서 압도적인 성능을 보여준 PCG지만, 만능은 아니다. 뛰어난 성능만큼이나 단점 역시 크다. 가장 큰 단점은 생성 시간이 너무 길다는 점을 들 수 있다. 이에 대해 김경환 TA는 이러한 단점을 해결하고자 단일 PCG로 했던 걸 복수 PCG로 쪼개서 연산량을 줄이기도 했으나 그럼에도 일정 시간 이하로 떨어지지는 않는다고 설명했다.




    또 다른 문제로는 아직 개발 중인 베타 상태라는 점을 들 수 있다. 아무리 최적화한들 다음에 업데이트돼서 새로운 기능이 추가되면 다시 최적화해야 한다는 것이다. 바로 대응할 수 있는 엔진 프로그래머나 PCG에 대해 잘 아는 개발자가 없다면 유지보수가 어려울 수 있다는 의미다.

    그럼에도 PCG를 계속 쓰는 이유는 명확하다. 레벨 인스턴스, PLA 등 다른 툴과 비교했을 때 PCG는 비파괴적이고 절차적이기 때문이다. 다른 툴로 식생을 만들고 수정하려면 일일이 값을 수정해야 해서 복잡할 수 있는데 PCG는 그래프만 살짝 건드리면 쉽게 고칠 수 있다. 여기에 괜찮은 그래프를 만들면 열 사람 몫의 일을 하기도 한다.

    끝으로 김경환 TA는 "PCG에 대한 두려움과 걱정이 있는 것 같은데, 이번 발표를 보고 한 번 써볼까? 아니면 한 번 해볼까? 하는 생각이 드는 기회가 됐으면 좋겠다"라는 말로 발표를 끝마쳤다.

    댓글

    새로고침
    새로고침

    기사 목록

    1 2 3 4 5
    AD