게임을 만들면 필히 해상도 관련 문제를 겪는데 진짜 이 해상도 문제가 골치가 매우 아프다.





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357c4d44792f09ade58dbc157618153dd6e7ffc5da191c1a


(원래 나와야 할 정상적인 해상도의 게임)





한 번에 내가 생각한 것처럼 게임이 보이면 참 좋겠지만,





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357d4e68f32d8deb713dbb71736e1d94dde090e3b8519e30





UI 크기가 안 작아져서 화면을 다 가리기도 하고





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e35714d004adb5ac4db51ca4f174e436c1f16967588f51248


갑자기 혼자 작아지기도 한다.





정말 다양한 방법으로 게임 화면이 망가지곤 하는데,


이러한 상황을 피하기 위한 해상도 설정 방법을 알아보자!


( 2D 기준 )





1. 레퍼런스




기본적으로 대부분의 게임은 해상도 설정을 할 수 있도록 되어있다.





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d8759035c7448819b7a12db28bf42092ffa02a3027d6f0d8f0582


(최근 재미있게 하고 있는 나인킹즈)





설정을 통해 해상도를 바꾸면,


해상도에 맞게 위치 혹은 크기가 조절된다.







viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357441bbb6b43caff8ca1bf8a4b691b22d86a6443388385b



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87590359774054f74b281ca0bf21630dd4f128d6f4c9e45bdf83


(나인 킹즈의 화면 비율에 따른 요소 위치 변화)





화면 비율에 따라 UI 요소 위치가 조절되는 경우도 있고,






viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87590358724f4c8f6aea1cdd6e93bcb058d0de72727a504dddee


(나인 킹즈의 해상도에 따른 요소 크기 변화)





비슷한 비율에서 전체적인 크기가만 조절되는 경우도 있다.


이것을 보면, 해상도를 고려할 때 중요하게 보아야 할 요소가 두 가지가 있음을 알 수 있다.




UI 위치, 화면 크기




이러한 두 가지 요소를 바탕으로


모든 해상도를 하나하나 고려하는 것이 아닌




대표적인 비율로 UI 레이아웃 구성 고려 => 구성한 레이아웃 구성을 같은 비율의 해상도에 적용




과 같은 느낌이다!





2. UI 위치 (레이아웃)




UI 위치는 대표적인 화면 비율들을 고려하여 짜는 수밖에 없다!





2-1. 대표적인 비율





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e3577411fe95cbe28c67361e948e72debe5ff1a26258d415c




PC 게임 기준으로는 대표적으로 4:3, 16:9, 16:10, 21:9 정도를 고려하면 된다!


필자는 처음에 1920x1080 기준으로 작업을 해서, 그거에 맞춰서 각각 비율을 샘플을 설정했다!


이제 UI 레이아웃을 짤 때, 저 4개만 바꿔보면서 체크해주면 된다는 뜻




2-2. 레이아웃 구성




UI 레이아웃에서 제일 중요한 것은 바로


가려지지 않는 것이다!





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357d4f51e71816dc30fe5e95f2bd4963281a9e411091fcb4


(640x480, 4:3 비율의 최저 해상도 상태의 나인 킹즈)




위의 예시를 보면 가로가 가장 좁은 화면 비율에서도


중앙 상단 지도와 우측 상단 옵션 설정 버튼이 겹치지 않는다.



즉, 해상도를 고려해서 레이아웃을 짤 때,


UI 요소들이 의도치 않게 겹치는 것만 신경쓰면 된다는 뜻. 




2-3. UI 요소 설정





간단한 예시를 들자면



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d8759035e7c4dcf5ab8dd59be061dab1ddfa68212f0ae60434168


(제작 중인 게임 SAMUKID의 시작 화면)




타이틀 로고와 시작 버튼들을


각각 위 아래 기준으로 50 떨어지게 설정해놓으면







viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357749600a4186be1383e0e467cc3a4b31bbbaca402e5c10



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e35724d5b5340050aa26431149d81c79043e489ce7de1e6de



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357c4a42b3f8c4dcf3b9bb5a7a555c0768b979a85fd6cbe3



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e3571484b0064ef3f739f384708169d24470834bfcdfdf8ea




설정해놓은 비율에서 확인 결과 큰 문제가 없다!


이러한 방식으로 만들어놓은 UI 화면들을 체크하면서 조절하면 끝.








3. 화면 크기 (해상도 대응)



비율 별로 대응되도록 UI를 구성해놓은 다음


같은 비율의 더 높거나 낮은 해상도로 바꾸면,







viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e35724f87002168f652006e103eadab0415d5e007b79c18f2


( 동일한 16:9 비율인 3840x2160 해상도 )




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357041d61a9e0f5e7752ed4e029d63905eb4b786803011bd


( 동일한 16:9 비율인 960x540 해상도 )



지나치가 비대해지거나 왜소해진 자신의 몸집을 감추지 못하는 모습을 볼 수 있다.


