게임/Unity

[Unity 이론] Firebase Database

신인용 2019. 11. 28. 03:54
반응형

 오늘은 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일부터 현재까지 얼마나 경과했는지를 초단위로 보여줍니다.

(참고)

timestamp 사이트

 

 

 

 그리고, 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와 연계하는 것을 공부하겠습니다.

 

반응형