글을 쓰게된 이유
회사가 아닌 팀 프로젝트를 진행중에 기획 팀원분이 JSON이나 CSV ,TSV를 모르는경우가 있어서 내가 직접 설명을 해야하는 경우가 발생했다. 하지만 나도 매번 써왔던 csv, tsv json을 설명하려 하니 어디서부터 어디까지를 설명해야할지 분간할 수 없었다.그래서 다시 한번 기초를 다지고자 유니티를 사용하며 반드시 알아야하는 개념들을 글로 정리해보려한다.
🧠 프로그램과 프로세스
우리가 흔히 말하는 프로그램이란 컴퓨터에서 실행되는 명령어 모음이 들어 있는 데이터 덩어리를 의미합니다.
크게 코드(code)와 데이터(data)로 구성되어 있습니다.
프로그램 자체로는 아무런 의미가 없습니다. 우리가 그것을 더블클릭하여 실행시키기 전까지는
프로그램을 실행시키면 프로그램 안에 들어 있는 명령어가 한 줄씩 실행되면서 프로그램은 뭔가 활동을 하는 상태가 됩니다. 이를 프로세스(process)라고 합니다.
프로그램에 있는 코드와 데이터는 이 프로세스 메모리로 불러들입니다. 즉, 로딩이 됩니다.
프로세스 메모리에는 프로그램 코드와 데이터는 물론 힙(heap)과 스택(stack)도 공존합니다 스택에는 현재 실행 중인 함수들의 호출 기록과 사용 중인 로컬 변수들이 들어 있습니다
이때 컴퓨터 하드웨어의 구조를 같이 알게되는데
프로그램은 디스크 같은 저장소에 있고 프로세스는 RAM 메모리에 있습니다.
🎮 Unity란?
유니티는 게임을 만들기위한 툴입니다.
기본적으로는 3D 엔진이지만, 2D 게임을 만들 때도 내부적으로는 3D 공간에서 작동합니다.
게임을 개발하면서 개발자는 필요한 명령어(Script) 와
데이터(json, csv, tsv 등) 를 사용하여 게임을 구성합니다.
Unity는 이런 데이터와 코드를 조합하여 게임이라는 '프로그램'을 완성시킬 수 있도록
다양한 기능을 제공하는 도구(tool) 입니다.
JSON이란?
위 자료는 뷰어를 통해서 해당 json 데이터가 어떤식으로 구성되어있는지 개발자가 보기 편하게 출력된 구조입니다
json이란 단순히 String(문자열)이 직렬화된 데이터 뭉치이자 단순히보면 긴 장문의 문자열 덩어리입니다.
하지만 사람 또는 컴퓨터가 저장하거나 읽을 수 있는 포맷형식이자 규칙이기에 개발자라면 반드시 json을 사용하게 됩니다. json 이외에도 다른 포멧형식으로 (콤마)Comma를 기반으로 데이터 타입을 나누는 CSV, (탭)Tab을 기반으로 데이터 타입을 나누는 TSV가 존재합니다.
JSON 사용시 주의점
1. Key - Value Pair의 데이터 구조임을 감안, Key의 이름을 헷갈리지 않게 잘 지어야한다.
2. 전체 데이터 클래스의 크기가 너무 길지 않은 것이 좋다 이유는 해당 데이터를 서버와 통신할때 패킷 용량을
적게하는편이 비용면에서도 속도면에서도 좋다 우리나가의 경우는 상관없지만 인프라가 적은 국가에 경우 패킷을 정액제로 비용을 발생하고 소통하는경우가 있는데 이런경우 문제가 발생할 수 있다.
3. 유지보수가 필요해질 여지가 있다면 버전 추가.
- 패치를 받은 유저와 패치를 받지 않은 유저의 경우 데이터의 종속석 또는 데이터의 Null(빈참조) 문제가 발생할수 있다.
이런 문제를 해결하기위해 데이터가 존재하는지 체크하는 코드를 많이 사용하게되면 코드가 너무 지저분해지기에 json 데이터를 버전에 맞게 관리하는게 더욱 용이하다.
직렬화란?
객체(Object)를 저장하거나 네트워크로 전송할 수 있도록 문자열(또는 바이트) 형태로 변환하는 과정을 말합니다.
실제로는 직열화된 상태로 게임에 필요한 item 데이터, npc의 대사, 튜토리얼에 등장하는 대본,상품, 등 json이 대신 데이터로 표현 할수 있습니다.
이때 중요한건 유니티에서 json을 사용할때는 직렬화 대상 클래스(Serializable Class)를 반드시 사용해줘야한다
이것을 붙여주는 이유는 "이 클래스는 json으로 읽어드리기위한 클래스야!"라고 컴파일러에게 알려주는것이다.
해당 Serializable한 클래스는 별다른 매소드를 서비스하는 클래스 보다는 데이터를 구상하는 데이터 클래스로 사용될것이다.
📘 참고 용어 요약
- JSON: JavaScript Object Notation, 가볍고 읽기 쉬운 데이터 포맷 (중괄호 {} 구조)
- CSV: Comma Separated Values, 콤마로 구분된 텍스트 데이터 (엑셀처럼 사용)
- TSV: Tab Separated Values, 탭으로 구분된 데이터 (가독성 좋음)
'유니티' 카테고리의 다른 글
유니티 라이팅 시스템 (0) | 2025.04.06 |
---|