개발단에 가입하여 베르의 게임 개발 유튜브를 후원해주세요!

 

베르의 게임 개발 유튜브

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다! 게임 개발에 도움이 되는 강좌들을 올리는 채널입니다! [투네이션 후원] https://toon.at/donate/637735212761460238 [유니티 어필리에이트

www.youtube.com

 

안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!

이번에는 유니티의 버전 컨트롤 시스템인 플라스틱 SCM에 대해서 알아봅시다!

 

사용 엔진 버전 : 2021.3

 

타임라인

0:00 인트로

0:10 버전 컨트롤 시스템

1:14 플라스틱 SCM

2:44 가격 책정

3:08 결제 정보 등록 및 유니티 조직 만들기

4:09 플라스틱 워크스페이스 만들기

5:02 기본 기능

6:03 아웃트로

스크립트

인트로

안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.

이번에는 유니티에서 제공하는 버전 컨트롤 시스템인 플라스틱에 대해서 알아보겠습니다.

버전 컨트롤 시스템

버전 컨트롤 시스템은 간단하게 이야기해서 프로젝트의 버전을 관리하는 것을 도와주는 시스템입니다.

깃허브로 유니티 프로젝트를 관리하는 방법에 대한 영상에서 이야기했듯이 프로젝트의 버전 컨트롤을 제대로 하지 않으면 많은 문제들이 발생합니다.

특히 여러 개발자가 함께 개발을 하는 경우에 많은 문제가 발생할 수 있습니다.

버전 컨트롤 시스템이 없다면 보통은 프로젝트의 파일을 압축하거나 패키지를 만들어서 전달하는 방식으로 개발 내용을 공유하게 됩니다.

하지만 이런 경우에는 전달하는 사람이 실수로 옛날 버전의 파일을 보내거나, 파일을 받은 사람이 프로젝트에 적용하는 것을 깜빡하는 경우가 발생해서 프로젝트 최신 버전을 유지하기 어려워집니다.

그보다 심한 경우는 지금 작업 중인 파일과 같은 파일을 다른 개발자가 보내서 내용이 덮어씌워지는 바람에 작업중인 내용이 날아가는 경우도 있습니다.

이렇게 파일로 전달해서 작업물을 공유할 때, 덮어씌워진 내용은 복구가 어렵기 때문에 더욱 곤란한 상황을 만들게 됩니다.

그래서 개발자들은 버전 컨트롤 시스템이라는 것을 만들어서 최신 버전이 어디인지 알기 쉽게 만들고, 작업물을 쉽게 공유하고, 문제가 생긴 버전에서 원래 버전으로 쉽게 되돌릴 수 있도록 만들었습니다.

플라스틱 SCM

하지만 깃과 같은 기존의 버전 컨트롤 시스템은 프로그래머가 사용하기 위해서 만들어졌기 때문에 디자이너들이 다루기 어렵고, 이미지와 같은 리소스 비교가 어렵다는 단점이 있습니다.

이렇게 디자이너나 아티스트가 다루기 어렵고 리소스 비교가 어려운 문제를 개선하기 위해 플라스틱 SCM라는 버전 컨트롤 시스템이 개발되었습니다.

플라스틱 SCM에서 말하는 대표적인 특징은 3가지가 있습니다.

첫 번째는 분산식과 중앙 집중식, 두 방식을 모두 사용해서 작업할 수 있다는 것입니다.

분산식과 중앙 집중식에 대해서 짧게 설명하자면 먼저 분산식은 깃과 같이 각자의 PC에 로컬 리포지토리를 가지고, 개발 후에 안정된 버전만 커밋하고 서버로 푸시하는 방식입니다.

그리고 중앙 집중식은 로컬 리포지토리 없이, 곧바로 서버로 체크인해서 동기화하는 방식입니다.

두 번째는 특징은 대규모 파일을 쉽게 관리할 수 있다는 것입니다.

일반적인 깃 방식의 버전 관리 시스템에서는 100MB이상의 파일을 업로드하려면 LFS라는 것을 사용하는 번거로운 과정을 거쳐야 합니다.

요즘처럼 고퀄리티 게임 개발이 대중화되고 게임에 사용되는 리소스의 용량이 빠르게 늘어나는 상황에서는 이런 번거로운 과정이 꽤나 귀찮게 느껴질 겁니다.

