성능 디자인

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

성능을 위해 디자인하는 것은 경험을 구축하는 과정에서 몇 가지 모범 사례를 따르는 것을 의미합니다. 개발 과정에서 성능 문제를 찾고 수정하는 것과 비교하여 성능 디자인은 많은 시간과 노력을 절약할 수 있습니다.

저가 장치

특히 모바일 장치와 같은 하위 엔드 장치는 심각한 메모리 제한이 있으며 메모리 오버플로우(OOM) 오류로 인해 충돌이 발생할 수 있습니다.

  • 저가 장치를 지원하려면 특정 성능 특성을 가진 기본 장치 집합을 선택하고 개발 프로세스 내내 경험을 테스트하고 프레임 속도 및 메모리 사용에 주의를 기울이십시오. 경험에서 문제 영역을 찾으면 해당 영역을 사용하여 장치의 제한을 식별합니다.

    예를 들어, 렌더링(씬

  • Roblox Studio의 장치 에뮬레이터는 아셀렛 비율 및 제어확인하는 데 유용하지만, 메모리 사용량을 정확하게 예측하지는 못합니다. 스튜디오에서 경험을 테스트할 때 서버와 클라이언트를 모두 실행하므로 메모리 사용이 더 높습니다.

일반적으로 다양한 디바이스에서 테스트하면 경험이 다양한 그래픽 품질 수준에서 시각적 및 성능 기대치에 부합하는지 확인할 수 있습니다. 자세한 내용은 실제 세계 건축 및 스크립트 최적화를 참조하십시오.

Header image for Real World Building and Scripting Optimization.

스트리밍 및 텔레포트

  • 인스턴스 스트리밍 Roblox는 3D 콘텐츠를 동적으로 로드하고 로드하고 3D 콘텐츠를 크기 조정하고 프레임 속도를 높이는 데 좋습니다. 성능을 향상시키기 위해 성능 향상을 참조하십시오.

  • 큰 장소를 더 관리 가능한 장소로 나눕니다. 순간이동 을 사용하여 플레이어를 서로 이동합니다.

재료 및 복제

  • 내장 재료는 사용자 지정 텍스처보다 메모리를 훨씬 적게 사용하지만, 예술적 비전에 맞지 않을 수 있습니다. 가능한 한 자주 재료를 사용하여 메모리 예산을 절약하십시오.

  • 자산을 생성할 때 패키지로 변환하십시오. 패키지를 작업 흐름의 일부로 만들면 다른 ID의 중복 자산을 피할 수 있습니다. 이렇게 하면 이행해를 끼칠 수 있는 공통 문제를 피할 수 있습니다.

  • 메쉬 및 텍스처를 추가할 때 중복 복사본을 가져오는 대신 사용 및 재사용하십시오. 크기를 조정하고 회전하고 쌓아서 작은 수의 드로우 콜이 필요한 풍부하고 다양한 환경을 만들 수 있습니다. 자세한 내용은 복제를 참조하십시오.

투명도

  • 0(가시) 및 1(보이지 않음) 이외의 투명도 값을 사용하지 마십시오. 부분 투명도를 사용할 때 높은 투명도 철회를 피하십시오.

스크립트 작성

  • 가능하면 프레임별 계산이 아닌 이벤트 기반 코드를 작성하십시오. 60 FPS에서 총 예산은 16.67ms입니다. 각 프레임에 대한 예산의 약 1/4이 사용됩니다. 심지어 작은 프레임 계산도 예산의 상당한 부분을 사용할 수 있습니다.

  • 긴 시간 코드를 관리 가능한 조각으로 나눕니다. 코드 조각이 100ms 이상 실행되고 모든 프레임에서 실행되면 경험은 10 FPS만 실행할 수 있습니다. 경험이 60 FPS로 실행되는 경우 1초당 1초 만 실행되는 코드 조

    대신, 코드를 구조적으로 분석하십시오. 어쩌면 프레임당 5ms의 작업을 수행할 수 있으며, task.wait() 를 사용하고 20프레임마다 완료된 계산을 가지고 60FPS를 유지하면서 멀티 스레드를 지원할 수 있습니다. 병렬 루루, 종종 병렬 Lu

  • 다음에 이벤트가 발생할 때 함수를 불필요하게 호출하지 않도록 RBXScriptConnection:Disconnect() 메서드를 사용하세요.

  • 값이 필요할 때마다 동일한 메서드를 호출하지 마십시오. 메서드를 한 번 호출하고 값을 저장한 다음 필요할 때 덮어씁니다.

  • 모든 것을 ReplicatedStorage 에 저장하지 마십시오. 클라이언트는 이 컨테이너의 모든 것을 로드합니다. 대신 클라이언트가 액세스할 필요가 없는 모든 것은 ServerStorage 를 사용합니다.