도입부

오늘 회사에서 기존 데이터 관리 객체의 성능 문제로 리팩토링을 하다가,

Serializable 하지 않은 데이터를 씬에 넣고 저장하려다가, 얼른 원인을 깨닫지 못하고 어버버버 하다가 30분 정도를 날렸다.

뭐 늘 그렇지만, 집에 와서 저녁 먹으면서 복기를 하다 보니까 요런 생각이 들었다.

Scene 을 대체 뭘로 쳐만들었길래 ?

그리고 생각해보니 , 더 놀랍고 불쾌한 사실을 알아냈다.

Scene 의 정체에 대해서, 내가 정확히 모르고 있다는 것

어쩌면, 깊은 내면에서의 씬의 이미지는

그냥 공터나 연극하는 곳이 아니었을까 싶기도 하다.

생각해보면 그 친구도 파일이자, 데이터인데 말이다.

그래서 부랴부랴 Unity 의 모친에게 물으러 갔다. (?)

Unity Scene File, Unity Scene Fundamental 등등 이런 저런 단어를 검색해보고 ,

돌고 돌아 다음 Unity Manual로 도착했다.

혹시 몰라, 회사에서 쓰는 버전인 Unity 2017.4 버전의 매뉴얼로 바꾸어서 봐도 다음 같은 내용이 적혀있었다.

Unity’s scene format is implemented with the YAML data serialization language. While we can’t cover YAML in depth here, it is an open format and its specification is available for free at the YAML website. Each object in the scene is written to the file as a separate YAML document, which is introduced in the file by the — sequence. Note that in this context, the term “object” refers to GameObjects, Components and other scene data collectively; each of these items requires its own YAML document in the scene file. The basic structure of a serialized object can be understood from an example:-

출처 URL : (https://docs.unity3d.com/2017.4/Documentation/Manual/FormatDescription.html)

쉽게 말해서, YAML 을 구현한 형태로 Unity Scene 의 형식이 정해졌다는 말이다.

( 영어투의 어색한 번역체가 나와서 불만스럽지만, 내 짧은 지식으로 원어를 왜곡하지 않기 위해서 직역해서 썼다.)

YAML

어쩐지, 뭔가 가끔 GUI 클라이언트들의 Git Diff로 우연히 씬 파일을 보면, 뭔가 형식이 있는 문서 같은게 나온다 했다.

뭔가 이름만 봐도 , XML이나 XAML 사촌 정도 되지 않을까? 하는 합리적 의심이 들었다.

다음은 위키의 설명이다.

YAML은 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 ‘사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식이다.

출처 URL : (https://ko.wikipedia.org/wiki/YAML)

추가적으로 조금 더 발췌해보자면,

YAML은 모든 데이터를 리스트, 해쉬, 스칼라 데이터의 조합으로 적절히 표현할 수 있다는 믿음을 가지고 만들어졌다.

문법적으로는 XML 에 가깝고 ( 특수 기호나 , 들여쓰기 등의 특징을 가진다. )

JSON 과 철학이 같다고 한다.

가벼움과 가독성 (인간이 이해하기 쉬운 것)이 목표인 듯 하다.

비슷하지만 조금 달랐다.

결론

이 내용을 조금만 더 알았더라면, 전 회사에서

포인트 클릭 어드밴쳐를 구현하는 툴을 만들 때 ,

씬이나 오브젝트, 컴포넌트 전체를 엑셀 파일로 불러오거나 저장하는 기능을 만들었는데 ,

좀 더 쉽게 + 유니티 에디터에 의존하지 않게 만들 수 있었을 것 같다 !

뭐 , 지금도 늦지는 않았다고 본다.

해결 못한 의문

위에서 ‘스칼라 데이터’ 의 정확한 의미를 모르겠다.

벡터 - 스칼라인지…

지금은 위키 쳐서 나오는 맨 마지막 거라고 대강 생각은 하고 있다.

그게 맞다면, 변수와 혼용되는 용어다.

(컴퓨터 과학): 한번에 하나의 값만 보유할 수 있는 원자량

나중에 정확히 알게되거나, 틀렸다는 것을 알게 되면 수정해야겠다.