하지만 플라스틱에서는 LFS와 같은 번거로운 과정없이 쉽게 대용량 파일을 다른 작업자들과 공유할 수 있습니다.

그리고 세 번째 특징은 이 플라스틱 SCM이라는 시스템이 유니티 뿐만 아니라 다른 종류의 게임 엔진도 지원한다는 것입니다.

그렇기 때문에 굳이 유니티 개발자가 아니더라도 지금 사용하는 게임 엔진에 도입해보는 것도 나쁘지 않을 것입니다.

비용

플라스틱 SCM는 기본적으로 사용자 3명과 월 5GB의 데이터 스토리지를 무료로 제공합니다.

5인 이상의 팀이라면 1인당 월 7달러의 추가비용이 책정되고, 데이터 스토리지는 5GB를 초과하여 25GB까지는 월 5달러의 비용이 책정됩니다.

그리고 25GB 이후로는 데이터 량이 25GB가 증가할 때마다 5달러가 추가됩니다.

플라스틱 결제 정보 등록 및 유니티 조직 만들기

대략적인 설명이 끝났으니 플라스틱을 사용하기 위해 결제 정보를 등록하고 유니티 조직을 만들어보겠습니다.

먼저 구글에서 플라스틱 SCM을 검색해서 웹 사이트에 접속하고 무료로 시작하기 버튼을 누릅니다.

그러면 결제 창이 뜨는데 비용이 0으로 뜨는 것을 볼 수 있습니다.

Sign in to continue 버튼을 클릭합니다.

유니티 로그인을 하지 않은 상태라면 로그인을 진행하고 기존에 가진 유니티 조직이 있다면 그것을 선택하면됩니다.

기존 조직이 없다면 새로운 조직을 만들고 절차를 계속 진행합니다.

그 다음에는 본인의 결제 정보를 입력하고 진행합니다.

결제가 완료되면 Complete Onboarding 버튼을 눌러줍니다.

그러고 나면 유니티 게이밍 서비스 대시보드가 열립니다.

결제 정보가 등록된 상태기 때문에 여러분이 플라스틱을 사용하다 무료 사용분을 초과하게 되면 자동으로 결제가 됩니다.

그러므로 테스트로 사용하실 때는 대시보드를 확인하면서 추가 결제가 발생하지 않도록 주의를 기울여야 합니다.

이렇게 하면 기본적인 준비는 끝났습니다.

플라스틱 워크스페이스 만들기

이제 플라스틱을 유니티에서 사용하는 방법을 알아보겠습니다.

유니티 허브를 실행하고 플라스틱을 테스트하기 위한 프로젝트를 생성합니다.

유니티가 실행되고 나면 화면의 좌측 상단에 육각형 모양에 P가 적힌 플라스틱 SCM 버튼을 볼 수 있습니다.

이 버튼을 누르면 플라스틱 SCM 뷰가 열립니다.

여기서 로그인 or Sign up 버튼을 눌러줍니다.

그러면 창이 하나 뜨는데 여기서 플라스틱 SCM을 사용할 유니티 조직을 선택해줍니다.

그 다음에는 [Create workspace] 버튼을 클릭합니다.

여기서는 필요에 따라 워크스페이스의 설정을 바꿀 수 있습니다.

보통은 내용을 바꿀 필요없이 이어서 [Create workspace] 버튼을 눌러주면 됩니다.

기본 기능

워크스페이스가 생성되고 나면 플라스틱 SCM 창이 이렇게 변합니다.

플라스틱 창에서 제일 앞에 있는 Pending Change 탭에서는 현재 내가 프로젝트에 변경한 작업 내용들이 표시됩니다.

변경한 내용 중에 서버에 올리고자 하는 것을 선택하고 변경 내용에 대한 로그를 적은 뒤 [Checkin Changes] 버튼을 누르면 변경사항이 서버에 공유됩니다.

그리고 두 번째 탭인 Incoming Changes 탭에서는 다른 사람이 공유한 내용을 받을 수 있습니다.

현재는 다른 사람이 공유한 내용이 없어서 아무 것도 없지만, 다른 사람이 작업을 공유하면 여기에 표시되고 아래에 있는 Update workspace 버튼을 누르면 다른 사람의 작업을 업데이트 받을 수 있습니다.

