강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

크리스팍님의 프로필 이미지
크리스팍

작성한 질문수

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

우편 기능에 대해 궁금합니다.

해결된 질문

작성

·

30

0

안녕하세요. 강의 잘 듣고 있습니다.

 

모바일 게임에서 흔히 볼 수 있는 우편을 통해 재화를 보상을 주는 우편 시스템에 대해 궁금합니다.

강의 내에는 우편 관련 기능이 없긴 하지만 혹시 강사님께서는 우편 기능을 어떻게 구현해서 사용하시는지 알려주시면 큰 도움이 될 것 같습니다.

국내에서는 뒤끝과 같은 외부 서비스에 도움을 받아 할수있지만 혹시 개인이 다른 방법으로도 사용할 수 있을지 궁금해서 여쭤봅니다~!!

감사합니다~

답변 2

1

안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.

저의 경우 Firestore DB에 UserMailData라는 컬렉션을 만들고, 그 데이터를 불러와서 UI에 표시해주는 방식으로 우편함 시스템을 구현했었습니다. 특정 플레이어에게 보상을 우편으로 전달해야 한다면, Firestore DB 콘솔에서 해당 플레이어의 UserMailData에 보상에 대한 데이터를 추가해 줍니다. 그럼 플레이어는 그 우편을 열어 '받기'를 클릭하면 보상이 지급됩니다.

물론 이럴 경우 수강생분이 각 플레이어를 식별할 수 있는 계정 정보(ex. 이메일)를 추가적으로 Firestore DB에 수집해 두셔야 합니다. 그리고 그런 개인정보를 저장할 때는 개인정보 처리방침 등에 잊지말고 잘 명시해야 하고, 구글/애플 개발자 콘솔의 유저 개인정보 수집 설정 페이지도 각 항목들이 올바르게 선택되어 있는지 잘 확인해 주셔야 합니다.

이해가 되지 않는 부분이 있으시다면 편하게 다시 질문해 주시길 바랍니다.

크리스팍님의 프로필 이미지
크리스팍
질문자

답변 감사드립니다~!!

말씀주신 부분을 통해 궁금점이 생겼습니다.

1. 플레이어를 식별할 수 있는 계정 정보 예시 중 이메일을 말씀주셨는데 이메일로 사용한다면 이메일 주소를 따로 받아야 하는 추가적인 조치가 필요한게 아닌지 궁금합니다.
(이메일이 아닌 다른 고유 키값이 있을것 같아서 여쭤보았습니다.)

2. Firestore DB 를 통해 만약 전체 유저에게 7일동안 유효한 우편을 보낸다고 한다면 어디서 어떻게 설정을 해놓을 되는지 간략한 이미지라도 참고해서 알려주신다면 정말 감사드리겠습니다.

아니면 참고할 수 있는 url 을 알려만 주셔도 큰 도움이 될 것 같습니다.

Firebase를 통해 운영 로그 분석하는 방법도 강사님 덕분에 실제 적용해 볼 수 있었습니다.
다시한번 감사드립니다~

안녕하세요. 각 질문에 대해 답변 드립니다.

  1. 이메일은 m_FirebaseUser 객체에서 받아올 수 있습니다. 아래 코드처럼 .Email하면 이메일값을 알 수 있습니다. Firestore DB에서 UserId(제가 한 방법)대신 이메일값으로 각 유저의 데이터를 저장하는 것도 방법일 수 있습니다. 제가 유저 식별을 위해 이메일을 저장하라고 말씀드린 것은, 예를 들어 수강생분께서 이벤트를 실시하고 당첨된 유저분들께 보상을 지급하려면 계정 주소로 밖에 식별할 수 없기 때문입니다(유저분들은 자신의 UserId 값을 아마 알지 못할 것입니다). 하지만 전체 유저에게 지급하는 방식을 생각하고 계시다면 굳이 계정 주소(이메일)를 수집할 필요는 없겠습니다.

m_FirebaseUser = m_Auth.CurrentUser;
m_FirebaseUser.Email
  1. 아래 링크를 참고하시기 바랍니다. 일단 파이어베이스 콘솔에서는 쿼리문을 사용한 데이터 단체 추가/수정/삭제는 불가능합니다. 하지만 유니티에서 할 수 있는 기능은 제공합니다. 유니티 에디터에 Firestore DB 업데이트 스크립트를 만드셔서 보상 지급 시 스크립트를 실행해 DB 데이터를 일괄 변경해주셔야 하겠습니다. 즉, 모든 유저의 UserMailData에 새로운 보상 지급 데이터를 추가해주는 스크립트를 만드셔야 하겠습니다. DB SQL에 대한 배경지식이 없으시다면 처음에 조금 어렵게 느껴지실 것 같네요... Test용 DB를 설정해 놓고 테스트를 충분히 해 보시기 바랍니다.

     

    https://firebase.google.com/docs/firestore/manage-data/transactions?hl=ko#unity

크리스팍님의 프로필 이미지
크리스팍
질문자

상세한 답변 감사드립니다~

말씀주신대로 하나씩 따라가보도록 하겠습니다~ 감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. 크리스팍님.

모바일 게임에서 우편 시스템은 플레이어에게 아이템이나 보상을 편리하게 전달할 수 있는 핵심 기능 중 하나입니다. 강의 내에서는 직접적으로 우편 시스템을 다루고 있지 않을 수 있지만, 일반적인 구현 방식을 간단히 설명드리겠습니다.

  1. 기본적인 우편 시스템 구조:

    • 데이터베이스: 우편 시스템은 보통 서버 측 데이터베이스를 통해 구현됩니다. 각 플레이어가 받을 우편 데이터를 저장하고 관리하는 테이블이 필요합니다.
    • 서버 API: 클라이언트(게임)와 서버 간의 통신을 위해 RESTful API를 설계합니다. 예를 들어, “받기”, “삭제”, “전체 받기” 등의 기능이 포함됩니다.
    • 클라이언트 UI: 플레이어가 우편함을 확인하고 우편을 받을 수 있는 인터페이스를 구현합니다.
  2. 외부 서비스:

    • 국내에서는 ‘뒤끝’과 같은 서비스를 활용하면, 우편 시스템을 손쉽게 개발할 수 있습니다. 이러한 서비스는 인증, 데이터 저장/관리, 서버 구축 등 다양한 기능을 제공합니다.
    • 물론, 개인 서버를 운영하여 우편 시스템을 구축하는 것도 가능합니다. 이를 위해서는 백엔드 기술 스택(Node.js, Django 등)과 서버 호스팅(AWS, Heroku 등)을 알아두셔야 합니다.
  3. 직접 구현할 경우:

    • JSON 파일이나 SQLite 사용: 서버 없이 로컬 환경에서 간단한 우편 시스템을 구현하고자 한다면, JSON 파일이나 SQLite를 활용해 클라이언트 측에서 데이터를 직접 관리할 수 있습니다.
    • 보안 고려: 개인 서버나 로컬 저장소에 중요한 보상 데이터를 저장할 경우, 보안에 대한 충분한 고려가 필요합니다.

이와 관련하여 강의 내용에서 연관성을 갖는 내용이 있다면, 강의 내 SingletonBehaviour 클래스의 where 제약 관련해서 질문 드립니다와 같은 시스템 설계 및 패턴에 대한 링크를 참고해보시면 도움이 되실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

크리스팍님의 프로필 이미지
크리스팍

작성한 질문수

질문하기