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

noh2ys님의 프로필 이미지
noh2ys

작성한 질문수

[Unity] 함께 만들어가는 방치형 게임 개발

파이어베이스로 가챠시스템을 연동시키는 것과 관련해 질문드립니다

해결된 질문

작성

·

62

0

안녕하세요! 강의를 시청하면서 가챠시스템을 배웠는데요
다름이 아니라 클라이언트에서만 가챠시스템을 운용한다면 위조나 보안에 취약하다는 생각이 들었습니다

따라서 앞서 배운 강의내용인 파이어베이스와 연동을 해서
가챠시스템을 연동하면 좋겠단 생각을 했는데

그럴 경우, 어떤 식으로 내용을 구성해야 효율적으로 관리할 수 있을지
의견을 여쭙고자 합니다.

답변 3

1

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요! 좋은 질문 감사드립니다.

 

말씀주신대로 가챠시스템을 클라이언트에서만 처리하면 데이터 조작으로 인하여 높은 확률로 좋은 캐릭터만을 가져갈 수 있는 악용을 예상 할 수 있습니다.

 

1.가챠 확률과 관련된 모든 데이터 풀을 차이어베이스에서 저장 및 로드를 통해서만 진행합니다.

 

2.파이어베이스 실시간 데이터베이스 또는 파이어스토어를 활용하여 가챠 결과를 저장합니다.

 

3.가챠 결과를 사용자 계정과 연결하여 기록을 유지하면, 사용자는 자신의 가챠 히스토리를 확인할 수 있고, 서버 측에서도 데이터 분석이나 문제 발생 시 참조할 수 있습니다.

 

4.데이터베이스에 가챠 사용량(예: 남은 재화, 사용한 횟수)을 실시간으로 업데이트하여 재화 관리도 자동화합니다.

 

파이어베이스 db를 활용한다면 타 유저가 확률을 조작 할 수 있는 위험도는 떨어지고, 더욱 정확한 히스토리를 얻을 수 있기에 좋은 방법입니다. 또한 히스토리를 파악하여 그럼에도 발생하는 악용유저를 손쉽게 파악하여 제재를 줄 수도 있을겁니다.

 

다만 요즘 클라이언트 특히 유니티에서는 프로가드 등과같은 자체적인 보안이 일부분 진행이되니 높은 볼륨의 게임이 아니라면 클라이언트만을 활용하셔도 큰 문제는 되지 않으실 것 같습니다.

 

구현 원리는 강의를 보셔서 아실태니 기존처럼 코드 혹은 스크립터블을 이용한 데이터를 파악하는 방식에서 파이어베이스에 직접 작성한 내용으로 데이터를 파악하는 방법을 사용하시면 될 것 같습니다.

파이어베이스는 코드를 통해서 읽고 쓰는 것 뿐만 아니라 직접 db안에 커스텀 값을 넣을 수도 있습니다 😃

noh2ys님의 프로필 이미지
noh2ys
질문자

좋은 답변 감사합니다.
추가 질문이 있는데요
가챠방식이
1. 리얼타임데이터베이스에 확률 저장하고 로드해서 사용하기
2. 파이어스토어에 확률 저장하고 로드해서 사용하기
3. 클라우드 스크립트에 확률+가챠 메소드 저장하고 로드해서 사용하기
이렇게 있을거 같은데 혹시 이 중에서 비용이 가장 적거나, 아니면 가장 추천하시는 방법을 알려주실 수 있을까요..?

Pinous님의 프로필 이미지
Pinous
지식공유자

  • 프로젝트의 규모와 요구 사항에 맞추어서 선택하시는게 가장 바람직하지만, 개인적인 추천은

    비용을 최소화하려면 리얼타임 데이터베이스를, 보안과 확장성을 중시한다면 클라우드 스크립트를 사용하는 것이 가장 추천됩니다.

    • 간단한 게임/소규모 프로젝트 : 리얼타임 데이터베이스가 적합합니다. 단순히 확률 테이블만 저장/로드하는 경우 성능과 비용 면에서 효율적입니다.

    • 데이터 구조가 복잡하거나 확장 가능성을 고려 :

      파이어스토어를 사용해 데이터를 관리하고 확률을 처리하세요. 장기적으로 확장성이 더 유리합니다.

    • 보안이 중요하거나 복잡한 로직 구현 :

      클라우드 스크립트를 사용하여 서버에서 확률 로직과 결과를 처리하고, 데이터베이스 호출을 줄이세요.

0

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요! 좋은 질문 감사드립니다.

 

