Unity 엔진은 싼 가격과 수많은 커뮤니티, 폭넓은 지원 플랫폼 등으로 많은 인기를 구가하는 게임 엔진입니다. 대표적인 상용게임으로는 Hearth Stone이 있습니다. 모바일에서는 거의 Deemo등의 게임이 엔진을 쓰고있지요. 이외에도 인디게임계에서는 거의 표준이라고 해도 과언은 아닙니다. 특히 멀티플랫폼을 목표로 한다면 Unity 엔진 하나로 만들기만 해도 충분히 커버가 가능하기 때문에 선택의 이유가 충분한 엔진입니다.


하지만 지금까지 Unity 엔진을 사용하기 위해서는 Windows나 Mac에서 개발을 할 수 밖에 없었습니다. 결과물이 리눅스나 안드로이드에서 돌아가게 할 수는 있으나 기본적인 에디터가 Windows/Mac만을 지원했던 것이 이유입니다.


하지만 Unity5.1 부터 아직 시험 중이지만 리눅스를 지원하기 시작했습니다.

http://forum.unity3d.com/threads/unity-on-linux-release-notes-and-known-issues.350256/


여기서 우분투 지원패키지를 직접 받을 수 있다. 페이지 제일 아래로 내려가면 빌드가 될 때마다 리눅스용이 나오는 것을 알 수 있다.



일단 우분투용 패키지는 기본적으로 지원하며 다른 배포판은 쉘스크립트를 통해 설치하도록 되어있습니다. 링크의 최상단에는 테스트에 대한 이야기가 있고(공유 라이브러리의 버전에 대해서도 설명 되어있습니다. 우분투를 쓴다면 크게 신경 쓰지 않아도 되는 이야기 입니다.)

제일 아래로 내려가면 최신 릴리즈가 나와있습니다. 해당 글에서 deb 파일을 받아다가 설치하면 됩니다. 참 쉽죠?


실행을 해본 결과 상당히 빠릿합니다. OpenGL만을 지원하기 때문에 D3D옵션은 사용 불가능합니다. 하지만 OpenGL만의 기능으로 D3D기능을 대체가 충분히 가능하기 때문에 크게 문제는 없습니다. 특히 쉐이더는 GL용과 D3D용이 별도로 있었던 Unity4와 달리 통합되어 있기 때문에 더더욱 신경을 쓸 필요가 없습니다.


windows와 동일한 화면이다 Personal을 사용하든 Professional을 사용하든 별 문제가 없다.

우분투의 Unity 데스크톱과 잘 어울리는 Unity에디터의 모습. 실제로 서로의 문제를 해결하기 위해 검색하면 미묘하다.



스크립트 에디터는 기본적으로 우분투에서 연결된 에디터가 실행되게 끔 되어있습니다. Edit-Preference 에 들어가시면 실행이 되지도 않는 Mono Develop 대신 많은 사람들이 사용하는 Sublime Text나 Gedit+plugin도 사용이 가능하다고 합니다. 어쩌면 이쪽이 더 나을 수 있습니다.


여기서 에디터를 마음대로 바꿀 수있는데 왜인지 아직은 제대로 작동이 안 된다.



그런데 저 같은 경우에는 잘 작동이 안 됩니다. 아직 개발 버전이라 그럴 수 있겠다는 생각이 드는군요.

일단

~/문서/(프로젝트 이름)/Asset 안에 스크립트 파일이 생성되니 여기 있는 스크립트를 직접 Sublime Text같은 C#, JavaScript 등을 지원하는 에디터로 수정하시는 것을 추천합니다.


아직은 불안정하지만 이제 우분투에서 게임을 직접 개발 할 수도 있습니다. 리눅스의 게이밍환경은 날로 좋아지고 있습니다.

,

