오늘은 Unity 외, 게임제작에 필요한 시스템을 공부하겠습니다.
Firebase Database
Firebase는 구글에서 지원하는 서비스입니다.
클라우드 저장소, 머신러닝, 사용자 인증, 데이터베이스 등등 유용한 기능들을 제공합니다.
이 서비스를 이용하면 별도로 서버 컴퓨터를 가질 필요도 없고, 공인 IP 주소를 구매할 필요도 없고, 통신량이 많지 않다면 무료로 서비스 받을 수 있어서 모바일 게임에서 정말 많이 선택되는 도구 중 하나입니다.
그러면 오늘은 Firebase에서 Database를 간단하게 만들어보겠습니다.
우선, Firebase 홈페이지에 들어가겠습니다.
프로젝트 추가를 클릭해줍니다.
프로젝트 이름을 정해줍니다.
2단계 다음 - 3단계 Default Server를 택하고 다음
프로젝트가 추가되었습니다.
프로젝트에 들어가 왼쪽편에 개발 - Database로 들어갑니다.
Database 중 Realtime Database를 만들어줍니다.
데이터베이스 만들기 버튼을 클릭하면 "잠금 모드로 시작"과 "테스트 모드로 시작"이 나옵니다.
잠금 모드로 시작 : 제 3자가 보지도, 쓰지도 못하게 비공개 모드
테스트 모드로 시작 : 제 3자가 볼수도, 쓸수도 있는 공개 모드
저는 연습용이기 때문에 테스트 모드로 시작하겠습니다.
이렇게 저의 Database가 만들어졌습니다. Database의 고유한 ID값인 URL도 확인할 수 있습니다.
이제 내용을 추가해보겠습니다.
+ 버튼을 눌러서 내용을 추가할 수 있습니다.
저는 플레이어들의 이름, 점수, 시간을 입력했습니다.
참고로 timestamp는 1970년 1월 1일부터 현재까지 얼마나 경과했는지를 초단위로 보여줍니다.
(참고)
그리고, JSON이라는 파일형식이 있습니다. 이 파일형식은 데이터를 주고받을 때 가장 많이 사용하는 확장자입니다.
여기서도 JSON을 사용합니다.
JSON의 구조는 사전형태입니다. 딕셔너리와 유사하다고 생각하면 됩니다.
예로,
사과는 apple, 바나나는 banana, 당근은 carrot
=> JSON 형태로 표현하면
{
"사과" : "apple",
"바나나" : "banana",
"당근" : "carrot"
}
이러한 Key : Value로 표기되는 형식입니다.
한 번 저의 데이터베이스 URL에 rank.json을 붙혀서 입력해볼까요?
다음과 같이 json의 형태로 방금 입력한 데이터들을 볼 수 있습니다.
그럼 이번엔 rank/0/name.json을 붙혀서 입력해보겠습니다.
rank 속 0 속 name에 접근할 수 있습니다. 이렇게 매우 간단하게 데이터에 접근가능합니다.
그런데, 저희는 이것이 올바른 JSON 형태인지 모릅니다. 지금은 데이터가 적어서 괜찮지만 데이터가 많아질수록 헷갈릴 수 있습니다. 올바른 JSON 형태인지 검증할 필요가 있습니다. JSON 검증 사이트
rank.json의 배열을 복사 후 "Validate JSON" 버튼을 클릭하면
다음과 같이 배열이 보기 좋게 나열되고, 아래쪽 Results란에 valid JSON이라고 검증에 성공합니다.
그런데 왜 수많은 형식이 존재하는데 JSON을 많이 사용할까요?
만약 데이터베이스에 접근해서 데이터를 추출해야한다고 가정해봅시다. 이 때 데이터는 상수가 될 수도 배열이 될 수도 있습니다. 여러 형태로 존재하는거죠. 그렇다면 어떤 형태로 서버와 클라이언트가 주고받아야 할까요??
JSON 이외에도 데이터를 주고받는 다양한 형식들이 존재하는데 개발자는 다음과 같은 이유 등으로 인해 JSON을 많이 사용합니다.
- 웹/앱/게임을 가리지 않고 통신과정에서 사용가능합니다.
- 사람도, 컴퓨터도 이애하기 쉬운 형태입니다. (비교적)
- 데이터가 쉽게 변질되지 않습니다.
오늘은 Firebase Database를 만들어보기까지 했습니다. 다음엔 Unity와 연계하는 것을 공부하겠습니다.
'게임 > Unity' 카테고리의 다른 글
[Unity 이론] Firebase Database 데이터 사용 (6) | 2019.11.28 |
---|---|
[Unity 이론] Firebase Database 연동 (0) | 2019.11.28 |
[Unity 이론] Object Pooling (0) | 2019.11.26 |
[Unity 이론] Coroutine (1) | 2019.11.26 |
[Unity 3D] 충돌 체크 (0) | 2019.11.25 |
댓글