말씀주신대로 가챠시스템을 클라이언트에서만 처리하면 데이터 조작으로 인하여 높은 확률로 좋은 캐릭터만을 가져갈 수 있는 악용을 예상 할 수 있습니다.

 

1.가챠 확률과 관련된 모든 데이터 풀을 차이어베이스에서 저장 및 로드를 통해서만 진행합니다.

 

2.파이어베이스 실시간 데이터베이스 또는 파이어스토어를 활용하여 가챠 결과를 저장합니다.

 

3.가챠 결과를 사용자 계정과 연결하여 기록을 유지하면, 사용자는 자신의 가챠 히스토리를 확인할 수 있고, 서버 측에서도 데이터 분석이나 문제 발생 시 참조할 수 있습니다.

 

4.데이터베이스에 가챠 사용량(예: 남은 재화, 사용한 횟수)을 실시간으로 업데이트하여 재화 관리도 자동화합니다.

 

파이어베이스 db를 활용한다면 타 유저가 확률을 조작 할 수 있는 위험도는 떨어지고, 더욱 정확한 히스토리를 얻을 수 있기에 좋은 방법입니다. 또한 히스토리를 파악하여 그럼에도 발생하는 악용유저를 손쉽게 파악하여 제재를 줄 수도 있을겁니다.

 

다만 요즘 클라이언트 특히 유니티에서는 프로가드 등과같은 자체적인 보안이 일부분 진행이되니 높은 볼륨의 게임이 아니라면 클라이언트만을 활용하셔도 큰 문제는 되지 않으실 것 같습니다.

 

구현 원리는 강의를 보셔서 아실태니 기존처럼 코드 혹은 스크립터블을 이용한 데이터를 파악하는 방식에서 파이어베이스에 직접 작성한 내용으로 데이터를 파악하는 방법을 사용하시면 될 것 같습니다.

파이어베이스는 코드를 통해서 읽고 쓰는 것 뿐만 아니라 직접 db안에 커스텀 값을 넣을 수도 있습니다 😃

0

안녕하세요, 인프런 AI 인턴입니다. noh2ys님.

가챠 시스템을 클라이언트에서만 운영할 경우 위조나 보안 문제에 취약할 수 있다는 점은 매우 중요하고 적절한 포인트입니다. 이를 해결하기 위해 서버와 연동하여 관리하는 것이 좋은 방안입니다. Firebase를 활용하여 가챠 시스템을 좀 더 안전하게 구현하는 방법에 대해 간단히 설명드리겠습니다.

가챠 시스템의 서버 연동 방안

  1. 가챠 로직의 서버 이전:

    • 가챠의 로직(아이템 확률 계산 및 결과 결정)을 클라이언트가 아닌 서버에서 수행하도록 합니다. 서버에서 가챠 결과를 처리한 후 클라이언트에 전달하게 되면, 클라이언트 단에서는 결과를 조작할 수 없습니다.
  2. 파이어베이스 데이터베이스 연동:

    • Firebase Real-time Database를 사용하여 유저의 가챠 히스토리와 결과를 저장합니다. 이렇게 하면 유저별로 어떤 아이템이 지급되었는지 추적할 수 있으며, 데이터 보존과 후속 조치가 용이합니다.
  3. 클라우드 함수 활용:

    • Firebase의 Cloud Functions을 이용하여, 가챠 요청을 수신하고 결과를 처리 후 Real-time Database에 기록하거나 클라이언트에게 전달합니다. 이 과정에서 비즈니스 로직을 클라우드 함수에 작성하면 부하를 서버 측에서 관리할 수 있습니다.

유사한 질문 및 참고 자료

  1. 서버와 데이터베이스 연동 방법에 관한 질문

    • 서버와의 연동을 통해 클라이언트의 데이터를 안전하게 관리하는 방법이 설명되어 있습니다. 다양한 전략에 대한 참고가 될 수 있습니다.
  2. 파이어베이스를 사용한 게임 데이터 관리

    • Firebase를 활용하여 게임 데이터를 효율적으로 관리하는 방법에 대한 질의응답입니다. 데이터 흐름과 보안 강화를 위한 힌트를 얻을 수 있습니다.

서버와 클라이언트 간의 연동을 강화하여 가챠 시스템의 보안을 강화하고, 적절한 데이터 관리 기법을 통해 효율성을 높이는 것이 핵심입니다. 이러한 방식들이 강의 중 배우신 내용들을 보강하는 데 도움이 되실 것이라 생각됩니다.

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

noh2ys님의 프로필 이미지
noh2ys

작성한 질문수

질문하기