2009-04-21 7 views
2

Je suis assez perdu avec où et comment stocker les fichiers de niveau * .txt dans mon jeu. Ce que je veux dans mon jeu, c'est la disponibilité de quelques niveaux "précuits" qui sont installés avec le jeu mais aussi la possibilité pour les utilisateurs de créer leurs propres niveaux.Où dois-je placer mon dossier Levels personnalisé dans le jeu XNA?

Donc ce que j'ai fait est de créer un nouveau répertoire dans Visual Studio dans les niveaux "Content", et d'y mettre un "level1.txt". Mais la seule façon dont je peux accéder au niveau des fichiers * .txt est en utilisant le chemin complet, et je ne peux pas les inclure dans ma solution studio visuel car il ne construit pas:

"C:\My Documents\blahblabh....\levels\level1.txt" 
  • Est-ce que je mets ces « précuit "maps à la place dans un répertoire près de l'exécutable? Comment créer un répertoire dans le répertoire/bin Avant de compiler le projet?
  • Comment puis-je dissalow les utilisateurs de supprimer les niveaux « précuites » préinstallées avec le jeu?
    (Je n'en ai plus besoin)
  • Où puis-je stocker les niveaux créés par l'utilisateur? Je suppose que cela devrait être fait avec StorageDevice. Mais cela rejoint la première question sur la façon de créer un répertoire après le déploiement du jeu.

Tous les pointeurs seraient les bienvenus! Merci

EDIT: Re: processeur de contenu personnalisé. Cela semble beaucoup plus compliqué que nécessaire. Mais je dois également déployer mon jeu sur la xbox360. Le périphérique de stockage fonctionnera-t-il?

Répondre

3

Vous pouvez écrire un processeur de contenu personnalisé pour gérer vos fichiers de niveau, mais il est probablement excessif. Cela a l'avantage que vous pouvez "compiler" les niveaux à un format qui serait plus difficile à modifier pour un utilisateur.

Vous pouvez simplement l'ajouter à votre projet (pas dans le contenu) et spécifier "Copier dans le répertoire de sortie - Copier toujours" dans les propriétés. Créez un nouveau sous-dossier dans votre projet et placez-le là - ce sera le répertoire dans lequel il est copié.

Pour les utilisateurs niveaux précuites supprimer interdisant, aucun moyen sur Windows pour permettre cela. Vous pourriez faire une vérification dans votre code qui ferait échouer si un utilisateur devait supprimer certains fichiers attendus.

Pour créer un nouveau répertoire, vous pouvez utiliser le chemin StorageDevice.OpenContainer(). Pour obtenir le chemin d'accès racine et utiliser Directory.CreateDirectory. Cela va fonctionner sur PC et XBox.

+0

L'écriture d'un processeur de contenu personnalisé n'est pas si difficile et impose de bonnes pratiques et vous oblige à écrire une validation sensée tout en accélérant votre jeu au moment du chargement grâce à un format de lecture beaucoup plus simple. Il rend également beaucoup plus facile de porter sur X360 après le fait. En bref, il faut un peu plus d'efforts, potentiellement éviter de nombreux bugs, et c'est la façon acceptée de le faire.:) – jfclavette

+0

@jfclavette: C'est probablement exagéré pour cette tâche, mais ce serait certainement une bonne expérience d'apprentissage - XNA est très concentré sur le pipeline de contenu et il n'y a pas de meilleure façon de le comprendre. – Michael

+0

"Tant que les niveaux sont publiés sous" Contenu ", vous devriez pouvoir utiliser Game.Content.RootDirectory pour localiser les fichiers et les lire dans". Cela ne fonctionne pas. Parce que si j'inclue mon répertoire "levels" sous contenu, il ne sera pas copié pour une raison quelconque dans le répertoire/bin. Notez que je ne peux pas inclure mon "level1.txt" dans le dossier Content/levels dans Visual Studio car il ne sera pas compilé. – drozzy

0

Vous devriez certainement mettre les niveaux « précuites » avec l'exécutable. Je n'utilise pas VS, donc je ne peux pas vous dire comment faire ça. Il n'y a vraiment aucun moyen d'empêcher les utilisateurs de supprimer vos niveaux, mais vous pouvez utiliser un hachage pour vérifier qu'ils n'ont pas été modifiés (les utilisateurs peuvent toujours contourner cela en modifiant votre exécutable, mais cela devrait arrêter la plupart des utilisateurs).

Vous devez placer des niveaux personnalisés dans le dossier de l'utilisateur, par exemple C:\Documents and Settings\User\MyGame\levels\level.txt.

Questions connexes