[TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
+7
Weslley
Cezar2016
Duarte
Dom3000
dipode
DuViDoSo
marcos4503
11 participantes
Página 1 de 1
[TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Bom. Marcos estava em mais uma de suas andanças pela internet, ele procurava conhecer mais da classe System.IO do unity.. Ele queria aprender a manipular arquivos na memoria do dispositivo.. Acidentalmente (ele derrubou o elemento X) ele encontrou um link nos fóruns em inglês da Unity, que ensinava como fazer um Save persistente de jogo, o sisteminha salva os dados do jogo no formato DAT, na memoria do dispositivo, com criptografia, para evitar de usuarios mais leigos editarem o arquivo e adicionar umas moedinhas a mais..
Bom! Achei isso fantastico, e hoje to resolvendo trazer pra vocês esse sisteminha.
Prós
- Possui criptografia
- Funciona em Android, PC, IOs etc..
- Salva tudo num arquivo externo, com a estrutura de um arquivo DAT, mais você pode alterar o formato pra dar aquela enganada, para que ninguem manipule o arquivo, assim possibilitando para que o jogador faça backup do seu progresso!
- É 10000000000X mais prático do que o PlayerPrefs
- Pode salvar variaveis String, Bool, Int, Float, Double etc.. (Isso mesmo, Booleanas!!)
Contras
- Não conheço bem esse sistema (Vi várias pessoas falando bem dele no fórum em ingles da Unity, ele parece ser bem útil, pratico e seguro)
- A criptografia talvez possa ser quebrada por usuarios mais avançados. Talvez algum usuario mais avançado possa usar um programa para editar o arquivo do jogo, mais fiz várias pesquisas por isso e não encontrei nada. Fora que esse tal usuario teria que dedicar muito tempo pra descobrir que se trata de um arquivo DAT.
- O jogador pode perder todo seu progresso em caso de corrupção do arquivo, ou até mesmo em caso do jogo ser encerrado durante o salvamento (se seu jogo é mais complexo, você pode criar um sisteminha de backup e restauração pro arquivo de save.)
Nível do tutorial: Intermediário
Bom. Dito isso tudo, vamos pra diversão..
(Eu empacotei tudo em um asset que você pode baixar e usar para estudar. Só possui 1 script, e uma cena com alguns botões pra você manipular e testar o esqueminha, o script esta totalmente comentado.)
Download:
http://www.mediafire.com/file/bmck7dk601wh4gk/exemploSaveGame.unitypackage
Para importar para seu projeto, é só ir na Aba "Assets" > "Import Package" > "Custom Package" e selecionar o local onde esta o arquivo do asset, que voce acabou de baixar.
Observação rápida: Em caso de PC, o arquivo é salvo na pasta "AppData", no Android, o arquivo é salvo na pasta "Data", no mesmo diretorio da "Obb".
Tem uma dúvida? Comente aqui e eu vou tentar te responder!!
PS: Tentei editar o arquivo de algumas formas, alterando os valores das variaveis e tal. Sempre que editei o arquivo o Unity dava erro. Resumindo, sempre que eu tento editar o arquivo, o arquivo é corrompido.
Bom! Achei isso fantastico, e hoje to resolvendo trazer pra vocês esse sisteminha.
Prós
- Possui criptografia
- Funciona em Android, PC, IOs etc..
- Salva tudo num arquivo externo, com a estrutura de um arquivo DAT, mais você pode alterar o formato pra dar aquela enganada, para que ninguem manipule o arquivo, assim possibilitando para que o jogador faça backup do seu progresso!
- É 10000000000X mais prático do que o PlayerPrefs
- Pode salvar variaveis String, Bool, Int, Float, Double etc.. (Isso mesmo, Booleanas!!)
Contras
- Não conheço bem esse sistema (Vi várias pessoas falando bem dele no fórum em ingles da Unity, ele parece ser bem útil, pratico e seguro)
- A criptografia talvez possa ser quebrada por usuarios mais avançados. Talvez algum usuario mais avançado possa usar um programa para editar o arquivo do jogo, mais fiz várias pesquisas por isso e não encontrei nada. Fora que esse tal usuario teria que dedicar muito tempo pra descobrir que se trata de um arquivo DAT.
- O jogador pode perder todo seu progresso em caso de corrupção do arquivo, ou até mesmo em caso do jogo ser encerrado durante o salvamento (se seu jogo é mais complexo, você pode criar um sisteminha de backup e restauração pro arquivo de save.)
Nível do tutorial: Intermediário
Bom. Dito isso tudo, vamos pra diversão..
(Eu empacotei tudo em um asset que você pode baixar e usar para estudar. Só possui 1 script, e uma cena com alguns botões pra você manipular e testar o esqueminha, o script esta totalmente comentado.)
Download:
http://www.mediafire.com/file/bmck7dk601wh4gk/exemploSaveGame.unitypackage
Para importar para seu projeto, é só ir na Aba "Assets" > "Import Package" > "Custom Package" e selecionar o local onde esta o arquivo do asset, que voce acabou de baixar.
Observação rápida: Em caso de PC, o arquivo é salvo na pasta "AppData", no Android, o arquivo é salvo na pasta "Data", no mesmo diretorio da "Obb".
Tem uma dúvida? Comente aqui e eu vou tentar te responder!!
PS: Tentei editar o arquivo de algumas formas, alterando os valores das variaveis e tal. Sempre que editei o arquivo o Unity dava erro. Resumindo, sempre que eu tento editar o arquivo, o arquivo é corrompido.
Última edição por marcos4503 em Qui Jun 15, 2017 10:29 pm, editado 1 vez(es)
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Maravilhoso, lindo... Cara eu te amo!! e nois vlw. isso me ajudar pacas.
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Opa!! Achei isso super interessante e útil e resolvi compartilhar com vocês! Sucesso!!
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
sabe que criptografia utiliza?
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Então, tipo, não sei se é beeem uma criptografia, eu utlizei este termo, porque eu dei uma pesquisada e o Unity monta o arquivo com uma estrutura do tipo DAT, que é um arquivo usado por programas para salvar dados. Mais é aí que ta.. Cada programa (no caso a Unity) salva o DAT da sua propria forma ou seja, com uma estrutura propria, o que faz o arquivo ter uma certa criptografia. Por isso não sei bem qual é a criptografia do Unity, só sei que é DAT. Posso estar errado, mais isso foi o que eu aprendi pesquisando e tals
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Entendi, e aqui:marcos4503 escreveu:Então, tipo, não sei se é beeem uma criptografia, eu utlizei este termo, porque eu dei uma pesquisada e o Unity monta o arquivo com uma estrutura do tipo DAT, que é um arquivo usado por programas para salvar dados. Mais é aí que ta.. Cada programa (no caso a Unity) salva o DAT da sua propria forma ou seja, com uma estrutura propria, o que faz o arquivo ter uma certa criptografia. Por isso não sei bem qual é a criptografia do Unity, só sei que é DAT. Posso estar errado, mais isso foi o que eu aprendi pesquisando e tals
- Código:
DiretorioDoArquivo = Application.persistentDataPath + "/" + NomeDoArquivo + "." + FormatoDoArquivo;
Porque a linha acima está no update?
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
O ideal é que ela vá no Start, mais no meu projeto eu só coloquei ela no update em caso de um de voces mudar algum detalhe como nome ou formato, o diretorio na UI se atualizar! Só isso mesmo!
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
marcos4503 escreveu:O ideal é que ela vá no Start, mais no meu projeto eu só coloquei ela no update em caso de um de voces mudar algum detalhe como nome ou formato, o diretorio na UI se atualizar! Só isso mesmo!
De boa, vou dar uma estudada nisso aqui.
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Tranquilo! Se tiver mais alguma duvida, é só perguntar, eu acho que não expliquei direito no script.. Sou pessimo para explicar ;-;
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
marcos4503 escreveu:Tranquilo! Se tiver mais alguma duvida, é só perguntar, eu acho que não expliquei direito no script.. Sou pessimo para explicar ;-;
Valeu, eu estava utilizando um sistema próprio, já tinha lido sobre isso, e visto esse aqui uns tempo atrás(é o video explicando como faz o script, é a mesma logica do seu, muda nada não, vou deixar aqui para quem quiser ver):
https://unity3d.com/pt/learn/tutorials/topics/scripting/persistence-saving-and-loading-data
mas ainda não estava na hora de criar o sistema de salve geral, ai nem liguei em usar o próprio, só para salvar onde estava sendo necessário, mas daqui uns dias vou ter que criar, vou ver se desse modo vai mais rápido kkkkk
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
marcos4503 escreveu:Belezura!
Mudei aqui para esse jeito, bem mais rápido que o meu criar string com variáveis, salvar em linha no arquivo, depois carregar dando um split nas linhas etc kkkkkkk agora vai rapidim, queria saber o que o método "Serialize" faz.
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Bom, pelo que eu aprendi pesquisando e lendo as documentações e tal, é que basicamente o serialization é um comando que o Unity usa pra meio que compactar dados num arquivo que ele possa editar, salvar e ler mais tarde. E por ai vai.. Aqui ta o link se quiser dar uma aprofundada:
https://docs.unity3d.com/Manual/script-Serialization.html
https://docs.unity3d.com/Manual/script-Serialization.html
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
cara vlw mesmo por compartilhar isso
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
De nada man! Sempre que acho algo daora assim eu tento trazer pra galera aqui!!
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Ola amigo, eu estou utilizando esse método para salvar meu game esta funcionando perfeitamente na Unity no Android ele não esta salvando.
Duarte- Programador
- PONTOS : 3353
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Voce fez algum tipo de alteração no script?
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Muito bom o script amigo, mas tenho uma duvida. Podemos criar uma class dentro de outro ? e por que foi feito essa manobra.
- Código:
[Serializable] //Nessa parte nós meio que formatamos o nosso arquivo, criando uma classse para isso. Aqui criamos as variaveis que serão adicionadas ao arquivo, e vale notar que você pode repetir nome de variaveis, desde que uma delas esteja fora dessa classe.
class DadosDoJogo
{
public int Int;
public float Float;
public string String;
public bool Bool;
}
Cezar2016- Avançado
- PONTOS : 3104
REPUTAÇÃO : 28
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Olha, nunca testei amigo, mais acredito que sim. Algo como:
- Código:
[Serializable]
public class DadosDoJogo{
public bool Teste;
public class NovaClasse{
public bool Teste;
}
}
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Cezar2016 escreveu:Muito bom o script amigo, mas tenho uma duvida. Podemos criar uma class dentro de outro ? e por que foi feito essa manobra.
- Código:
[Serializable] //Nessa parte nós meio que formatamos o nosso arquivo, criando uma classse para isso. Aqui criamos as variaveis que serão adicionadas ao arquivo, e vale notar que você pode repetir nome de variaveis, desde que uma delas esteja fora dessa classe.
class DadosDoJogo
{
public int Int;
public float Float;
public string String;
public bool Bool;
}
cara não da, ja tentei ,tem que colocar so na classe e separar por comentarios
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
marcos4503 escreveu:Olha, nunca testei amigo, mais acredito que sim. Algo como:
- Código:
[Serializable]
public class DadosDoJogo{
public bool Teste;
public class NovaClasse{
public bool Teste;
}
}
O que estou querendo dizer é, por que a class " DadosDoJogo " esta dentro da class " ScriptDeSave " por que não esta fora da class, tem alguma diferencia isso ? Seria algo novo para mim.
Cezar2016- Avançado
- PONTOS : 3104
REPUTAÇÃO : 28
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Isso se chama Nested Types ou tipos aninhados! que também pode ser acessada por outras classes de acordo com seu modificador de acesso.
Última edição por Weslley em Qua Fev 28, 2018 1:01 pm, editado 1 vez(es)
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
hunnn valeu agora compreendo.Weslley escreveu:Isso se chama Nested Types ou tipos aninhados! que também pode ser acessada por outras variáveis de acordo com seu modificador de acesso.
Cezar2016- Avançado
- PONTOS : 3104
REPUTAÇÃO : 28
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
marcos4503 escreveu:Bom. Marcos estava em mais uma de suas andanças pela internet, ele procurava conhecer mais da classe System.IO do unity.. Ele queria aprender a manipular arquivos na memoria do dispositivo.. Acidentalmente(ele derrubou o elemento X)ele encontrou um link nos fóruns em inglês da Unity, que ensinava como fazer um Save persistente de jogo, o sisteminha salva os dados do jogo no formato DAT, na memoria do dispositivo, com criptografia, para evitar de usuarios mais leigos editarem o arquivo e adicionar umas moedinhas a mais..
Bom! Achei isso fantastico, e hoje to resolvendo trazer pra vocês esse sisteminha.
Prós
- Possui criptografia
- Funciona em Android, PC, IOs etc..
- Salva tudo num arquivo externo, com a estrutura de um arquivo DAT, mais você pode alterar o formato pra dar aquela enganada, para que ninguem manipule o arquivo, assim possibilitando para que o jogador faça backup do seu progresso!
- É 10000000000X mais prático do que o PlayerPrefs
- Pode salvar variaveis String, Bool, Int, Float, Double etc.. (Isso mesmo, Booleanas!!)
Contras
- Não conheço bem esse sistema (Vi várias pessoas falando bem dele no fórum em ingles da Unity, ele parece ser bem útil, pratico e seguro)
- A criptografia talvez possa ser quebrada por usuarios mais avançados. Talvez algum usuario mais avançado possa usar um programa para editar o arquivo do jogo, mais fiz várias pesquisas por isso e não encontrei nada. Fora que esse tal usuario teria que dedicar muito tempo pra descobrir que se trata de um arquivo DAT.
- O jogador pode perder todo seu progresso em caso de corrupção do arquivo, ou até mesmo em caso do jogo ser encerrado durante o salvamento (se seu jogo é mais complexo, você pode criar um sisteminha de backup e restauração pro arquivo de save.)
Nível do tutorial: Intermediário
Bom. Dito isso tudo, vamos pra diversão..
(Eu empacotei tudo em um asset que você pode baixar e usar para estudar. Só possui 1 script, e uma cena com alguns botões pra você manipular e testar o esqueminha, o script esta totalmente comentado.)
Download:
http://www.mediafire.com/file/bmck7dk601wh4gk/exemploSaveGame.unitypackage
Para importar para seu projeto, é só ir na Aba "Assets" > "Import Package" > "Custom Package" e selecionar o local onde esta o arquivo do asset, que voce acabou de baixar.
Observação rápida: Em caso de PC, o arquivo é salvo na pasta "AppData", no Android, o arquivo é salvo na pasta "Data", no mesmo diretorio da "Obb".
Tem uma dúvida? Comente aqui e eu vou tentar te responder!!
PS: Tentei editar o arquivo de algumas formas, alterando os valores das variaveis e tal. Sempre que editei o arquivo o Unity dava erro. Resumindo, sempre que eu tento editar o arquivo, o arquivo é corrompido.
Compatível com qual versão da uUnity ?
Samuelsk- Membro
- PONTOS : 2652
REPUTAÇÃO : 17
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Estou na Unity 2018 e funciona normalmente. (Eu acho que não funciona na 4.6)
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Samuelsk escreveu:
Compatível com qual versão da uUnity ?
Provavelmente é compatível com todas as versões da Unity..
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Tentei abri a "Cena de Exemplo" na Unity 5.3 e dizia que o Serialize não era compatível
achei bem interessante sua explicação sobre ele, me interessei..mas n consegui abrir o exemplo e fico um pouco sem entender ele...
achei bem interessante sua explicação sobre ele, me interessei..mas n consegui abrir o exemplo e fico um pouco sem entender ele...
Samuelsk- Membro
- PONTOS : 2652
REPUTAÇÃO : 17
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Eae Samuel, também tive um problema, porém, tem algumas coisas que não podem Serializar mesmo. Você baixou a cena padrão sem modificar nada?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Souris escreveu:Eae Samuel, também tive um problema, porém, tem algumas coisas que não podem Serializar mesmo. Você baixou a cena padrão sem modificar nada?
Sim, abri um New Project na 5.3 importei o Assets..e tentei abrir o exemplo e bang.. nada ._.
Samuelsk- Membro
- PONTOS : 2652
REPUTAÇÃO : 17
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Pessoal, salvar o arquivo como TXT não seria a mesma coisa? Pois é possível uma leitura através do Notepad.
(É porque eu estou lendo dados através de um website, que retorna apenas texto UTF-
Então, daria problemas?
(É porque eu estou lendo dados através de um website, que retorna apenas texto UTF-
Então, daria problemas?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Vou Fazer Uns Testes Pra Ver Se é Bom.
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [TUTORIAL] Método simples de salvar progresso do jogo em um arquivo separado!
Galera boa noite! Sou iniciante e estou desenvolvendo um projeto que já conta com sistema de fases e pontuação, baixei esse script e estou tentando adaptá-lo. Para tal, estou tentando usar o comando Get.Component<>(). para tentar trazer os valores das variáveis dos meus scprits... Alguém poderia me dar um apoio? Eu vou ter quer criar novas variáveis mesmo? Sendo que eu já as tenho num jogo que já roda pontuação?
Estou fazendo o seguinte:
No editor não da erro, mas no inspector da NullReferenceException: Object reference not set to an instance of an object.
Antecipadamente agradeço!
Valeu!
Estou fazendo o seguinte:
- Código:
void Update () {
VariavelDecimal = GetComponent<Tempo4>().segundos;
VariavelInteira = GetComponent<Tempo4>().resultado2;
No editor não da erro, mas no inspector da NullReferenceException: Object reference not set to an instance of an object.
Antecipadamente agradeço!
Valeu!
danielPedra90- Membro
- PONTOS : 2081
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] SALVAR JOGO AUTOMATICAMENTE
» [TUTORIAL] Salvar SCORE de um jogo e substituir caso faça mais.
» Ajuda, Engine Godot (Salvar progresso)
» Sistema de nuvem para salvar progresso de jogador
» Salvar "List<bool>" Em Arquivo .dat
» [TUTORIAL] Salvar SCORE de um jogo e substituir caso faça mais.
» Ajuda, Engine Godot (Salvar progresso)
» Sistema de nuvem para salvar progresso de jogador
» Salvar "List<bool>" Em Arquivo .dat
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos