프로그래밍/unity
유니티 구글 스프레드시트로 데이터 쉽게 관리하기(UGS)
유니티 구글시트 소개글 (UGS)
유니티에서 구글시트를 이용하여 게임 데이터를 관리하는데 용이한 유니티 구글시트 (UGS)를 소개합니다!
공식문서 에서 좀더 상세한 확인이 가능합니다. 😊
유니티 구글시트는 구글 스프레드 시트를 이용하여 게임 데이터의 데이터베이스를 디자인하거나, 게임의 Localization(현지화)를 매우 쉽고 효과적이게 할 수 있는 유용한 도구입니다. 아래 나열된 기능들을 사용하여 쉽게 게임 데이터를 구글시트로 관리할 수 있고, 테스트 시간도 크게 단축시킬 수 있으므로 게임 개발자 분들에게 큰 도움이 될것입니다.
기능
매우 편리한 Live Load/Save 가 가능합니다. 😉
디자인 타임에 사용하기위한 개발자를 위한 기능입니다. 유니티 구글시트는 구글시트로부터 데이터를 실시간으로 읽고 쓸 수 있습니다.. 네! 그렇습니다. 게임 벨런스를 수정하고 적용하는데에 있어 게임을 다시 빌드하거나 껏다 켜야할 필요가 없습니다. 아래는 유니티 구글시트가 만들어지기 이전에, 배너로드라는 게임을 번역할때 사용한 실시간 로드 예시입니다.
실제 유저에게 배포하는 프로덕션 환경에서는 API 호출제한 횟수가 있으므로 로컬에 캐싱한 데이터를 불러오는 Local Load 기능도 제공합니다. 영상의 40초 이후부분을 확인해주세요~! 😃
코드/데이터 제네레이터 지원 👍
코드 제네레이터 (코드 자동생성기)가 지원되므로 개발자는 귀찮은 테이블 클래스 코드를 작성하지 않아도 됩니다.
시트에 모든 타입을 사용할 수 있어요!! 😲
커스텀 타입을 추가할 수 있는 추상화를 제공합니다! 이 기능을 사용시 기본타입은 물론 모든 C#타입을 지원합니다. UGS의 최대 장점은 개발자가 직접 만든 커스텀 C#타입또한 Serialize/Deserialize 할 수 있는 옵션을 지원합니다. 영상을 확인해보세요! 😄
대부분의 Enum 지원
모든 Enum을 지원합니다 UGS 어트리뷰트를 enum에 붙이기만 됩니다! 동영상을 확인해보세요! 🙂
유니티 내에서 편리하게 사용가능한 구글 드라이브 GUI
윈도우의 폴더 탐색기처럼 구글드라이브를 탐색할 수 있는 정말 편리한 GUI를 지원합니다. 개발자는 유니티 작업환경을 벗어나지 않고 게임 개발에 집중할 수 있습니다. 굳이 귀찮게 구글시트를 위해서 브라우저를 켜놓지 않아도 됩니다.
유니티가 아닌 C#, WPF 프로젝트에서도 사용가능
C#환경에서 사용 가능합니다. 본인의 게임이 서버에서 게임을 시뮬레이션 하고 있다면, 서버에서 UGS를 이용하여 데이터싱크를 맞출수도 있겠네요 :)
다운로드 및 사용방법 (문서/영상)
다운로드 : 에셋스토어(미출시) 혹은 Itch.io 에서 구매 후 다운로드
공식 가이드 문서 : 클릭
동영상 튜토리얼 : 클릭
2021 7.23 이후로 유니티 구글시트(UGS)는 유료에셋으로 변경되었습니다 ㅜ.ㅜ 😂 무료로 제공해왔으나 최근 유지보수를 꾸준히 하고 계속 기능을 추가하기 위해서 유료에셋으로 변경하였습니다. 할 일이 상당히 많아지더라구요.. 포스팅을 확인해주세요
현재는 검수 및 번역으로 인해 에셋스토어에는 없지만 구매는 가능합니다. 미리 구매가능하여 사용하고 싶으신 분들은 Itch.IO 구매페이지 에서 구매 후 사용 가능합니다. (에셋스토어에 출시되면 유니티 에셋스토어에서도 무료로 받을 수 있게 마이그레이션 해드립니다😋)
Itch에서 구매하시면 실제 에셋스토어에 출시될때 가격보다 더 저렴하게 구매하실 수 있습니다. 에셋스토어 출시는 문의는 해놨지만, 검토 기간이 21일 이상 소요된다고 해서 Itch로 먼저 출시하게 되었습니다 Itch.IO 구매문서는 한국어 문서로만 제공합니다.
<iframe frameborder="0" src="https://itch.io/embed/808241?border_width=5&dark=true" width="560" height="175"><a href="https://shlifedev.itch.io/unitygooglesheets">Unity Google Sheets by CheeseAllergyHamster</a></iframe>
문의/도움/궁금한점
https://open.kakao.com/o/gK6yMNpd 오픈채팅방 만들었습니다. 혹은 shlifedev@gmail.com 이메일주세요 :)
FAQ
사이트의 하단 확인
버그 및 개선사항 등록
----------------------------------------
tistory : https://shlifedev.tistory.com/
contact me : shlifedev@gmail.com
github : http://github.com/shlifedev
#구글시티 유니티 연동 #유니티 게임데이터 #유니티 구글시트 #유니티 구글시트 연동 #유니티 데이터 관리 #유니티 번역관리 #유니티 엑셀 연동 #유니티 구글 스프레드시트 #유니티 구글시트 #유니티 데이터 테이블
'프로그래밍 > unity' 카테고리의 다른 글
UniTask 기본 사용법/생명주기 주의사항 (2) | 2021.12.05 |
---|---|
AssetBundle의 암호화/복호화 (0) | 2021.08.04 |
UGS는 유료 에셋으로 전환 될 예정입니다. (0) | 2021.07.22 |
유니티 구글 스프레드시트로 데이터 쉽게 관리하기(UGS) (24) | 2021.03.17 |
Tag
'프로그래밍/unity'의 다른글
- 이전글[C#] 버그를 줄일 수 있는 '읽기 전용 참조'
- 현재글유니티 구글 스프레드시트로 데이터 쉽게 관리하기(UGS)
- 다음글[c#] imgui.net 한글 출력 안되는 문제 해결
관련글
-
-
Cheese Allergy Hamster 2021.03.16 23:32 신고
열거형 생각은 안했네요. 그런데 커스텀타입으로 확장하면 가능한데 https://shlifedev.gitbook.io/unitygooglesheet/and/undefined 일일히 확장하기엔 Enum은 귀찮을테니 제가 따로 구현해서 조만간 업데이트 할게요!
-
-
-
궁금해요 2021.04.02 04:03
1. API횟수 제한은 유저DB가 아니더라도 게임데이터만 주고받아도 마찬가지 아닌가요?
답글
2. 여기서 유저DB말씀하실때 보안문제는 어떤의미의 보안인가요?
게임데이터도 보안문제가 있다면 노출수정조작이 되는거아닌가요?
유저DB로는 쓰면 안되는데 게임데이터DB는 왜 된다고 하시는건지 의문이 들어서요...-
Cheese Allergy Hamster 2021.04.06 20:36 신고
1번부터 답변드리자면 네 맞습니다. 하지만 실제 릴리즈 할때는 별로 문제 없습니다. 릴리즈 버전에서는 게임 데이터를 '캐싱' 해둔채로 배포하셔야 합니다. 실시간 읽고 쓰기는 '게임 개발단계' 에서만 사용하시는거라 전혀 문제가 없습니다. 하지만 유저 DB는 개발단계가 아니라 실제 릴리즈에서 쓰는거라 문제가 생깁니다.
-
Cheese Allergy Hamster 2021.04.06 20:38 신고
2번도 1번과 같은 답변입니다. 릴리즈 모드에서 실시간 읽기쓰기가 가능한채로 유저 DB로 사용하면 1번에서 말씀드린 문제가 있습니다.
UGS를 게임데이터 DB로 사용할 수 있는 이유는 '로컬 캐싱'이 지원되기 때문입니다.
문서를 보시면 아시겠지만
UnityGoogleSheet.Load<T>()함수는 로컬에 '캐싱'된 데이터를 불러오는 함수고
벨런스를 실시간 테스트 하시기위해
UnityGoogleSheet.LoadFromGoogle 함수를 사용하시는건 구글에서 실시간 읽기 쓰기로 가져오는 함수입니다.
즉 릴리즈 할때는 Load함수로 불러오면사용에 아무런 문제가 없습니다.
-
Cheese Allergy Hamster 2021.04.06 20:40 신고
첨언하자면 보통 게임데이터를 DB에서 가져올때는 중간 서버를 거칩니다.
클라이언트 -> 서버가 DB에요청 -> DB -> 서버가 DB에서 받은 데이터 -> 클라이언트 전송
단계를 거칩니다. 이렇게 해야 DB에 접근할 수 있고 권한을 서버만 가지기 때문에 클라이언트는 DB내용을 훔쳐보거나 읽거나 쓸 수 없습니다.
UGS를 DB로 사용하면 '서버'가 빠지기때문에 사실상 유저가 DB에 접근 가능하다는 뜻인데 보안이 취약해 집니다.
그래서 유저 DB로 절대 사용하지 말라는 뜻이고,
게임데이터는 보통 캐싱하고 사용하기에 문제가 없습니다. 테스트 할때는 어차피 개발자만 실시간 읽기 쓰기 사용하니까 문제가 없구요.
즉 UGS를 만든 목적은
'유저에게 실시간 밸런스패치'를 제공함이 아니라
'개발자가 실시간으로 밸런스를 조정' 하기 쉽게 하기위해 개발된 툴입니다~! -
Cheese Allergy Hamster 2021.04.06 20:43 신고
https://shlifedev.gitbook.io/unitygooglesheet/how-to-use/load-data
이게 로컬에 게임데이터를 캐싱하는 방법이고 릴리즈 하실때는 Load함수로만 불러오시면 됩니다.
https://shlifedev.gitbook.io/unitygooglesheet/rumtime-use/runtime
이건 런타임에 불러오는거고 이 함수는 플레이스토어/앱스토어 배포시에 절대 사용하면 안됩니다! 게임 밸런스 테스트목적 등으로만 사용하면 문제 없습니다.
-
-
여러워 2021.07.08 16:56
제가 개발자님 블러그를 대충 본건 아닌데.. 잘 몰라서 질문드립니다.
답글
구글 시트에서 데이터를 읽어오는 상황에서 그 데이터가 유니티에 캐싱(?)저장이 되는건가요?
유니티로 로컬 게임을 만들고 있는데 핸드폰에서 인터넷이 안되는 상황에서도 플레이 가능한 인디
게임을 만들고 있습니다.
구글 시트에 불러오는 데이터가 유니티 자체에 저장이 되는 상태가 아니고 단말기를 실행할때 마다
로드를 하는 경우면... 안되는거라 .. 개발자님이 제작하신 UGS는 어떤 방식으로 처리 되는지 궁금
합니다.-
Cheese Allergy Hamster 2021.07.10 04:30 신고
유튜브 가이드 영상에서 Generate 하는 부분에서 캐싱됩니다.
데이터가 변경된 사항이 있는경우 항상 Generate 버튼을 눌러 데이터를 최신화 시켜주시면 됩니다.
구글에서 실시간으로 읽어오는 기능은 UnityGoogleSheet.LoadFromGoogle 함수를 호출하면되고, Development 환경에서만 사용해야 합니다.
캐싱된 데이터를 읽어오는 기능은
UnityGoogleSheet.Load<T> 함수를 호출하면 되고, 개발환경/릴리즈 환경 상관없이 사용하셔도 됩니다.
단, 캐싱된 데이터를 읽어오는 경우에는 위에 말했듯이 Generate를 반드시 먼저 해야합니다!
-
Cheese Allergy Hamster 2021.07.10 04:34 신고
https://www.youtube.com/watch?v=OOJ5lmCGZDk&t=259s&ab_channel=HamsterCheeseAllergy
가이드 영상에
'코드 제네레이터' / ' 로컬에서 읽기 ' 부분을 참고해주세요!!
-
-
Cheese Allergy Hamster 2021.07.22 21:15 신고
2021.7.22 부로 UGS는 유료 에셋으로 변경되었으나, 순수 C# Console, WPF에서 사용가능한 오픈소스가 깃허브에 제공됩니다. https://github.com/shlifedev/GoogleSheet-Database
답글 -
-
궁금한 것이 있습니다. 2021.09.21 22:27
이 에셋 굉장히 관심이 가는데요, 그런데 구글 스프레드시트는 비용이 따로 없나요?
답글
만약에 이용자 수가 많아졌다는 가정하에... 완전 무료인가요?? -
스크립트 설정 오류 2021.10.28 18:38
빈 스크립트 하나 만들어서 연동시키려는데 오류가 생깁니다.
답글
링크, 패스워드, 클라우드 id는 영상을 따라했고 처음 연동시키는 스크립트만 빈 스크립트 만들어서 연동 시도했습니다.
버전은 1.0.7이었고 1.0.6b 써봐도 같은 오류가 생겼습니다.
Unexpected character encountered while parsing
value: <. Path ", line 0, position 0-
Cheese Allergy Hamster 2021.11.15 00:01 신고
안녕하세오. 오픈 채팅방에서 1:1채팅 주실 수 있을까요? 티스토리는 모바일 알림이 없어 제가 실시간 확인 할 수 없었습니다. 죄송합니다^^;
-
-
-
Cheese Allergy Hamster 2022.03.08 23:14 신고
네, Itch에서 항상 다운로드 가능하십니다. 만약, Itch 계정을 분실한경우 구매했을 당시 영수증 트랜잭션을 보내주시면 라이선스 재발급 해드립니다 :)
-