Unity - Loja. Como os Jogadores terão acesso aos ítens comprados na Loja da PlayStore?

Boa noite, pessoal. Seguinte,

Já fiz a Loja no meu Jogo. Inicialmente o Jogo vai ser Offline. Suponha que um Jogador comprou ítens na minha loja. Se ele desinstalar o jogo no celular e instalar novamente, ele perde tudo, ou tem algo que a loja da playstore tem que ele pode recuperar os itens comprados?

Vc tem q gerir isso com um banco de dados e salvar que aquele usuário X tem direito a Y coisas

1 curtida

Obg pela resposta, Abner!
No caso, a Loja da PlayStore não tem esse suporte neh?
É fácil fazer essa parada do banco de dados? Ainda não mexi com ele online…

O processo de restore dando VIPs pro cliente é seu mesmo.

Vi que quando há uma reinstalação a Google Play manda um evento.

Unity - Manual: Restoring Transactions.

Mas é apenas o evento, o processo de devolver os acessos do usuário e etc é 100% seu

Olha, depende do seu nível de xp… pra mim é tranquilo, vc pode escolher o MongoDB no começo, pode ter algum tutorial.

Segue um tutorial:

Obg pela resposta, Abner!

Olha, num outro forum eu fiz a mesm pergunta, e uma pessoa me respondeu essas em negrito

EU: Já fiz a Loja no meu Jogo. Inicialmente o Jogo vai ser Offline. Suponha que um Jogador comprou ítens na minha loja. Se ele desinstalar o jogo no celular e instalar novamente, ele perde tudo, ou tem algo que a loja da playstore tem que ele pode recuperar os itens comprados?

PESSOA: Todos os produtos comprados vão ser salvos na conta do usuário, assim que o jogo for instalado novamente ele terá acesso aos produtos dele!

EU: Certo, mas como isso acontece?
Tenho que implementar isso em algum Scripts?

PESSOA: Quando eu utilizei o in app purchase usei o sdk do google para android, ao inicializar o sdk ele recupera as compras automaticamente depois basta fazer a verificações dos itens para aplicar suas funcionalidades se for preciso, para iOS vc tinha que fazer um código especifico muito simples que eu não me lembro agora, creio que isso não tenha mudado!

EU: Meu jogo é para android.
"ao inicializar o sdk ele recupera as compras automaticamente " é isso que eu quero saber como é feito. Tipo, uma pessoa pode ter quantas contas ela quiser, no mesmo aparelho. Como seiria ela distinção, de para uma conta, são akeles produtos comprados, para outra conta já são os outros comprados…? Entende?
Tô achando que tem que fazer uma checagem das contas pra saber quais produtos é de uma conta, e quais produtos são da outra, e outra, e assim vai… É isso msm? Se sim, como seria isso?

Ele ainda não leu, pq acapei de fazer a pergunta. Se a PlaySrote tiver esse suporte, já não precisarei de tratar com o banco de dados. Eu só não sei como é essa implementação. Vc sabe Abner?

Olha, até onde sei da playstore, os dados não são salvos com eles, dados de usuários e etc… a ação de recuperar compra e mandar alguns dados ok, mas usá-los como banco de dados acho meio distante.

MAS eu não tenho experiência com jogos e unity, então acho que teria que ser a resposta do outro fórum ou testando na prática mesmo

Abner, me dá uma opinião pfv

O que vc acha de um jogo que não faz o banco de dados e salva tudo apenas no celular do jogador? Isso seria agir de má fé? Pergunto por que a turma que eu vi fazendo vídeos sobre Anúncios e Loja não falaram nada de banco de dados, pelo contrário, falaram nos PlayerPrefs que é onde as informações são salvas, mas apenas no aparelho de celular dele. O que vc acha?

@TerraSkilll, dá uma opinião também pvf.

Se outra pessoa ver esse tópico, dá uma opinião também. Obg a todos!

Isso esta fora da minha experiência, tanto que li mas não respondi esse tópico. Enfim… :man_shrugging:

Quando você diz “comprar na loja”, se refere à transações reais (dinheiro, crédito, pix, etc), ou o jogador ganha uma moeda que só existe dentro do jogo, e só serve dentro do jogo?

