GameDev Brasil
https://www.gamedev.com.br/forum/

Banco mysql para jogo offline
https://www.gamedev.com.br/forum/viewtopic.php?f=60&t=13067
Página 1 de 1

Autor:  onorax [ Ter Nov 24, 2015 9:19 pm ]
Título:  Banco mysql para jogo offline

Olá, estou desenvolvendo com alguns amigos, um jogo que inicialmente era pra ser apenas um projeto para a faculdade, mas como gostamos de desenvolver e achamos que tem futuro o projeto pretendemos dar continuidade.

Enfim, para o projeto utilizamos banco de dados mysql, porem para o banco funcionar, temos que instala-lo em nossa máquina e configurar ip, usuário, senha etc.... existe alguma forma de migrar esse banco para dentro do unity, , sem tem que fazer tudo denovo? Porque o jogo não faz sentido cobrar conexão com a internet.
Se não, qual solução vocês me sugerem?

Obrigado :!:

Autor:  renalol [ Qua Nov 25, 2015 12:24 am ]
Título:  Re: Banco mysql para jogo offline

Ao meu ver se o jogo não precisa de internet, seu projeto de jogo deve salvar dados simples como pontuação, posição, entre outros...

Como você utiliza a Unity, a própria biblioteca monobehaviour já conta com um banco de dados simples chamado PlayerPrefs (salvando dados float, int, string e bool).
Se é um projeto que não necessita de multiplayer em tempo real, PlayerPrefs é o ideal.


Como funciona o método?

Crie um script C# chamado 'Dados':

Código:
using UnityEngine;
using System.Collections;

public class Dados : MonoBehaviour {

   public static void salvarPontuacao(int melhorPontuacao){  //Aqui você cria o tipo de variavel que queira manipular.
      int melhorScore = melhorPontuacao;
      
      //Usando PlayerPrefs, adicionamos o valor em uma string...
      PlayerPrefs.SetInt("meuScore", melhorScore);
   }
   
   //Criamos um método para carregar a pontuação
   public static int[] carregarPontuacao(){
      //Carrega o valor salvo em um Array...
      int valorScore = PlayerPrefs.GetInt("meuScore");
      return new int[]{valorScore};
   }
}



Agora você tem um mini banco de dados que salva variáveis tipo INT, para salvar a variável é só utilizar este método:

Código:
Dados.salvarPontuacao(suaVariavel);



Você acaba de salvar seu dado int, agora é preciso carrega-lo no método Start:

Código:
    void Start(){
        int[] carregarPontos = Dados.carregarPontuacao();
      suaVariavel = carregarPontos[0];
    }



Outros banco de dados embarcado é o SQLite e o Db4o, porém necessita toda uma configuração (ainda mais na parte de mobile) e ao meu ponto de vista não compensa (depende do projeto).

SQLite: https://pt.wikipedia.org/wiki/SQLite
Db4o: https://pt.wikipedia.org/wiki/Db4o

É possível utilizar o banco de dados MySQL no Unity de boa, porém a necessidade da internet é meio que uma simbiose(lado a lado), para não ficar refazendo as configurações do PC, você pode utilizar o https://www.000webhost.com/ , é um domínio grátis tanto de site e dados (se não me engano uns 2gb de espaço), ótimo para criar protótipos para jogos com Cadastro/Registro.

Bom, é isto ai, espero ter ajudado, tudo de bom.

Autor:  onorax [ Qua Nov 25, 2015 1:41 pm ]
Título:  Re: Banco mysql para jogo offline

renalol escreveu:
Ao meu ver se o jogo não precisa de internet, seu projeto de jogo deve salvar dados simples como pontuação, posição, entre outros...

Como você utiliza a Unity, a própria biblioteca monobehaviour já conta com um banco de dados simples chamado PlayerPrefs (salvando dados float, int, string e bool).
Se é um projeto que não necessita de multiplayer em tempo real, PlayerPrefs é o ideal.


Como funciona o método?

Crie um script C# chamado 'Dados':

Código:
using UnityEngine;
using System.Collections;

public class Dados : MonoBehaviour {

   public static void salvarPontuacao(int melhorPontuacao){  //Aqui você cria o tipo de variavel que queira manipular.
      int melhorScore = melhorPontuacao;
      
      //Usando PlayerPrefs, adicionamos o valor em uma string...
      PlayerPrefs.SetInt("meuScore", melhorScore);
   }
   
   //Criamos um método para carregar a pontuação
   public static int[] carregarPontuacao(){
      //Carrega o valor salvo em um Array...
      int valorScore = PlayerPrefs.GetInt("meuScore");
      return new int[]{valorScore};
   }
}



Agora você tem um mini banco de dados que salva variáveis tipo INT, para salvar a variável é só utilizar este método:

Código:
Dados.salvarPontuacao(suaVariavel);



Você acaba de salvar seu dado int, agora é preciso carrega-lo no método Start:

Código:
    void Start(){
        int[] carregarPontos = Dados.carregarPontuacao();
      suaVariavel = carregarPontos[0];
    }



Outros banco de dados embarcado é o SQLite e o Db4o, porém necessita toda uma configuração (ainda mais na parte de mobile) e ao meu ponto de vista não compensa (depende do projeto).

SQLite: https://pt.wikipedia.org/wiki/SQLite
Db4o: https://pt.wikipedia.org/wiki/Db4o

É possível utilizar o banco de dados MySQL no Unity de boa, porém a necessidade da internet é meio que uma simbiose(lado a lado), para não ficar refazendo as configurações do PC, você pode utilizar o https://www.000webhost.com/ , é um domínio grátis tanto de site e dados (se não me engano uns 2gb de espaço), ótimo para criar protótipos para jogos com Cadastro/Registro.

Bom, é isto ai, espero ter ajudado, tudo de bom.


Entendi, então é mais fácil eu migrar o banco Mysql para PlayerPrefs do que configurar SQLite? E esse SQLite é local?

Autor:  renalol [ Qui Nov 26, 2015 12:26 am ]
Título:  Re: Banco mysql para jogo offline

Com certeza, se seu projeto não tem uma gota de network, a melhor utilidade é o PlayerPrefs.
Pra ser sincero nunca usei SQLite, dei uma mexida no Db4o e já descartei, pois fiz um projeto pra android e a configuração dele é meio chata. Desta forma já que a Unity fornece normalmente, é mais viável o PlayerPrefs, mas para jogos que exigem Network só MySQL (entre outros) pra dar conta.

Exemplo com algo de Db4o: https://diogosapessoa.wordpress.com/201 ... embarcado/
Espero ter ajudado, tudo de bom.

Página 1 de 1 Todos os horários são GMT - 3 horas
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/