이전에 D3D 성능 강화를 위해 리눅스에서 직접 DirectX9 렌더링을 했다는 이야기는 들어보셨을 겁니다.(http://moordev.tistory.com/129) 그런데 이제는 LLVM과 새로운 스케쥴러(SI Scheduler)의 힘으로 Catalyst보다 성능을 더 뽑아냈다는 소식이 들려왔습니다.


http://www.linuxsystems.it/2015/08/radeonsi-with-si-scheduler-humiliates-catalyst-in-all-tests/


Test게임은 Metro2033으로 리눅스를 네이티브로 지원하는 게임입니다. 즉 순수 OpenGL성능으로 Catalyst를 이긴 것입니다.


물론 우분투 16.04에서 Catalyst의 지원을 끊어 버린 것도 이러한 배경이 있었던 것이지요. 물론 우분투 기본 드라이버는 성능이 그렇게 나오지는 않습니다. 하지만 PPA를 통해 드라이버를 설치하면 이러한 성능을 느낄 수 있습니다.


그동안 저는 oibaf PPA(https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers/)의 드라이버를 사용했었는데 이번에는 다른 PPA를 사용해보겠습니다. 일명 padoka PPA라 불립니다. Paulo dias라는 분이 운영하는 곳으로 oibaf를 기준으로 몇가지 패치를 더 붙여서 배포합니다. 그 중 하나가 바로 LLVM에 추가된 SI Scheduler라는 것으로 약 10%성능 향상을 보입니다.(물론 AMD기준이고 인텔은 잘 모르겠습니다. Nvidia는 그냥 조용히 Nvidia드라이버를 사용하면 됩니다.)


sudo add-apt-repository ppa:paulo-miguel-dias/mesa
sudo apt-get update
sudo apt-get dist-upgrade

그리고 재부팅



그리고 /etc/enviroment나 ~/.profile 파일에 다음과 같은 내용을 추가합니다.

"R600_

DEBUG=sbcl,hyperz,llvm,sisched,forcedma"


이렇게 하고 재부팅을 또 해주시면 각종 Tweak이 적용된 상태로 돌아가게 됩니다.

그런데 이게 Catalyst보다 빠릅니다. 여기에 Gallium Nine을 꺼내면 Windows보다 더 성능이 올라가는 기염을 토합니다. AMD가 하드웨어 문서를 제공하고 약 6년정도 흐른 것 같은데 이제 해커들의 도움을 받아 성능을 끌어올리는데 성공했습니다. AMDGPU PRO라는 드라이버가 곧 나온다고 하는데 기반이 되는 오픈소스가 이 정도면 과연 이 드라이버는 어느정도의 성능이 나올까요? 어쩌면 Windows보다 더 성능이 좋아질지도 모를 일입니다.

,

다들 알다시피 라데온계열은 공식 드라이버를 잘 안 씁니다. Catalyst(패키지명은 fglrx)라 명명된 이 물건은 그야말로 쓰레기로 알려져서 안정성 저하와 패키지 충돌 등 않좋은 것은 다 있었지요. 이게 윈도에서도 마찬가지였던지라 악명이 자자해서 윈도에서도 오픈소스 드라이버를 원한다는 이야기가 들려옵니다.


어쨌건 이런 엉망진창인 드라이버 대신 그동안 잘 사용해 온 드라이버가 radeon드라이버 입니다. 우분투의 기본 드라이버 중 하나입니다. Nvidia의 오픈소스 드라입인 nouveau와는 다르게 워낙 사용자 층이 두터워서 Catalyst의 성능을 따라잡은지 한참 지났습니다.

하지만 워낙 지원 범위가 넓은 덕에 (Wonder시리즈, radeon 7000대~현재) 덩치가 너무 커져 버린 문제가 있습니다. 이전에 이런 문제를 해결하기 위해 R300~R600시절에 radeonhd라는 드라이버가 잠시 나왔지만 gallium프로젝트로 인해 기존 radeon 드라이버로 통합 되었습니다. 그러던 중 지금 R3,4,5,7,9 시리즈가 되면서 새로운 드라이버가 등장했습니다. 그 이름하여 amdgpu입니다.


커널 4.5부터 지원이 시작되었으며 GCN1.1~지원 중입니다. 성능은 radeon과 비교해서 그럭저럭 좋습니다. Catalyst와 이미 엎치락뒤치락 하는 중이니 성능면에서는 좋다고 할 수 있습니다. 하지만 이 새로운 드라이버의 강점은 크기가 작다는 점입니다. 오래된 코드를 쳐냈기에 조금 더 드라이버가 최적화될 여지가 있습니다.


http://www.phoronix.com/scan.php?page=article&item=cat-rad-amdgpu&num=1

실제로 몇몇 부분에서는 radeon에 비해 더 좋습니다. 심지어 Catalyst와 비교해도 꽤 좋습니다. 물론 Catalyst가 조금 더 좋지만 안정성 면이나 드라이버 업데이트 면에서 오픈소스를 더 추천합니다.


우분투 16.04에서 이를 쓰기 위해서는 https://www.linkedin.com/pulse/using-newer-amdgpu-driver-ubuntu-1604lts-dennis-mungai

여기에 나온 데로 해주시면 좋습니다.


우분투 16.04는 4.4커널을 쓰기 때문에 4.5부터 지원하는 amdgpu 드라이버를 쓸 수 없습니다. 그래서 커널 컴파일을 하는 것을 추천하는데

https://github.com/Turbine1991/build_ubuntu_kernel_wastedcores

여기의 커널을 추천하더군요. 이 github는 커널 스케줄러 패치를 적용해주는 스크립트로서 http://www.ece.ubc.ca/%7Esasha/papers/eurosys16-final29.pdf


이 논문은 커널 스케줄러를 개선하는 내용으로 자세는 알 수 없으나 15%정도의 효율이 좋아진다고 합니다. 이걸 적용하는 커널을 컴파일 해주는 스크립트를 사용하면 실제로 그런지는 알 수 없으나 이 논문 내용을 믿는다면 확인이 가능하겠지요.


커널업데이트 방법은 다음과 같습니다.



그냥 github에서 clone받고 스크립트를 순서대로 실행하면 됩니다. 물론 시간은 상당히 걸립니다. 중간중간 물어보는 것도 많으니 마냥 켜놓고 기다린다고 능사는 아닙니다.


아 clone.sh 실행 전에 스크립트 일부를 수정해야 합니다.

clone.sh를 텍스트 에디터로 여신다음

검색-찾아바꾸기 (혹은 그러한 기능)

4.6을 4.7혹은 현재 최신 커널 버전으로 고쳐주시기 바랍니다. 2016년 8월 23일 현재 안정커널 최신판은 4.7이므로 4.7을 받는 것이 좋습니다.


그러면 중간에 버전 선택지에 고치신 최신 버전이 있습니다. 이를 선택해 주시기 바랍니다.


2017.6월 현재 커널 버전이 업그레이드 되어감에 따라 버전 선택의 폭이 넓어 졌습니다. 이제 위의 작업은 안 하셔도 됩니다. 바로 버전 선택이 가능합니다.


중간에 menu.sh 실행 후에 Enable amdgpu support for CIK parts 부분을 yes라고 해야 합니다. 나머지는 별로 문제가 없는데 이 부분이 amdgpu를 사용하는데 제일 중요합니다.



이후 커널 컴파일 한 다음


/etc/default/grub 파일을 편집합니다. 당연히 관리자 권한으로 해야겠지요.


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"


여기서 splash 뒤에 amdgpu.exp_hw_support=1 modprobe.blacklist=radeon

요걸 적어주시면 됩니다. 그 다음


sudo dpkg linux-*.deb

로 설치하시면 amdgpu드라이버를 사용 할 준비가 되었습니다.


amdgpu드라이버는 oibaf PPA를 사용하시면 됩니다. oibaf PPA등록은 제 블로그에 워낙 자주 나오니 넘어가겠습니다.


,