게임 최적화는 자산 및 스튜디오 설정을 구성하여 메모리 및 그래픽 처리 장치(GPU) 제한이 있는 장치에서 프레임 속도와 성능 수준을 높게 유지하는 과정입니다. 이 과정은 거의 모든 사용자가 환경을 볼 때 동일한 게임 플레이 및 시각적 경험을 갖도록 보장합니다.
환경 아트 - 최적화 .rbxl 파일을 참조하여, 이 환경 아트 커리큘럼의 이 섹션에서는 최적의 그래픽을 위해 장소 파일을 검토하고 구성하는 방법을 보여줍니다. 여기에는 다음에 대한 지침이 포함됩니다:
- 각 자산의 물리 및 렌더링 매개변수를 검토하여 메모리 및 엔진 성능을 유지하는지 확인합니다.
- 자산을 렌더링하기 위해 Roblox 엔진이 수행해야 하는 계산의 양을 불필요하게 증가시키는 과도한 텍스처, 기하학 또는 투명성을 제거합니다.
Roblox 엔진이 대부분의 최적화 작업을 처리하지만, 마이크로 프로파일러를 활용하여 특정 프레임을 렌더링하는 데 더 많은 시간이 소요되는 위치를 확인함으로써 이러한 최적화 작업을 지원할 수 있습니다. 이 정보를 사용하여 매개변수나 과도한 콘텐츠와 관련하여 어떤 자산에 주의를 기울여야 할지에 대한 정보에 입각한 결정을 내릴 수 있습니다. 장면 분석도 리소스 사용을 확인하는 강력한 도구입니다.

물리 및 렌더 매개변수 검토
자산 라이브러리 구성에서 자산이 메모리 및 GPU 제한이 있는 장치에서 높은 시각적 품질을 유지할 수 있도록 물리 및 렌더링 매개변수를 설정하는 것이 얼마나 중요한지 배웠습니다. 그러나 환경을 구성할 때 이러한 매개변수를 게임 내 자산의 맥락적 위치와 목적에 따라 조정하는 것이 일반적입니다. 예를 들어, 최종 샘플 레이저 태그 환경의 많은 식물들은 성능 비용에도 불구하고 그림자를 드리우며, 이는 환경의 사실감을 더합니다.
물리 및 렌더링 매개변수를 수정할 때, 개발 과정의 끝에 가까워지면 모든 매개변수를 검토하여 미적 목표와 게임 플레이 요구 사항을 유지하면서 최적화할 수 있는 매개변수를 확인하는 것이 유용합니다. 예를 들어, 게임 플레이 영역의 가장자리에 있는 식물에 대해 BasePart.CastShadow 속성을 비활성화하여 성능을 절약할 수 있으며, 이는 사용자의 게임 플레이나 시각적 경험에 영향을 주지 않습니다.


비필수 콘텐츠 제거
물리 및 렌더링 매개변수를 검토한 후, 게임에 영향을 미치지 않는 비필수 콘텐츠를 제거할 수 있는 자산을 검토할 수 있습니다. 예를 들어, 서로 다른 자산 ID를 가진 동일한 텍스처, 많은 정점을 가진 복잡한 기하학, 또는 카메라 뷰에 따라 서로 겹치는 투명성 등이 있습니다. 다음 섹션에서는 이 콘텐츠를 검토하는 방법과 최적화 작업에 도움이 되는 이유를 자세히 설명합니다.
중복 텍스처 제거
자산을 개발하고 환경을 구성하는 과정에서 미적 목표나 게임 플레이 요구 사항에 필요한 것을 찾으면서 메쉬나 텍스처를 반복하는 것이 일반적입니다. 자산을 패키지로 변환하지 않으면, 이러한 반복을 스튜디오에 가져올 때 Roblox 엔진이 환경 내에서 자산을 렌더링할 때 참조해야 하는 고유한 자산 ID를 생성하게 됩니다.
예를 들어, 다음 두 개의 소화전 메쉬를 스튜디오에 별도로 가져온다면, 외관이 완전히 동일하더라도 Roblox 엔진은 이를 고유한 자산 ID를 가진 두 개의 객체로 취급합니다. 엔진이 필요로 하는 고유 호출이 많을수록 메모리와 성능에 미치는 영향이 커집니다. 따라서 자산을 여러 번 재사용할 때는 각 인스턴스가 동일한 자산 ID를 사용하여 엔진이 이를 반복적으로 렌더링하기 위해 단일 호출만 필요하도록 하는 것이 중요합니다.

