강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

고우진님의 프로필 이미지
고우진

작성한 질문수

유니티에서 PCG맵생성 알고리즘을 개발중입니다.

작성

·

129

0

던전이 무작위로 생성되는 알고리즘을 개발중인데 Instantiate으로 생성하는건 최적화에 좋지 않다고 들었습니다.

아이작과 유사한 던전이 생성되는데 벽들이 블럭 형식이라 각자 하나하나 벽의 역할만하고 다른 기능이 없는 오브젝트는 세자릿수로 생성되고 다른 상호작용한 오브젝트들(ex: 적 캐릭터들, 상자, 문, 트랩)은 세자리수까지는 생성되지는 않고 두자리 정도의 갯수까지만 생성됩니다.

 

로그라이크 형식인데 스테이지 시작할때마다 던전이 생성되는데 생성된 오브젝트들이 한번 생성되면 그 스테이지가 끝날때까지 삭제되거나 다시 생성할일이 없어서 오브젝트를 풀링을 해서 얻는 이득이 없을거같은데 어떻게 해야하는게 좋은지 여쭤봅니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

고우진님, 유니티에서 PCG(Procedural Content Generation) 맵 생성 알고리즘을 개발 중이시군요.

Instantiate를 사용하는 것은 최적화에 좋지 않다는 의견이 맞습니다. 생성과 파괴가 빈번하게 일어날 경우 성능 저하가 발생할 수 있습니다. 특히 로그라이크 게임처럼 반복적으로 많은 오브젝트를 생성하는 경우 이러한 문제가 두드러집니다.

  1. 프리팹 배치를 통한 최적화:

    • 생성할 오브젝트들을 미리 프리팹으로 만들어 두고, 스테이지를 생성할 때 해당 프리팹을 이용하여 맵을 구성하면 좋습니다.
  2. 오브젝트 풀링:

    • 말씀하신 대로 오브젝트 풀링이 스테이지가 끝날 때까지 삭제 또는 재생성이 없으면 거의 필요가 없을 수 있습니다. 그러나 초기 로딩 시간 최적화를 위해 풀링을 고려해볼 만합니다.
  3. 부분적인 프리팹 통합:

    • 자주 사용하는 벽 블록이나 상호작용 없는 오브젝트들은 한 번에 큰 프리팹으로 만들어 생성할 수 있게 합니다. 예를 들어, 한 구역의 벽을 통째로 프리팹화하여 한번에 배치하면 개별 오브젝트 생성보다 효율적일 수 있습니다.
  4. 시각적인 최적화:

    • Occlusion Culling이나 LOD(Level of Detail)을 활용하여 보이지 않는 오브젝트들은 렌더링 하지 않도록 합니다. 이는 성능 향상에 크게 도움이 될 수 있습니다.
  5. 비동기 방식 사용:

    • 큰 맵을 생성할 경우에는 모든 오브젝트를 한 번에 생성하기보다 코루틴을 통해 비동기 방식으로 Chunk 단위로 나누어 생성함으로써 성능 저하를 방지할 수 있습니다.

✅ 추가로 궁금한 점이 있거나 최적화 방법에 대해 더 알아보고 싶다면, 인프런의 관련 강의를 참고해 보시길 추천드립니다. 예를 들어, 현직 개발자에게 배우는 유니티 게임 개발을 찾아보시면 많은 도움이 될 것입니다.

도움이 되셨길 바랍니다. 감사합니다!

고우진님의 프로필 이미지
고우진

작성한 질문수

질문하기