Se a moeda só existe no jogo e não é crucial gravar esse progresso, eu não me preocuparia muito em salvar para o caso de o usuário desinstalar o app.

De qualquer forma, nos dois casos, usando os serviços do google, eu entendo que você pode salvar os dados que quiser: progresso (savegames), conquistas (achievements) e compras no app. As transações de compras podem ser verificadas diretamente, e os dados ficam associados à conta do google do jogador. Acredito que não há custo pro desenvolvedor, mas leia atentamente as informações à respeito.

Outras referências:

Já vou te avisando que, conforme for avançando nos seus projetos, a quantidade de conteúdo em português vai diminuir bastante. Já se acostume a procurar esse tipo de coisa em inglês.

Abraço.

As duas coisas. Veja, tenho 2 lojas. Uma o jogador compra pacotes de moedas de ouro em dinheiro com transações reais. A outra loja são de itens que são comprados com essas moedas de ouro que o jogador comprou na primeira loja.

O crucial pra mim é o fato do jogador ter comprado com transações reais e, se o jogo for desinstalado, ele perder. Eu acho que ele não vai gostar nada disso, por isso minha preocupação.

Então, de acordo com o que vc falou, isso me faz querer mudar a lógica das lojas. Eu iria fazer 1 só. E nela teria os poderes e as moedas de ouro tudo junto. Caso o jogador reinstale o jogo, ele poderia recuperar lá na playstore. Só que isso levanta uma questão: enquanto o jogador for usando esses itens que ele comprou, vai sendo debitado da playstore? Ou seja, teria como programar isso? Se for, blz. Não me importo de mudar a lógica das minhas lojas, contanto que o jogador tenha como recupear seus itens, caso ele precise reinstalar o jogo. Mas se não for, tem 2 soluções:
1 - Banco de Dados Online;
2 - Salvar só no Celular e avisar ao jogador que se ele reinstalar o jogo, perderá suas compras.
Entre esses dois, o menos dificutoso seria a 2ª opção. Isso ainda se enquadra no que vc disse, de não se importar proo não ser crucial? Ou é crucial?

Uma curiosidade, tô presumindo que vc já tenha criado Apps. Vc nunca fez uma loja dentro dele?

Com certeza.

Não. Nenhum app que eu criei usa o conceito de lojas ou compras no aplicativo ou similares, por isso não conheço os detalhes de implementação.

Sim, perder o que comprou vai ser uma péssima experiência para o jogador.

Você leu os links? Lá explica como gravar dados (savegame) usando a API do Google, e esses dados ficam associados à conta do jogador nos servidores do Google. Se o app é desinstalado, eles não são perdidos se estiverem lá, pelo que entendo. Mas faça testes e veja se é o caso.

Você pode usar uma base local, tanto pra facilitar a implementação quanto para complementar o que está sendo salvo no Google Play.

Acho que você está misturando demais os conceitos de 1) compras no app e 2) manter os dados do que foi comprado. Você precisa definir o fluxo do que quer obter, para implementar isso de forma coerente. Seu app ter 1, 2 ou 410 moedas não faz muita diferença pra transação real em dinheiro, apenas pro seu jogo. Separe bem esses conceitos e implemente-os de acordo.