그 다음 Changesets 탭에서는 지금까지 공유된 작업의 히스토리를 볼 수 있습니다.

그리고 Branches 탭에서는 현재 프로젝트에 존재하는 브랜치의 목록을 볼 수 있습니다.

추가로 우측 상단의 톱니바퀴 모양의 버튼을 클릭하고 [Invite Members to workspace]를 선택하면 새로운 개발자를 이 워크스페이스에 초대할 수 있는 창이 뜹니다.

여기서 [Add new user] 버튼을 누르고 초대할 개발자의 이메일을 적어주면 다른 개발자를 이 워크스페이스로 초대할 수 있습니다.

아웃트로

이번 영상에서는 유니티의 버전 컨트롤 시스템인 플라스틱 SCM을 사용하는 기본적인 방법을 알아보았습니다.

이 강좌는 여러분들의 시청과 후원으로 제작되었습니다.

이상 베르의 게임 개발 유튜브였습니다. 감사합니다.

 

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store

Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.

store.unity.com

 

[투네이션]

 

-

 

toon.at

[Patreon]

 

 

WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon

WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.

www.patreon.com

[디스코드 채널]

 

Join the 베르의 게임 개발 채널 Discord Server!

Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.

discord.com

 

반응형

어지간한 외국 프로그램에는 기본적으로 있는 문제인 한글 경로 포함 문제는 Unity Collaborate에도 있다. 이 문제는 In The Cloud에서 유니티 클라우드 서버에 저장된 프로젝트 파일을 받아올 때 발생하는 문제인데, 이 파일을 다운받는 경로 상에 한글 경로가 하나라도 포함되면 클라우드 서버에서 프로젝트 파일을 받아오는데 실패한다.


해결책은 매우 간단하다. 프로젝트 파일을 받고자하는 경로상에 한글 이름의 폴더를 두지 않으면 된다. 일본어나 중국어 상에서도 같은 문제가 발생할 지는 모르겠지만, 아마 발생할 확률은 높다고 생각된다.


반응형

Unity Collaborate를 사용하면서 지속적으로 사용자에게 불편함을 주는 문제점이 발견되었다.

 

Collarborate를 사용하다보면 어느 순간에 Inspector 창과 Services 창이 검게 변하면서 먹통이 되는 버그가 발생한다. 위에 있는 Collab 버튼을 눌렀을 때 나오는 Publish & Update 메뉴 역시 검은 색으로 먹통이 된다(아직 다른 사람들이 부르는 용어를 들어본 적이 없으니 Inspector blackout이라고 부르자).

 

이 문제는 다른 해결책은 딱히 없으며 유니티를 재시작하는 방법이 그나마 나은 방법이고 유니티를 종료하면 버그 리포트를 보내라는 창이 뜬다. 조금 심각하게 여겨질 수 있는 부분은 이 버그의 발생 빈도가 생각보다 높다는 것이다. 스크립트 작업은 문제가 없지만, 유니티상의 대부분의 작업은 에디터에서 이루어 진다는 것을 볼 때 이 버그가 생각보다 자주 일어난다는 것 만으로도 작업 효율이 상당히 저하될 수가 있다. 더더욱 최악인 점은, 이 버그가 있는 Collaborate를 대신할 만한 SVN을 찾아서 설정하는 일은 굉장히 복잡한 일이라는 것이다.

 

현재로서 사용자가 할 수 있는 일은 Inspector 창이 blackout될 때마다 짜증을 내며 유니티를 재실행하고 유니티 측에서 빨리 이 버그를 해결해주기를 기도하는 수 밖에 없다.



ps. 유니티를 재실행하는 것 말고도 다른 해결책이 있다. Inspector 창을 껐다가 켜는 것이다. 하지만 이것 역시 유니티를 재실행하는 것과 비슷한 수준의 귀찮음을 프로그래머에게 가져다 준다.


ps2. 또 다른 해결책으로는 작업하는 도중에는 Collaborate를 끄고, 업데이트나 퍼블리쉬를 할때만 켜서

반응형

