-
Notifications
You must be signed in to change notification settings - Fork 10
/
0065.txt
7 lines (4 loc) · 11.2 KB
/
0065.txt
1
2
3
4
5
6
7
오늘은 유니티에 대해서 잠깐 얘기 좀 해보려고 해요. 제가 요즘 유니티를 조금씩 만지고 있기도 하고 예전에도 잠깐 만졌어요. 유니티를 일단은 제가 되게 좋아한다는 걸 말씀드리고 싶고 이제 상당히 유니티는 괜찮은 제품이라고 생각을 해요. 근데 그중에서 제가 예전에 마음에 안 들던 부분이 몇 가지 있었는데 정말 마음에 안 드는 것도 몇 가지 있었고 대부분은 고쳐졌어요. 그런데 아직도 한 가지가 안 고쳐지는 게 있어서 이건 좀 아니지 않나 싶어서 얘기를 해보려고 그러거든요?
일단 그게 뭔지 말씀을 드리면 유니티에서 파일을 저장하는 게 있잖아요? Scene File라든가 Prefab이라든가 그런 파일을 저장할 때 이 저장이 바이너리 포맷으로 돼요 텍스트 파일 포맷이 아니라. 물론 프로 버전을 쓰면 텍스트 파일로 저장할 수 있는 방법이 있어요. 예를 들어서 Scene에 물체 하나 집어넣고 물체의 위치가 0.0.0이었다 그러면 텍스트 파일 포맷으로 저장을 하면 이게 위치가 0.0.0으로 나오고 나중에 그 위치를 0.0.2로 바꾼 다음에 저장을 하면 위치가 0.0.2로 바뀌죠. 근데 바이너리 모드에서 0.0.2를 저장을 하면 ASCII 코드로 보면은 숫자 2가 안 보이고 다른 이상한 별 같은 특수문자처럼 보이게 되거든요? 이게 왜 문제냐 그러시는 분도 있을 법은 해요. 제가 왜 그게 문제라고 보냐면 일단 그 여러 사람이 공동 작업을 할 때 그 파일을 여러 명이 동시에 고치는 경우가 있거든요? 물론 회사 한 군데에서 그냥 계시는 분들 오피스에서 같이 근무하는 사람들은 크게 문제가 안 될 수도 있어요. 파일을 잠그는 법도 있고 perforce를 쓴다면... Apache Subversion 쓴다면 또 다른 얘기죠 사실은. 이런 팀이 같은 시간에 같은 장소에서 일하지 않는 팀도 많잖아요? 요즘 인디 팀도 많고 그냥 따로 떨어져서 일하는 팀도 있고 그런 팀이 많아질수록 문제는 동시에 여러 명이 같이 파일을 만질 수도 있고 그리고 체크인의 그것도 요즘 많이 쓰는 머큐리얼이나 깃 같은 걸 쓰다 보면 사실은 동시 체크인을 자기 컴퓨터에 해두고 나중에 서버로 집어넣는 경우가 생긴다고요. 그럼 거기서 이제 컴플리트가 생겨요.컴플리트가 생기면 물론 머큐리얼이나 깃 같은 경우는 컴플리트가 생길 때 그걸 머지를 잘할 수 있게 좋게 나오긴 했는데 한 가지 단점은 텍스트 파일일 때가 머지가 되는 거예요. 바이너리 파일일 땐 진짜 머지하기가 힘들어요. 그 내용이 뭔지 모르니까... 근데 텍스트 파일이었는데 아까 똑같은 예를 들어서 Scene에 물체가 하나 있었어요. A라는 사람이 물체의 위치를 변경했어요 0.0.2로. 그리고 B라는 사람이 예를 들어 다른 물체를 또 고쳤어요. 그러면 바이너리 파일에서 이게 다 망가져서 어떻게 읽을 수도 없고 컴퓨터가 해독할 수도 없는 그런 이상한 상황이 생겨요. 그 포맷 자체가 뭔지 정확히 알지 않는 한... 근데 머큐리얼이 유니티 Scene 파일 포맷을 정확히 알고 있을 수는 없죠. 근데 이게 텍스트 파일이면 텍스트 파일에 저 윗줄에 물체 A가 0.0.0에서 0.0.2로 바뀌었다는 게 딱 한 줄 보이고 나중에 뒤에서 물체의 두 번째가 다른 걸 바꿨던 게 딱 보이기 때문에 라인 비교해서 같은 라인이 바뀐 게 없어서 머지를 시킬 수가 있어요. 그래서 굉장히 중요한 콘셉트이거든요? 소스 컨트롤하다 보면은... 언제나 저희가 게임 쪽에서 일하면서 가장 큰 문제가 됐던 게 바이너리 파일들 머지 안 되지 않냐? 그게 되게 큰 문제였고 그래서 최근 동안에 이제 텍스트 파일을 기반으로 상당히 많은 아트제가 나왔죠 플래시도 어느 순간부터 XML 기반으로 세이브할 수 있는 기능이 나왔었고 똑같은 얘기로 3ds Max 같은 경우도 이제 Max파일 자체를 저장이 안 될 거예요. 근데 그게 FBX 파일 같은 걸로 저장했을 때 그렇게 됐고 문서 파일은 일반 텍스는 당연히 문제가 없었고 최근 들어서 마이크로소프트 쪽에서 3ds Max ml 포맷에 기반한 문서 파일을 많이 내놓고 있고요.
그래서 제가 다시 유니티로 돌아가서 말씀을 드리면 제가 뭐가 마음에 안 드는 거냐면 저는 개발자 입장에서 그렇게 생각을 해요. 유니티는 당연히 돈을 벌어야 돼요. 자기들도 먹고살아야 되고 그리고 저는 유니티가 현재 추구하고 있는 그런 수익 모델이 상당히 좋다고 생각을 하거든요? 예를 들면 이런 기능은 무료 버전에 주고 이런 기능은 프로 버전에만 줘서 이 기능을 쓰고 싶으면 프로 버전을 사라... 굉장히 좋아요. 가격도 상당히 저렴하다고 솔직히 생각을 해요. 근데 저는 그거 자체가 작업 효율성을 줘야만 된다고 봐요. 근데 제가 작업 효율성을 얘기하는 이유가 뭐냐면 지금 프로 기능 버전 자체에 정확히 뭐가 있는지 기억이 잘 안 나는데 예를 들어서 Global Illumination 있잖아요? 그게 실시간으로 도는 게 프로버전이다? 상관없어요. 저한테도 그 필요하면 사겠어요. 그런 건 아무 문제가 안 돼요. 근데 정말 소스 컨트롤은 정말 소규모 팀이나 대규모 팀에는 당연히 있어야 되고 소규모 팀이면 팀일수록 그렇게 분산 소스 컨트롤 시스템을 많이 쓰는 게 당연해요. 깃이나 머큐리얼 같이... 이게 유니티에서는 모든 파일이 바이너리로 작동해버리면 사실상 분산 시스템의 의미가 점점 없어져요. 내가 이 Scene 파일 고치고 네가 이 Scene 파일 고치고 그럼 나중에 머지해야 되는데 바이너리 파일에서 머지 안 되잖아요? 그러면 그거 해결하려고 머리 뽀개지지 그럼 그걸 피하려고 Scene 파일 서로 터치 안 하게 내가 터치할 때마다 다른 사람에게 말하고 "야! 나 이거 터치할 거니까 지금 이거 건들지 마" 이런 워크 플로우 자체가 상당히 비효율적이거든요? 그래서 워크플로우를 저해할 이유가 있나? 이게 최근에 추가된 기능이라서 그런 것 같긴 해요. 텍스트로 저장할 수 있는 그런 게... 그래서 개인적인 입장에서는 이건 당연히 무료 버전이 된다고 보거든요? 무료 버전에 들어가는 기능이라고...다른 거 다 제약 걸어도 좋으니까 정말 일할 때 효율성 저해하지 않는 거는 당연히 무료로 배포돼야 된다는 생각을 해요. 그래서 그 부분에서 상당히 불만이 많아요. 똑같은 예로 예전에 외부 소스 컨트롤 못쓰는 때가 있었잖아요? 왜냐하면 그때 .meta 파일을 제공을 해서 그것만 저장을 하면은 guid 똑같이 연결되고 그래 갖고 컴퓨터랑은 상관이 없지만 예전에는 그걸 따로 주장할 수 있는 방법이 없을 때는 guid가 에셋 파일 안에 들어가 있기 때문에 유니티만 알지 외부 소스 컨트롤에서 알 수 있는 방법이 없었다고 그러더라고요. 그것도 처음에 프로버전에서 시작을 했다가 다음 버전 나오면서 무료 버전으로 내려왔죠. 그래서 그 개념은 알겠는데 사실 그때 그 기능이 나올 때 텍스트 파일 기반의 저장도 나왔어야 된다고 보거든요? 그래서 그 부분이 아직도 무료가 아닌 게 전 솔직히 굉장히 불만스러워요. 그리고 상당히 많은 팀을 괴롭게 하는 부분일 거고 그리고 특히나 소스 컨트롤 쪽이나 뭐 그런 걸 더욱 잘 모르는 인디 쪽 그런 팀일수록 더더욱 힘들 것 같아요. 인디가 모른다는 게 아니라 그러니까 처음 게임 입문 처음으로 게임 만들어보시려는 분들 소스 컨트롤 잘 모르지만 그래도 팀끼리 뭔가 하고 싶은 사람들 그런 사람들 소스 컨트롤 장려해야죠? 그리고 그런 사람들 유니티 장려하는 게 당연히 좋죠 쓰기 편하니까. 근데 머지 안되게 텍스 파일 저장을 안 한다는 것 자체가 상당히 큰 걸림돌이 될 수 있다는 거예요. 그래서 모르겠어요. 언제 이게 무료가 될지는 저도 모르겠는데 그 기능 자체가 당연히 이건 무료로 제공돼야 한다고 보고요. 그것 때문에 다른 걸 유료로 전환해도 저는 이거는 무료가 되길 바래요.
그리고 제가 지금 말하는 그 세팅이 어디인지 정확히 모르시는 분들은 프로 쓰시는 분들도 많으실 텐데 메인 메뉴 가서 Edit에 프로젝트 세팅이 있어요. 그럼 옆에 보면 에디터 세팅이 있거든요? 그러면 파일 저장 모드가 있어요. 아마 디폴트는 mixed로 되어 있을 거예요. 이거는 mixed의 개념이 뭐라 그랬더라... mixed로 해놓고 Scene 파일로 저장했을 때는 바이너리로 저장이 됐어요. 근데 그 밑에 보면 false binary가 있고 false text가 있었어요. 근데 제가 기억하기로는 텍스트는 프로 버전에만 되거든요? 그래서 그거를 선택할 수 있는 분들은 그걸 false text로 해주시면 Scen, Prefab, 텍스트 파일로 나와요. 그럼 그때부터는 머지가 되게 쉬워지는 거죠. 그래서 그 기능이 거기 있고 저는 그 기능 봤을 때 처음에는 무료 버전 기능을 되게 좋아했는데 프로버전이라고 좀 많이 상심을 했고요. 이 비디오 보시는 분 중에 그거를 바꾸실 수 있는 권한이 있으신 분은 없다고 봐요. 유니티 관련자 분들이 보시더라도 그 결정은 제가 볼 때 본사 결정이기 때문에 제가 어떻게 영향력을 행사할 수 있는 방법은 없는데 어찌 보면 유니티 feture request 페이지에 그게 올라갈 수도 있어요. 근데 그거의 다음 버전일 수도 있고 어쨌든 개인적으로 유니티를 워낙 사랑하기 때문에 그게 불만이 있다고 말씀을 드린 거고 예전에도 그런 비슷한 블로그 글을 썼었죠. 정말 좋아하는데 이거는 좀 고쳐야 되지 않냐?라는 얘기를 한 적도 있고... 그렇게 봐주시고요 어쨌든 유니티는 굉장히 좋은 거예요. 이것 때문에 쓰지 말라고 할 순 없어요. 그 대안이 없기 때문에 요즘 hero 엔진을 잠깐 보긴 봤는데 그것도 쫌 괜찮아 보이긴 하지만 전혀 다른 분야의 게임을 만들 때 좋은 것 같고 유니티는 이쪽 hero 엔진은 MMO 쪽 이렇게... 그래서 유니티는 일단 굉장히 좋고 써보시고 얘기하고 싶고 다만 소스 컨트롤을 사용하시는 분들은 의사소통이 잘 돼야 될 것 같아요. 서로 같은 에셋 안 건드려야 되고 Scene 파일은 각자 다른 파일로 저장해야 될 것 같고 한 파일 동시 작업하는 게 정말 어려울 것 같고요. 그거만 이제 다음 버전쯤에서 해결되면 정말 사용하기 좋은 엔진이 되지 않을까... 표면적인 불만은 별로 찾을 수 없는... 그렇게 생각합니다. 포프였습니다.