¿Ocultar datos del juego del jugador?

13

Estoy trabajando en mi primer juego (C ++), y quiero usar un diseño basado en componentes. He leído mucho sobre esto últimamente y ayer decidí que quería almacenar datos de objetos en archivos JSON externos, para permitir una mayor flexibilidad y facilidad de acceso.

Entonces caí en la cuenta de que dejar estos archivos en el árbol de directorios del juego permitiría a los jugadores modificar lo que quieran con mucha facilidad.

No me preocupa mostrar el código a los desarrolladores, porque el juego será de código abierto, pero me temo que un jugador sin experiencia podría romper el juego o al menos arruinar la diversión.

¿Me estoy perdiendo de algo? ¿Cuál es la política sobre ocultar datos del juego (en juegos de código abierto)? ¿Es normal dejar todo claramente accesible para cualquiera?

Si no, ¿cuál es una buena manera de ocultar los datos?

Marco Giancotti
fuente
3
Por lo general, la capacidad de modificar el juego es una característica, no un error, especialmente para juegos de un solo jugador.
jprete
8
No me molestaría, de verdad. Es mejor dedicar tu tiempo a hacer un buen juego. =)
Jari Komppa
1
Me inclino a pensar que (casi) cualquiera que descargue un juego de código abierto sabe lo suficiente como para disfrutar de jugar con los datos del juego y romper el juego en el proceso. Si es un buen juego, ¡verás un wiki explicando tu formato JSON emergente en poco tiempo!
importa

Respuestas:

33

Si los jugadores juegan y arruinan la diversión, diría que ese es su problema. Para los entusiastas, la mitad de la diversión es ver lo que se rompe.

Es como preocuparse de que los jugadores usen un código de trucos en modo dios y preocuparse de que el jugador no sea desafiado.

No haría nada más que poner esos archivos de configuración en un archivo zip (que probablemente debería hacer de todos modos para los tiempos de carga) y asegurarme de que su código pueda manejar datos corruptos con gracia.

Tétrada
fuente
20

Me temo que un jugador inexperto podría romper el juego o al menos arruinar la diversión.

Si se están entrometiendo con los datos del juego, eso es lo que consideran "divertido". No necesita protegerlos de esto. Los datos del componente de la entidad no son un spoiler, después de todo. Tal vez si tuviera datos de diálogo o búsqueda allí, sería un problema, pero probablemente no. La mayoría de los jugadores ni siquiera saben dónde buscar este tipo de cosas, no importa buscarlo deliberadamente o editarlo.

Mi consejo es comprimirlo y cambiar el nombre de la extensión del archivo. Esto mantendrá fuera del aspecto casual, pero no será difícil para ti trabajar con él. Puede usar algo como PhysicsFS para trabajar con los archivos.

Kylotan
fuente
55
Sí. Recuerdo jugar Colonization en Amiga. Los parámetros de las unidades se almacenaron en un archivo de texto simple con txtextensión estándar . Después de jugar bastante, decidí que haría el juego más difícil ajustando esos parámetros. Más tarde compartí esa configuración con amigos. Fue divertido ...
liori
3

Puede almacenar los datos cifrados , utilizando un esquema de cifrado simétrico (AES), pero esto no tiene sentido: el software es de código abierto , por lo que todos pueden leer la clave y, por lo tanto, descifrar los datos. Esto simplemente "detendría" al jugador casual de hacer trampa.

Y sería algo inútil incluso en proyectos de código cerrado, ya que es bastante fácil encontrar la clave en el juego binario.

Entonces, tienes dos posibilidades:

  1. simplemente deje las cosas sin cifrar (pero al menos recolecte el hash md5 de cada archivo, para que pueda verificarlo en tiempo de ejecución contra cualquier daño en la distribución de su juego);
  2. vaya a código cerrado , codifique los datos (con un algoritmo secreto de varios pasos reversible como cadena inversa + intercambio de bytes + xor con una cadena constante, etc.) y luego cripte todo con AES. Será más difícil para cualquiera recuperar los datos. Mucho más difícil.
gd1
fuente
1
Incluso su método de código cerrado no es tan difícil. Las mismas personas que habitualmente rompen los esquemas utilizados para la protección contra copia probablemente puedan romper eso también. La principal diferencia es que no molestarán.
jprete
@jprete: seguro. Es solo cuestión de tiempo, pero el tiempo es crítico para las personas, por lo que hacer que sea difícil y no rentable, a veces, es suficiente.
gd1
3

Lo dejaría Hay una gran comunidad de mods y a los jugadores les gusta cambiar / modificar juegos. Si rompen algo, está en ellos. Siempre podrían reinstalar.

También facilita el trabajo de otros desarrolladores.

usuario697111
fuente