메타 파일로 프로젝트가 관리되는 유니티는 외부적인 SVN으로 관리하기가 매우 힘든 편인데, 그 점을 보완하기 위해서 Unity Collaborate가 나왔다.

5.4, 5.5 Version을 기준으로 이 서비스는 아직 베타이다. 그래서 아직 문제점이 많은데 이번에 겪은 문제는 2가지 정도이다.

 

프로젝트 탭에서 새로운 폴더를 생성하고 파일을 옮긴 이후에 클라우드 서버에 Publish한 경우, 다른 사람이 이 변경사항을 Update 받으면 새로운 폴더에 옮긴 파일이 있는데 이전의 위치에도 그대로 파일이 존재하는 문제점이 있다. 그 때문에 같은 파일이 2개가 되어서 충돌하는 문제가 있었다. 이 문제는 간단하게 이전 파일을 지워주기만 하면 해결되었다.

 

두 번째 문제는, 버전 컨트롤로서의 Collaborate의 존재를 유명무실하게 만드는 문제인데, 이 부분이 약간 골치가 아프다. 물론 이 문제의 해결책도 간단하기는 하다. 앞서 말한대로 Collaborate의 신뢰도를 많이 떨어뜨리는 문제일 뿐. 그게 무슨 문제냐면, 유니티 상에서 .cs 파일의 이름을 변경하고 내용의 클래스 이름도 변경하는 경우가 있는데, 이러한 수정을 한 이후에 클라우드 서버에 Publish 할 경우, 파일 이름이 변경된 것만 서버로 올라가고 파일의 내용은 전혀 바뀌지 않은 채로 올라간다는 것이다. 그리고 이 문제는 Collaborate 자체로는 전혀 해결할 수가 없다. 이전 버전으로 롤백하고 다시 Update를 받든, 뭘하든 전혀 해결이 안된다. 이걸 해결하려면 수정된 파일을 수정자에게서 수동으로 받아서(메일으로든, 메신저로든 아니면 SVN을 통해서 받든 ... ) 유니티 프로젝트 폴더의 해당 경로 안에 다시 붙여넣기하는 수 밖에는 없다. 이러면 도대체가 Collaborate를 쓰는 이유가 뭔지...


이걸 애초에 방지하려면 지금 작업하던 클래스의 이름을 변경하려면 아예 cs 파일을 바뀐 이름의 클래스로 새로 만들고 내용을 붙여넣기한 다음에 이전 파일을 지워야 하는 것 같다.


반응형

팀 단위의 프로젝트 혹은 소스의 버전 컨트롤을 위한 유니티에서 지원하는 유니티 전용의 버전 컨트롤러이다.

 

이게 왜 5.4버전에 와서야 베타로 지원되는지, 왜 이전에 더 빠르게 지원하지 않았는지 의심스러운 기능인데 그 이유는 유니티는 각 종 프로젝트의 정보를 메타 데이터라는 것에 모조리 쑤셔박아 넣기 때문에 일반적인 SVN을 사용하면 메타 데이터가 깨져서 프로젝트가 맛이 가버린다던가 하는 상황이 발생할 확률이 매우 높기 때문에 데이터를 텍스트로 뽑아서 저장하고 SVN을 쓴다던지 아니면 메인 프로젝트 폴더를 두고 다른 작업자들은 Package 파일로 저장해서 합친다던지 하는 원시적인 방법을 써야했었다.그러다가 실수로라도 잘못 덮어쓴다던지 하는 일이 발생하면 대참사가 일어나는 것이고 ...

 

하지만 이 Unity Collaborate 하나면 그런 걱정들은 싹 사라진다. 잘못된 수정 사항이 있으면 간단하게 롤백할 수 있는 기능을 제공하고 있으며, 그리고 더욱 좋은 점은 SVN을 위해서 따로 컴퓨터를 세팅할 필요가 없이 프로젝트의 모든 파일과 데이터는 유니티가 지원해주는 클라우드 서버에 저장된다는 것이다!

 

사용법 :: https://developer.cloud.unity3d.com/collaborate/

 

아무래도 아직 베타 버전이라 그런지 따로 기능 신청을 해야만 사용이 가능한것 같다. 물론 한 사람이 신청을 해서 다른 사람들을 자신의 프로젝트에 초대하면 함께 작업할 수 있다.

반응형

+ Recent posts