Ocultar dados do jogo do jogador?

13

Estou trabalhando no meu primeiro jogo (C ++) e quero usar um design baseado em componentes. Eu li muito sobre isso ultimamente e ontem decidi que queria armazenar dados de objetos em arquivos JSON externos, para permitir mais flexibilidade e facilidade de acesso.

Então me dei conta de que deixar esses arquivos na árvore de diretórios do jogo permitiria aos jogadores modificar o que quisessem com muita facilidade.

Não estou preocupado em mostrar o código aos desenvolvedores, porque o jogo será de código aberto, mas receio que um jogador inexperiente possa interromper o jogo ou pelo menos arruinar a diversão.

Estou esquecendo de algo? Qual é a política sobre como ocultar dados de jogos (em jogos de código aberto)? É normal deixar tudo claramente acessível a alguém?

Caso contrário, qual é uma boa maneira de ocultar os dados?

Marco Giancotti
fonte
3
Geralmente, a capacidade de modificar o jogo é um recurso, não um bug, especialmente para jogos para um jogador.
Jprete
8
Eu realmente não me incomodaria. Seu tempo é melhor gasto em fazer um bom jogo. =)
Jari Komppa
1
Estou inclinado a pensar que (quase) qualquer pessoa que baixa um jogo de código aberto sabe o suficiente para realmente gostar de mexer nos dados do jogo e interromper o jogo no processo. Se for um bom jogo, você verá um wiki explicando seu formato JSON rapidamente!
Nevermind,

Respostas:

33

Se os jogadores mexerem e estragarem a diversão, eu diria que é problema deles. Para os funileiros, metade da diversão é ver o que quebra.

É como se preocupar com o fato de os jogadores usarem um código de truque no modo deus e se preocupar com o fato de o jogador não ser desafiado.

Eu não faria nada além de colocar esses arquivos de configuração em um arquivo zip (o que você provavelmente deve fazer de qualquer maneira para carregar os tempos) e garantir que seu código possa manipular dados corrompidos normalmente.

Tetrad
fonte
20

Receio que um jogador inexperiente possa interromper o jogo ou pelo menos arruinar a diversão.

Se eles estão se intrometendo nos dados do jogo, é isso que eles consideram "divertido". Você não precisa protegê-los disso. Afinal, os dados do componente da entidade não são um spoiler. Talvez se você tivesse dados de diálogos ou missões, seria um problema, mas provavelmente não. A maioria dos jogadores nem sabe onde procurar esse tipo de coisa, não importa pesquisar ou editar deliberadamente.

Meu conselho é compactar e renomear a extensão do arquivo. Isso manterá a aparência casual, mas não será difícil para você trabalhar. Você pode usar algo como PhysicsFS para trabalhar com os arquivos.

Kylotan
fonte
5
Sim. Lembro-me de jogar Colonization no Amiga. Os parâmetros das unidades foram armazenados em um arquivo de texto simples, com txtextensão padrão . Depois de jogar bastante, decidi que tornaria o jogo mais difícil ajustando esses parâmetros. Mais tarde, compartilhei essas configurações com os amigos. Foi divertido ...
liori
3

Você pode armazenar os dados criptografados usando um esquema de criptografia simétrica (AES), mas isso não faz sentido: o software é de código aberto , para que todos possam ler a chave e, portanto, descriptografar os dados. Isso apenas "impedia" o jogador casual de trapacear.

E seria meio inútil, mesmo em projetos de código fechado, já que é muito fácil encontrar a chave do binário do jogo.

Então, você tem duas possibilidades:

  1. apenas deixe o material não criptografado (mas pelo menos colete o hash md5 de cada arquivo, para que você possa verificá-lo em tempo de execução contra qualquer dano na distribuição do seu jogo);
  2. vá de código fechado , embaralhe os dados (com um algoritmo secreto de várias etapas reversível, como string reverse + byte swapping + xor com uma string constante, etc ...) e depois criptografe tudo com o AES. Será mais difícil para qualquer um recuperar os dados. Muito mais difícil.
gd1
fonte
1
Mesmo o seu método de código fechado não é tão difícil. As mesmas pessoas que rotineiramente quebram os esquemas usados ​​para proteção contra cópia provavelmente também podem quebrar isso. A principal diferença é que eles não se incomodam.
jprete
@ jprete: com certeza. É apenas uma questão de tempo, mas o tempo é crítico para as pessoas, tornando difícil e não lucrativo, às vezes, é apenas o suficiente.
Gd1
3

Eu deixaria. Existe uma enorme comunidade de mods e jogadores gostam de jogos de modificação / modificação. Se eles quebram algo, é sobre eles. Eles sempre poderiam reinstalar.

Também facilita o trabalho de outros desenvolvedores.

user697111
fonte