기하학 최적화
장치 간 프레임 속도를 높이기 위해 더 많은 조정을 해야 한다면, 기하학을 최적화할 수 있는 방법을 확인하는 것이 유용합니다:
- 메쉬 그룹을 단일 자산으로 결합합니다.
- 기하학적 복잡성이 있는 자산의 다각형 수를 줄입니다.
첫 번째 기술을 확장하면, 게임의 모든 고유 자산은 GPU에 드로우 호출을 나타내며, 이는 Roblox 엔진이 자산을 올바르게 렌더링하기 위해 정보를 호출하도록 신호를 보냅니다. 고유 자산이 많을수록 시스템이 필요로 하는 드로우 호출이 많아집니다. 따라서 게임 내에서 더 큰 구성 요소를 구성하는 메쉬 그룹이 있다면, 이를 제3자 모델링 도구에서 함께 그룹화하여 여러 드로우 호출의 필요성을 줄일 수 있습니다.
이 점을 설명하기 위해, 최종 샘플 레이저 태그 환경은 건물 외부의 큰 타워를 만들기 위해 여러 부품과 메쉬를 함께 부모로 설정합니다. 이러한 개별 구성 요소를 모두 결합하면 단일 자산으로 만들 수 있으며, 자산 ID는 하나만 필요하고 드로우 호출 수를 8에서 1로 줄일 수 있습니다. 그러나 이 기술은 각 구성 요소의 시각적 및 물리적 특성을 자유롭게 변경할 수 있는 능력을 제거하므로 주의해야 합니다.
예를 들어, 다음 이미지에서 왼쪽 타워는 Model 객체 아래에 여러 자산이 포함되어 있고, 오른쪽 타워는 단일 자산입니다. 왼쪽 타워의 각 구성 요소를 개별적으로 수정할 수 있지만, 오른쪽 타워를 수정할 경우 색상을 검은색으로 변경하면 전체 객체에 영향을 미칩니다. 따라서 이 기술은 성능을 개선할 수 있는 위치를 알고 있을 때 환경 개발의 끝에만 고려하는 것이 중요합니다.

두 번째 기술을 확장하면, 기하학적 복잡성이 있는 자산은 더 많은 다각형을 가지고 있어 엔진이 시각적 외관을 렌더링할 때 계산해야 할 정점이 더 많습니다. 이는 복잡성과 충실도가 낮은 자산이 렌더링 비용이 적어 성능과 메모리 모두에서 개선을 가져온다는 것을 의미합니다.
레이어드 투명성 삭제
환경에 사실감을 제공하기 위해, 최종 샘플 레이저 태그 환경에는 야외 공간의 식물, 미래형 간판 또는 화분 난간의 유리와 같은 다양한 투명도를 가진 많은 메쉬가 포함되어 있습니다. 카메라가 서로 앞뒤에 있는 여러 반투명 객체를 볼 때, Roblox 엔진은 투명한 영역을 고려하기 위해 겹치는 픽셀을 여러 번 렌더링해야 합니다. 이 과정은 높은 투명도 오버드로우라고 하며, 성능에 상당한 영향을 미칩니다.
예를 들어, 샘플 환경의 화분을 고려해 보십시오. 엔진은 카메라에 가장 가까운 식물과 야외 공간에 가장 가까운 식물 사이의 잎의 투명한 영역을 레이어로 렌더링해야 하며, 이는 수십만 개의 오버드로우된 픽셀에 해당합니다. 이러한 영향을 완화하기 위해, 환경 내 모든 반투명 객체의 배치를 검토하고, 특히 화면의 큰 영역에서 너무 많은 겹침 레이어가 없도록 하는 것이 중요합니다.


모든 콘텐츠를 검토하여 장치 간 최적화가 이루어졌다면, 이제 게임을 게시할 준비가 완료되었습니다!