XML vs YAML vs JSON pour un RPG 2D

Je ne sais pas s’il faut utiliser XML, YAML ou JSON pour un RPG 2D C ++.

Voici mes pensées:

Quel est le meilleur choix? J’ai de l’expérience avec JSON en JavaScript, mais pas en C ++. Existe-t-il de bonnes références pour l’parsing de JSON en C ++ s’il s’agit de la route à suivre?

modifier

Honnêtement, si un fichier texte semble être la solution la plus simple et la plus efficace pour quelque chose comme ceci (surtout si je peux simplement l’écrire en binary), alors je suis tout ouïe.

Modifier 2

N’hésitez pas à fournir d’autres suggestions.

Je voudrais utiliser la chose la plus simple qui répond à vos exigences.

Si vous n’avez pas besoin de stockage hiérarchique, les fichiers tabulaires plats sont beaucoup plus faciles à gérer qu’autre chose. Tout ce que vous avez à faire est de lire les lignes du disque et de les diviser en tabs.

Si vous envisagez davantage de stockage de type paire de clés / valeurs (par opposition à des listes d’éléments), les fichiers INI peuvent être raisonnables. Ce format offre beaucoup de flexibilité, bien que le raisonnement à ce sujet puisse être moins accessible lorsque vous l’extorquez.

Si vous avez besoin de hiérarchie, il est possible que JSON soit plus simple. Il existe des bibliothèques JSON dans un grand nombre de langues et vous semblez déjà familier.

https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser

sqlite peut être une autre option. Il y a des dragons en SQL, mais avec un bon wrapper C ++ autour de sqlite, cela peut être gérable. Le principal avantage serait ACID, à mon avis.

La spécification YAML a l’air un peu longue, alors je suppose qu’elle a plus d’éviers de cuisine. En parcourant simplement la documentation libyaml, l’API ressemble un peu aux interfaces SAX que j’avais utilisées par le passé. Je n’en ai aucune connaissance a posteriori, mais je serais réticent à commencer à l’utiliser sans raison valable.

XML est une merde à gérer, n’accepte pas cette possibilité.

Quel que soit votre choix, écrivez le moins de code possible pour le gérer. Vous voulez vraiment écrire les classes que votre moteur utilisera en premier. Alors inquiétez-vous de les sérialiser. Si vous laissez votre sérialisation influencer la conception de votre classe, vous le regretterez probablement. 🙂