이러한 경우를 방지하기 위해 유니티에서는 기가막힌 기능을 제공해준다.





3-1. Canvas Scaler





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357c490ceac007a3cefad3eea8d03636b93210b9f4c67a70




먼저 사용하는 UI, Canvas의 Render Mode를 Camera로 바꿔준 뒤


Render Camera에 사용하는 메인 카메라를 할당하면


아래의 캔버스 스케일러 설정이 가능해진다!







viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e35774c773fafb9de02bd10cfb7e895cfded30a6b7bad188b




그리고 캔버스 스케일러를 다음과 같이 설정해준다


UI Scale Mode - Scale With Screen Size, 스크린 사이즈에 맞게 확장/축소


Reference Resolution - 대표 해상도, 필자의 경우 1920x1080 기준으로 게임 제작


Screen Match Mode - 가로, 세로 어느 쪽 기준으로 확장/축소 할 지 결정,




3-1-1. Screen Match Mode와 UI 레이아웃 스타일






viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa17bd20b6a58744c0466fe667b58332eda289c82e131665a


( Expand 예시, 세로 기준으로 캔버스 크기 결정)



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa172d20b6d5b7049c112a38989bb924fd13357424a84c8c3


( Shrink 예시, 가로 기준으로 캔버스 크기 결정)




Shrink는 가로 기준, Expand는 세로 기준으로 캔버스 크기를 조절한다


사진 속 설정은 가로 세로 비율을 반반으로 가져가는 설정.


설정은 본인 게임 레이아웃 스타일에 따라서 편한 거로 고르면 된다, 필자는 Expand가 편했음





이렇게 설정하고 나면





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e35734dcdfba125e4e3dc417ca412845e8b5c1df387de8b85



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce880fa1bd62531b1ff05ae57c74e7d1bb347366ebf2da7bf31b15e9a58a74aa13d87596e357640ebe41eb5c77baecd23b6749fa9eb678378664eae57




크거나 작은 해상도에서도, UI 요소들의 크기가 적절히 조정되는 것을 확인할 수 있다!




4. 해상도 변경 기능




해상도 변경은 Screen.SetResolution을 통해 간편하게 할 수 있다!




4-1. 해상도 변경 UI






24b0d121e09c28a8699fe8b115ef0468e2a3ecbb





일반적으로 해상도는 목록 형태로 표시하기 때문에


드롭다운을 활용해 해상도 설정 UI를 만들어 준다.




       
        Screen.resolutions;




참고로, Screen에서 해상도 데이터를 제공하기 때문에 적극적으로 가져다 쓰자!


물론, 필자는 4:3, 16:9, 16:10, 21:9 비율만 걸러서 사용.





    public void ApplySettings()
    {
        Resolution res = resolutions[resolutionDropdown.value];
        bool isFullscreen = fullscreenToggle.isOn;

        Screen.SetResolution(res.width, res.height, isFullscreen);
    }
   





Screen.SetResolution(가로, 세로, 전체화면 여부)



이제 UI와 실제 해상도 변경 기능까지 연결해서 적용해주면 완성!






a04804aa0633b3498af1d1bc10f11a39efa2d52888ececdd8d2c




이렇게 잘 적용되는 걸 볼 수 있다!!


굉장히 만족스럽다!




5. 마치며




해상도 때문에 찾아보다가 해상도 설정의 기본에 대한 정보가 별로 없어서 한 번 써봤습니다!




처음 스크린샷 보면 알겠지만,


사실 시작은 피드백 받으려고 itch.io 데모를 올리는 것이었습니다,,,




따라서, 조심스레 피드백 부탁드려보겠습니다... (_ _)



itch.io

Play in your browser

ttobing3.itch.io



게임에 대해 간략하게 설명하면 


이름 : SAMUKID / 장르 : 로그라이트 덱빌딩


  ( 사무라이 + 꼬마 )




플레이어가 맹인 사무라이를 돕는 꼬마가 되어 함께 스테이지를 진행하는 게임입니다!






a15714ab071e76a167b9f68b12d21a1db46aeb3df60f7621



a66e04aa063376a167b9f68b12d21a1dadb409bdbdca7d3a



a14004ad3716b54cb6f1d1bc10f11a3960658ca249a7d6fe10a8



a17d34ab0d1e76a167b9f68b12d21a1dcd3baa5fb04bab80


( 사무키드 플레이 이미지 )




혼자서만 플레이 하다 보니까 플레이어에게 어느 정보가 전달되지 않는지도 모르겠고,


내겜구려병이 도져서 재미가 없는 것 같은데 어느 부분을 어떻게 고쳐야 할 지도 안 떠오르더라구요...




그래서 부족하거나, 불편한 부분 혹은 제안하고 싶은 개선 사항에 대해서 거침없이, 가감없이 던져주시면 정말 감사히 받겠습니다,,,