Как сохранить данные карты в игре на основе тайлов

1

У меня есть немного вопрос новичков относительно хранения картографических данных в java-игре. Я делаю 2d игру на основе плитки, где каждая плитка имеет id (1, 2, 3, 4 и так далее...). В настоящее время я храню данные игры в файле.txt, где каждый номер разделяется вкладкой. Оттуда я прочитал его через сканеры.nextInt.

Этот метод работает отлично, но он, похоже, вызывает у меня проблему:

  • Так как файл уровня является обычным файлом.txt, он легко редактируется кем угодно. Это означает, что пользователь может просто изменить несколько номеров в файле с помощью любого текстового редактора и тем самым легко обмануть.

Как этого избежать? Должен ли я хранить данные карты по-разному или использовать какую-либо форму шифрования?

  • 0
    Дамп объекта в файл, заархивированный с паролем.
Теги:
2d
data-storage

2 ответа

0
Лучший ответ

Одним из решений для этого было бы хранение данных в базе данных, таких как дерби. Как только игра будет экспортирована в качестве файла jar, случайный игрок никогда не увидит файл, и, если они их поймают, вероятно, не будет знать, что с ним делать.

Вот хороший учебник о том, как настроить и подключиться к простой базе данных derby.

http://www.vogella.com/tutorials/ApacheDerby/article.html

удачи.

  • 0
    Спасибо. Я посмотрю на это!
0

Java имеет интерфейс Serializable, который можно использовать для сохранения java-объектов.

Документы API можно найти здесь: http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

Это не делает невозможным для людей обманывать и менять карты только сложнее.

Если вы действительно беспокоитесь об этом, вы можете использовать некоторую форму шифрования или добавить контрольную сумму для дальнейшего предотвращения несанкционированного доступа.

  • 0
    Спасибо! Но я слышал, что сериализация может вызвать проблемы при обновлении / изменении чего-либо внутри программы. Я более внимательно на это посмотрю и посмотрим, может ли это быть полезным в этой игре!
  • 0
    Это очень верно. Однако, если вы хотите смягчить проблемы, используйте перечисление для сохранения через сериализатор, а не сами объекты. Таким образом, когда вы меняете код, вы настраиваете только отображение перечислений. В основном у вас есть Map <Location <>, TileEnum>, которую вы сохраняете и используете случай переключения или другую конструкцию, чтобы связать TileEnum с плитками, которые вы хотите использовать в игре. Обратите внимание, что это не сработает, если вы пытаетесь сохранить игровое состояние и плитки имеют состояние, в котором они могут находиться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню