2 votes

Stocker les données dans des fichiers sources C# vs. XML etc... ?

Il s'agit d'une question en C#.

Je me demandais juste si quelqu'un avait essayé de stocker ses données (comme les fichiers de configuration par exemple) dans le fichier *.cs, au lieu de XML ?

Je déteste vraiment le XML. L'idée d'analyser une structure de type html chaque fois que l'on a besoin de données semble stupide.

Existe-t-il des alternatives légères (comme YAML) à XML ? Dans mon cas, j'ai besoin de stocker des données pour un niveau (de jeu), où il y a beaucoup d'objets différents, de types de terrain, etc... dans un fichier plat, pour pouvoir les lire plus tard.

Je suppose que je pourrais sérialiser mon Niveau mais je veux que le fichier de données soit éditable dans n'importe quel éditeur de texte, par exemple.

Toute aide serait la bienvenue, merci !

PS : En ce qui concerne les fichiers .cs, j'ai oublié de mentionner que je veux pouvoir créer (et sauvegarder) de nouveaux niveaux dans le jeu, via un éditeur.

3voto

Robert Gould Points 29406

Je travaille dans l'industrie du jeu depuis des années, et nous utilisons le XML parce qu'il est le mieux supporté par les outils. Les fichiers Yaml ou Ini sont utilisés pour les configurations, mais les données du jeu sont stockées en XML. Bien sûr, nous avons normalement des outils qui convertissent le XML en code binaire, pour l'expédition des jeux, mais pendant le développement et le développement d'outils de jeu personnalisés, le XML est tout simplement génial.

Parfois, XML est le marteau le plus adapté à vos besoins. N'ayez pas de préjugés sur les technologies simplement parce qu'elles ne sont pas les meilleures dans certains domaines (par exemple, Ajax(transport) contre Data Definition).

2voto

eglasius Points 26221

Pourquoi pas (xml) ?

Je ne vois pas de raison de ne pas utiliser le XML, surtout si l'on veut stocker différents types d'informations dans le fichier.

Cela dit, pour l'approche des fichiers .cs, je suggère de structurer le code de votre application de manière à charger le code qui initialise les données dont vous avez besoin, au lieu de chercher les données dans les fichiers. Cela vous donne un modèle clair (compiler + charger), puisque vous chargez maintenant une classe d'initialisation, au lieu de chercher des données dans un fichier. Ajoutez tout ce que vous pouvez pour rendre la configuration aussi simple que possible.

2voto

DeadHead Points 1532

Puisque vous ne voulez pas utiliser le XML, je vous recommande de créer votre propre format de fichier qui soit modifiable en texte.

PROPERTIES
name = First Level
number = 1
END

MONSTERS
Barbarian
pos = (3, 6)
health = 2

Dragon
pos = (10, 10)
health = 8
END

et ainsi de suite pour tout ce dont vous avez besoin.

Créer soi-même un analyseur syntaxique est très simple. Il suffit de lire le fichier ligne par ligne. A la première ligne, vous voyez que le titre est PROPERTIES donc vous lisez les propriétés jusqu'à la ligne END. Même chose pour tous les autres en-têtes que vous auriez. Il y a de nombreuses façons de varier ceci, donc vous pouvez faire la syntaxe que vous voulez.

1voto

Tom Anderson Points 7228

Ini ?

[section]
key=value

Après avoir lu votre question un peu plus et y avoir réfléchi, le XML est très standard dans l'industrie du jeu car il est structuré, prend en charge les enfants, et peut être modifié manuellement par n'importe quel éditeur de texte.

Quelques jeux qui utilisent des fichiers XML me viennent à l'esprit :

World of Warcraft
Crysis
Command & Conquer 3

1voto

Robert Rossney Points 43767

L'idée d'analyser une structure de type html chaque fois que vous avez besoin de données semble stupide.

Si vous n'utilisez pas XML ou YAML, vous allez devoir écrire votre propre analyseur et validateur, et vous êtes maintenant entré dans le domaine où règne la stupidité. XML est très ennuyeux, mais se passer de l'écosystème d'outils pour le manipuler est encore pire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X