Где я могу разместить свою собственную папку уровней в игре XNA? - PullRequest
2 голосов
/ 22 апреля 2009

Я совершенно заблудился, где и как хранить файлы уровня * .txt в моей игре.

Что мне нужно в моей игре, так это наличие нескольких «предварительно запеченных» уровней, которые поставляются вместе с игрой, а также возможность для пользователей создавать свои СОБСТВЕННЫЕ уровни.

Итак, я создал новый каталог внутри Visual Studio в разделе «Контент», называемый уровнями, и поместил туда «level1.txt». Но единственный способ получить доступ к файлам уровня * .txt - использовать полный путь, и я не могу ВКЛЮЧИТЬ их в свое решение Visual Studio, потому что оно не создает:

 "C:\My Documents\blahblabh....\levels\level1.txt"
  • Вместо этого я помещаю эти предварительно запеченные карты в какой-то каталог рядом с исполняемым файлом? Как создать каталог в каталоге / bin перед компиляцией проекта?
  • Как запретить пользователям удалять "предварительно запеченные" уровни, поставляемые с игрой?
    (мне это больше не нужно)
  • Кроме того, где я могу хранить пользовательские уровни, созданные пользователем? Я предполагаю, что это должно быть сделано с StorageDevice. Но это связано с первым вопросом о том, как создать каталог после развертывания игры.

Любые указатели приветствуются! Спасибо

РЕДАКТИРОВАТЬ: Re: пользовательский контент-процессор. Это кажется намного сложнее, чем мне нужно. Но мне нужно развернуть свою игру и на xbox360, так будет ли работать устройство хранения?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2009

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

Вы можете просто добавить его в свой проект (не в Content) и указать «Копировать в выходной каталог - Копировать всегда» в свойствах. Создайте новую подпапку в своем проекте и поместите ее туда - это будет каталог, в который она скопирована.

Для запрещения пользователям удалять предварительно запеченные уровни, в Windows нельзя это допустить. Вы можете выполнить проверку в своем коде, которая приведет к сбою, если пользователь удалит некоторые ожидаемые файлы.

Для создания нового каталога вы можете использовать StorageDevice.OpenContainer (). Path, чтобы получить корневой путь и использовать Directory.CreateDirectory. Это будет работать на ПК и XBox.

0 голосов
/ 22 апреля 2009

Вы должны обязательно ставить "предварительно запеченные" уровни с исполняемым файлом. Я не использую VS, поэтому я не могу сказать вам, как это сделать.

На самом деле нет способа предотвратить удаление пользователями ваших уровней, но вы можете использовать хеш, чтобы убедиться, что они не были изменены (пользователи все равно могут обойти это, изменив ваш исполняемый файл, но это должно остановить большинство пользователей) .

Вы должны поместить пользовательские уровни в папку пользователя, например C:\Documents and Settings\User\MyGame\levels\level.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...