Version: 2017.4
모바일용 최적화 실전 가이드
스크립트와 게임플레이 방법론

그래픽스 방법론

모바일 디바이스가 할 수 있는 일은 무엇일까요? 이에 맞추어 게임을 어떻게 기획해야 할까요? 게임 실행 속도가 느리다면, 그리고 프로파일러가 렌더링 병목 현상이 있다고 진단한다면, 무엇을 변경해야 할지, 또한 속도 개선을 하면서도 시각적으로 훌륭한 게임을 만들기 위해 무엇을 해야 할지를 어떻게 알 수 있을까요? 이 페이지는 기술적인 내용보다는 일반적인 방법을 설명하기 위해 작성되었습니다. 구체적인 내용을 찾아보려면 렌더링 최적화 페이지를 참조하십시오.

현재 소비자용 모바일 디바이스에서 기대할 수 있는 것

  • 라이트맵이 적용된 정적 지오메트리. 다음의 경우에는 유의해야 합니다.
    • 대량의 알파테스트 셰이더 사용
    • 범프매핑, 특히 빌트인 셰이더를 사용하는 경우
    • 많은 폴리곤 개수
  • 환상적인 셰이더가 있는 애니메이션 캐릭터. 다음의 경우에는 유의해야 합니다.
    • 대규모 군중 또는 하이 폴리 캐릭터
  • 스프라이트를 적용한 2D 게임. 그러나 다음에 유의해야 합니다.
    • 오버드로우 또는 서로 겹쳐 그려진 여러 개의 레이어
  • 파티클 효과. 다음의 경우에는 유의해야 합니다.
    • 큰 파티클에 높은 밀도. 여러 개의 파티클이 겹쳐진 경우 또한 오버드로우된 경우입니다.
    • 터무니없이 많은 수의 파티클 또는 파티클 콜라이더.
  • 물리. 다음의 경우에는 유의해야 합니다.
    • 메시 콜라이더
    • 대량의 액티브 바디

현재 소비자용 모바일 디바이스에서 기대할 수 없는 것:

  • 글로우 및 피사계심도 등의 풀스크린 이미지 이펙트
  • 동적 픽셀당 조명(중요로 설정되고 라이트맵으로 베이크되지 않은 여러 개의 광원)
    • 영향 받는 모든 오브젝트는 사용 중인 모든 동적 광원에 대해 추가로 시간을 끌게 되며, 급격히 느려지게 됩니다.
  • 모든 것에 대한 실시간 섀도우
    • Unity는 모바일 플랫폼에서 실시간 섀도우를 지원하지만 매우 신중하게 사용해야 하며, 하이 엔드 디바이스에 국한될 가능성이 높습니다.

예제 - 최고 수준의 모바일 게임을 만드는 방법

Shadowgun

Shadowgun은 현재의 모바일 하드웨어에서 어떤 것들이 가능한지를 보여주는 인상적인 사례입니다. 더 구체적으로 말하자면, 할 수 없는 작업과 한계를 극복하는 방법에 대한 좋은 예제입니다. 특히 게임의 작은 부분이 이 블로그 포스트에서 공개적으로 사용할 수 있게 되었기 때문입니다.

다음은 Shadowgun에서 성능을 향상시키기 위해 실행하는 작업에 대한 기본적인 설명입니다.

  • 동적 조명 - 거의 사용되지 않습니다.
    • 리얼 섀도우 대신 블롭 섀도우와 라이트맵이 사용됩니다.
    • 캐릭터에 실제 광원 대신 라이트 프로브가 사용됩니다.
      • 머즐 플래시가 스크립트를 통해 라이트프로브 데이터에 추가됩니다.
    • 유일한 동적 픽셀당 조명은 캐릭터의 BRDF를 계산하기 위해 사용되는 임의의 광원 방향입니다.
  • 범프매핑 - 거의 사용되지 않습니다.
    • 리얼 범프매핑은 캐릭터에만 사용됩니다.
    • 콘트라스트와 디테일을 디퓨즈 텍스처 맵으로 최대한 베이크합니다. 범프맵의 조명 정보도 베이크됩니다.
    • 오른쪽에 보이는 조각상 텍스처 또는 빛나는 벽이 좋은 예입니다. 렌더링할 때 범프맵을 사용하지 않으며, 반사되는 느낌은 텍스처에 베이크하여 구현합니다. 라이트매핑은 버텍스 조명 기반의 스페큘러 하이라이트와 결합되어 이 모델들이 빛나는 것처럼 보이도록 합니다.
    • 이러한 텍스처를 생성하는 법을 알고 싶으면 렌더링 최적화 페이지를 참조하십시오.
  • 밀도 높은 파티클 - 가급적 사용하지 않습니다.
    • 밀도 높은 파티클 효과 대신 UV 스크롤링 텍스처를 사용합니다.
  • 안개 효과 - 가급적 사용하지 않습니다.
    • 게임에서 신의 광선은 손으로 모델링됩니다.
    • 단일 평면을 페이드 인/아웃하는 방식으로, 실제로 안개를 렌더링하지 않고도 영화 같은 안개 효과를 얻습니다.
      • 이렇게 하면 평면 수가 적고 거리가 멀기 때문에 더 빠릅니다. 그리고 픽셀 또는 셰이더마다 안개를 계산할 필요가 없습니다.
  • 글로우 - 가급적 사용하지 않습니다.
    • 블렌디드 스프라이트 평면을 사용하여 특정 오브젝트에 글로우 효과를 나타냅니다.

Sky Castle 데모

이 데모는 Unity가 하이 엔드 Android 장치에서 할 수 있는 것을 표시하도록 설계되었습니다.

  • 동적 조명 - 사용되지 않습니다.
    • 라이트맵에서만 사용됩니다.
  • 범프매핑 - 사용됩니다.
    • 벽돌은 모두 범프 맵이며 방향 라이트맵에 의해 점등됩니다. 여기서 “하이 엔드 장치” 부분이 등장합니다.
  • 실시간 반사 - 제한됩니다.
    • 한 번에 하나만 실행되도록 두 번 렌더링해야 하는 환경을 쉽게 제거할 수 있도록 격리된 영역과 별도로 실시간 반사 표면을 신중하게 배치했습니다.

결론 - 게임에서 이것은 무엇을 의미합니까?

모바일 디바이스의 한계를 인정하고 이해할수록 게임을 시각적으로 더 훌륭하고 부드럽게 동작하도록 만들 수 있습니다. 모바일용 고급 게임을 만들려고 할 경우 Unity의 그래픽스 파이프라인을 이해하고 자체 셰이더를 만들 수 있으면 크게 유익합니다. 그러나 즉시 사용할 수 있는 것을 원할 경우 여기에서 얻을 수 있는 ShadowGun의 셰이더가 유용합니다.

시뮬레이션하지 말고 베이크해야 합니다!

게임이 자연의 법칙을 따르려 한다는 데에는 이견의 여지가 없습니다. 모든 포물선 발사체, 또는 빛나는 크롬의 각 픽셀 컬러 등은 실제 월드를 관찰하여 이를 모방한 공식으로부터 유래되었습니다. 그러나 게임은 한편으로 과학적 시뮬레이션이자 예술입니다. 물리적으로 정확한 렌더링만 가지고는 모바일 시장에서 경쟁할 수 없습니다. 현실 세계를 완전히 흉내 내기에는 하드웨어가 아직 따라주지 않으며 이런 게임은 결국 제약에 얽매이는 칙칙하고 둔한 게임이 됩니다.

폴리곤과 블렌드 모드를 선택할 때는 마치 그림 붓을 고르듯이 선택해야 합니다.

Shadowgun에서 볼 수 있는 베이크된 범프맵이 훌륭한 예제입니다. 텍스처에 이미 스페큘러 하이라이트가 들어가 있습니다. 인간의 눈은 하이라이트가 반사광 및 시점 방향과 일치하지 않는다는 것을 실제로는 알아차리지 못합니다. 하이라이트는 단순히 텍스처 위에 높은 콘트라스트로 넣은 디테일로 완전히 거짓이지만 결국 훌륭한 시각적 효과를 냅니다. 이는 인기 있는 여러 게임에서 사용해온 일반적인 속임수 기술 중 하나입니다. Halo의 첫 스크린샷의 바이저를 이 릴리스 스크린샷의 바이저와 비교합니다. 헬멧의 윗부분으로부터 돌출된 갑옷이 바이저에 반사된 것으로 보이나, 실제로는 이 반사가 바이저 텍스처에 베이크된 것입니다. League of Legends에서는 스펠 효과에 픽셀 광원이 있는 것처럼 보이지만, 실제로는 텍스처가 있는 블렌디드 평면으로서 땅 위에서 빛나는 픽셀 광원의 스크린샷을 가지고 생성한 것처럼 보입니다.

동작이 잘 되는 작업

  • 라이트매핑된 정적 지오메트리
    • 극적인 조명과 매우 동적인 환경을 함께 사용할 수 없습니다. 둘 중에 하나만 선택해야 합니다.
  • 움직이는 오브젝트용 라이트프로브
    • 현재의 모바일 하드웨어는 대량의 동적 광원에 적합하지 않으며 섀도우를 만들 수 없습니다. 라이트 프로브는 정적 조명을 사용하는 복잡한 게임 월드에 아주 적합한 해결책입니다.
  • 특화된 셰이더와 세밀한 고대비 텍스처
    • ShadowGun의 셰이더는 픽셀당 연산을 최소화하고 복잡한 고품질 텍스처를 최대한 활용합니다. 셰이더가 단순할 때도 멋지게 보이는 텍스처를 만드는 방법에 대한 정보는 렌더링 최적화 페이지를 참조하십시오.
  • 카툰 그래픽스
    • 게임이 사진처럼 보여야 한다는 사람은 없을 것입니다. 조명과 환경의 책임 소재를 엔진이 아닌 텍스처 아티스트에게 묻는다면, 렌더링 최적화는 신경 쓸 필요도 없게 됩니다.

동작이 잘 되지 않는 작업

  • 글로우 및 기타 포스트 프로세싱 효과
    • 가능할 경우 블렌디드 사각형을 사용하여 이러한 효과를 비슷하게 만듭니다. Shadowgun 프로젝트의 예제를 참고해야 합니다.
  • 범프매핑, 특히 빌트인 셰이더가 있는 경우
    • 되도록 적게, 가장 중요한 캐릭터나 오브젝트에만 사용해야 합니다. 전체 스크린을 차지할 수 있는 것에는 범프맵을 사용하지 말아야 합니다.
    • 범프맵을 사용하는 대신 세부 정보와 콘트라스트를 디퓨즈 텍스처에 더 많이 베이크해야 합니다. League of Legends의 효과는 업계에서 이 전략을 성공적으로 사용한 흥미로운 예입니다.

실제로 어떻게 해야 합니까?

렌더링 최적화 페이지를 참조하십시오.

모바일용 최적화 실전 가이드
스크립트와 게임플레이 방법론