Por exemplo, entendo que seu fluxo é algo como:

  • há 2 moedas:
    • tokens (que podem ser adquiridos na Google Play ou dentro do app, com dinheiro real);
    • fichas (que só existem dentro do seu jogo, e o jogador precisa trocar por tokens);
  • para os tokens, você cria uma opção de compra no Google play (leia os manuais e tutoriais). Pela documentação, entendo que:
    • pode ser tanto uma transação única (R$ 1,00 = YY tokens);
    • transação recorrente: automaticamente adiciona XX tokens baseado em um evento no jogo, e envia a cobrança para a carteira associada ao jogador;
  • em ambos os casos, entendo a operação precisa ser iniciada pelo jogador (ou autorizada, no caso de ser recorrente);
  • no seu app, meu entendimento é que você pode consultar todas as transações que um usuário efetuou, relacionadas ao seu app. Isso permite a você saber quantos tokens ele comprou “pra sempre”;
  • toda a parte acima só envolvem as transações no Google Play. Deixando bem claro: você pode salvar essas operações localmente ou em outro lugar, e provavelmente vai facilitar sua vida, mas entendo que não precisa salvá-las, pois pode consultá-las a qualquer momento;
  • agora para as fichas, se elas só existem dentro do seu jogo (o jogador não pode comprá-las fora do app, e elas não existem como uma opção de compra da forma como os tokens existem), você não precisa de uma segunda opção de compra, apenas a opção, dentro do seu app, de converter tokens em fichas (ex: 1 token = 100 fichas);
  • operações com fichas (ex: desbloquear um item) precisam ser controladas, então é nesse ponto que você provavelmente vai precisar gravar as operações em algum lugar:
    • você pode ter uma base local no dispositivo. Normalmente, se o app for desinstalado, essa base se perde . A própria Unity fornece opções simples pra isso;
    • você pode ter uma base remota (controlada por você) em que grava esses dados. Você vai precisar criar uma API para consulta e atualização, e associar cada jogador às suas fichas;
    • você pode usar o Google Play Services como “base” pra guardar essas informações. Pelos links, dá pra fazer isso pela Unity, tendo em mente as limitações (acho que 3MB de limite de espaço, que parece pouco, mas você vai estar gravando strings e inteiros de poucos KB, então não deve ser problema);
    • você pode usar uma combinação dessas opções, o que te dá alguma flexibilidade (ex: se a rede cair, você pode ter as operações gravadas localmente, e atualizar remoto quando a rede voltar);

Note que você não precisa gravar somente o que for relacionado às fichas. Pode salvar o progresso completo (tokens, fichas, itens, fases desbloqueadas, etc) de uma vez só para cada jogador, salvando e carregando conforme precisar, nos três modelos acima.

Abraço.

Obg pela resposta!
É isso mesmo que vou fazer. Vou ler os links que vc mandou com mais calma. Vlw!

Se o jogo é offline e os itens comprados estão armazenados localmente no dispositivo do jogador, ao desinstalar o jogo, todos os dados locais, incluindo os itens comprados, serão perdidos. Não há uma funcionalidade padrão na Play Store para recuperar itens comprados em jogos offline, já que a responsabilidade de armazenar esses dados e oferecer algum tipo de recuperação recai sobre o desenvolvedor do jogo. Para permitir que os jogadores recuperem seus itens após a reinstalação do jogo, você precisará implementar um sistema de armazenamento em nuvem ou algum tipo de sistema de login e sincronização de dados entre dispositivos. Isso permitirá que os jogadores acessem seus itens comprados novamente após reinstalar o jogo em um novo dispositivo ou após desinstalar e reinstalar o jogo no mesmo dispositivo.

1 curtida

Olá! No caso de um jogo offline, se um jogador desinstalar e reinstalar o jogo, normalmente ele perderá os itens comprados, pois esses dados são armazenados localmente no dispositivo do jogador. Para permitir que os jogadores restaurem suas compras, você precisaria implementar um sistema de salvamento na nuvem, onde as compras dos jogadores são associadas a uma conta ou ID do jogador e podem ser restauradas quando o jogo é reinstalado. Você pode saber mais sobre esse assunto com os usuários do roleta brasileira chat. Isso geralmente envolve a integração com serviços de nuvem como o Google Play Games para Android ou o iCloud para iOS.

1 curtida

Obg pela resposta!
Por isso quero fazer ele online antes de lançar, mas vai demorar mais um pouco, pois ainda estou finalizando sua lógica e eliminando bugs, pra poder começar com a monetização. Se eu fizer um banco de dados, guardo tudo nele, como dados do Jogador (nome, email, senha, idade… ítens comprados…)
Não sei qual é melhor, o que vc acha? banco de dados online ou sistema de login e sincronização entre dispositivos?
Não sei se no sistema de login eu possa guardar todos os atributos e pertences do jogador como eu sei que num banco de dados online da pra fazer. Me corrija pfv se eu estiver errada!

Obg pela resposta!

O “serviços de nuvem como o Google Play Games” é a mesma coisa que um banco de dados online? Vc poderia me dar uma luz sobre ele? Tô achando que são a mesma coisa, se for qual seria o melhor de se programar?