HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log inLog in  

Share | 
 

 SPARK 2 : description XML

View previous topic View next topic Go down 
AuthorMessage
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: SPARK 2 : description XML   Wed Jan 26, 2011 5:15 pm

J'ai implémenté la sauvegarde d'un système complet au format xml (j'ai pas encore fait le chargement mais c'est la prochaine chose que je fait)
J'utilise la lib tinyxml pour la création/parsing xml. J'ai fait un test d'export dans la démo SPKTest. Voilà à quoi ressemble le xml généré :

Code:

<?xml version="1.0" ?>
<!-- File automatically generated by SPARK on Wed Jan 26 21:50:38 2011 -->
<SPARK>
   <System name="Test System">
      <attrib id="groups">
         <Group name="Phantom Group">
            <attrib id="life time" value="5" />
            <attrib id="radius" value="0.06" />
            <attrib id="emitters">
               <SphericEmitter>
                  <attrib id="tank" value="-1" />
                  <attrib id="flow" value="2" />
                  <attrib id="force" value="1.2,2" />
                  <attrib id="zone">
                     <Point>
                        <attrib id="position" value="(0,-1,0)" />
                     </Point>
                  </attrib>
                  <attrib id="full" value="false" />
                  <attrib id="direction" value="(0,1,0)" />
                  <attrib id="angles" value="0,0.785398" />
               </SphericEmitter>
            </attrib>
            <attrib id="modifiers">
               <Gravity>
                  <attrib id="value" value="(0,-1,0)" />
               </Gravity>
               <Obstacle>
                  <attrib id="zone">
                     <Plane>
                        <attrib id="position" value="(0,-1,0)" />
                        <attrib id="normal" value="(0,1,0)" />
                     </Plane>
                  </attrib>
                  <attrib id="zone test" value="2" />
               </Obstacle>
               <EmitterAttacher>
                  <attrib id="base emitter">
                     <SphericEmitter>
                        <attrib id="tank" value="-1" />
                        <attrib id="flow" value="100" />
                        <attrib id="force" value="0.2,0.5" />
                        <attrib id="zone">
                           <Point>
                              <attrib id="position" value="(0,0,0)" />
                           </Point>
                        </attrib>
                        <attrib id="full" value="false" />
                        <attrib id="direction" value="(0,0,-1)" />
                        <attrib id="angles" value="0,0.785398" />
                     </SphericEmitter>
                  </attrib>
                  <attrib id="orientation enabled" value="true" />
                  <attrib id="rotation enabled" value="false" />
                  <attrib id="target group" ref="12" />
               </EmitterAttacher>
            </attrib>
         </Group>
         <Ref ref="12" />
      </attrib>
   </System>
   <Group name="Trail" ref="12">
      <attrib id="life time" value="0.5,1" />
      <attrib id="radius" value="0.06" />
      <attrib id="color interpolator">
         <ColorSimpleInterpolator>
            <attrib id="values" value="0xff802080,0xff000000" />
         </ColorSimpleInterpolator>
      </attrib>
      <attrib id="angle interpolator">
         <FloatRandomInitializer>
            <attrib id="values" value="0,6.28318" />
         </FloatRandomInitializer>
      </attrib>
      <attrib id="texture index interpolator">
         <FloatRandomInitializer>
            <attrib id="values" value="0,4" />
         </FloatRandomInitializer>
      </attrib>
      <attrib id="rotation speed interpolator">
         <FloatRandomInitializer>
            <attrib id="values" value="-0.1,1" />
         </FloatRandomInitializer>
      </attrib>
      <attrib id="modifiers">
         <Rotator />
      </attrib>
      <attrib id="renderer">
         <GLQuadRenderer />
      </attrib>
   </Group>
</SPARK>

Tous les objets n'exportent pas encore leur description correctement. Dans l'exemple c'est le cas des renderers (puisque je compte réfactorer cette partie).

Voila en gros pour setter un attribut on a 2 syntaxes :
Code:
<attrib id="life time" value="0.5,1" />
ou
Code:
<attrib id="life time">0.5,1</attrib>
Pour l'instant le saver utilise la première. Av oir si je met des options de formattage et/ou si je garde les 2 à terme.

Les objets peuvent être référencés de 2 façons :
  • directement en incluant la description de l'objet dans l'arbre de façon classique
  • par référence en incluant dans la hierarchie un tag <Ref ref="[id]"> ou l'attribut ref="[id]". La description de l'objet étant ailleurs dans le fichier. L'objet référencé doit avoir l'attribut ref dans son tag avec le bon id. Je n'ai pas utilisé le nom car celui ci n'a ni a être unique ni à être défini.

Cette feature est nécessaires puisque des objets peuvent être référencés par plusieurs autres objets.

Encore une fois il y a plusieurs moyens de formatter le truc. Pour l'instant le saver utilise une référence dès qu'un objet est référencé plusieurs fois, sa description va être située à la racine. D'autres types de formattages pourrait être envisager comme utiliser les références systématiquement ou alors inclure la description à la première utilisation puis utiliser des références si réutilisé plus tard.

Voilà c'est assez verbeux mais c'est le format xml qui veut çà.
Si vous avez des suggestions, elles sont les bienvenues !
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


Messages : 389
Date d'inscription : 2009-07-20
Localisation : A coté de Paris

PostSubject: Re: SPARK 2 : description XML   Fri Jan 28, 2011 2:08 pm

Ça a l'air plutôt puissant. Au niveau des références, l'id doit être un nombre ou une chaine de caractère ?
Je pense qu'au début l'éditeur exportera avec utilisation systématique des références, mais à terme peut être que je mettrai une option pour changer ca.

Au niveau de la doc, je pense qu'il serait pas mal d'avoir une page listant tous les attributs utilisés lors de la sauvegarde, ainsi que le format utilisé, vu que le type des attributs est implicite.

Sinon, comptes-tu réutiliser la même structure pour un -éventuel- format binaire ?
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: SPARK 2 : description XML   Tue Feb 01, 2011 3:42 pm

Pour l'instant les références c'est un nombre obligatoirement. Après je peux éventuellement changer mais j'ai pris la solution la plus simple pour l'instant et çà me parait suffisant.

Les attributs et leur type sont listés dans la définition de chaque classe. Faudra regrouper tout çà dans une doc éventuellement.

Pour le format binaire oui c'est prévu mais c'est pas la priorité immédiate. La je fait le loader xml et après je passe au refactor des rendereurs.
Back to top Go down
View user profile http://spark.developpez.com
teto



Messages : 19
Date d'inscription : 2010-08-29

PostSubject: Re: SPARK 2 : description XML   Thu Feb 24, 2011 10:55 am

J'utilisais tinyxml et j'ai testé pugiXML c'est la mm chose mais en mieux (mm simplicité de compilation).
Ca m'a pris 20 minutes pr adapter 2 loaders (lecture de la doc comprise).
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: SPARK 2 : description XML   Thu Feb 24, 2011 11:05 am

Ok, a voir alors.

Niveau taille des dépendances çà donne quoi ?
As tu fait des benchs de load/save pour pouvoir comparer les perfs ?
Qu'est ce qui t'as poussé à vouloir changer de techno ?

Pour l'instant çà marche avec tinyXml mais après s'il y a une autre lib mieux et aussi light, je suis preneur.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


Messages : 389
Date d'inscription : 2009-07-20
Localisation : A coté de Paris

PostSubject: Re: SPARK 2 : description XML   Thu Feb 24, 2011 1:44 pm

Je regarde personnellement depuis un bout de temps la librairie RapidXml, qui m'a l'air d'être la plus rapide existante.

http://rapidxml.sourceforge.net/index.htm
Une comparaison avec PugiXml et TinyXml est disponible ici:
http://rapidxml.sourceforge.net/manual.html

Normalement, je pense passer à RapidXml pour la prochaine grosse release - sauf si je n'ai pas le temps d'effectuer le changement...
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: SPARK 2 : description XML   Thu Feb 24, 2011 4:51 pm

Ah oui TinyXML est très lent en comparaison des autres.
Enfin çà reste relativement négligeable les perfs du parser.
La taille qu'occupe le code et le nombre de dépendances à trainer sont plus importants.
TinyXML est suffisant dans l'immédiat.
Back to top Go down
View user profile http://spark.developpez.com
Chakra



Messages : 8
Date d'inscription : 2011-01-07

PostSubject: Re: SPARK 2 : description XML   Thu Feb 24, 2011 6:03 pm

Juff wrote:
Ah oui TinyXML est très lent en comparaison des autres.
The xml turtle ^^ (enfin si il est plus léger c'est bien aussi)
Back to top Go down
View user profile
Darktib
Committer


Messages : 389
Date d'inscription : 2009-07-20
Localisation : A coté de Paris

PostSubject: Re: SPARK 2 : description XML   Sat Mar 19, 2011 11:09 am

J'ai finalement essayé RapidXml.
Et j'ai été déçu... c'est pas stable du tout...

Par contre, PugiXml est très bien très sympa à prendre en main pour des performances globalement équivalentes à RapidXml...mais sans les bugs...

Au niveau des dépendances, PugiXml c'est un fichier cpp et 2 fichiers hpp - donc pas des masses...
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: SPARK 2 : description XML   Fri Mar 25, 2011 12:02 pm

Ok, c'est bon à savoir.
Si jamais tu es chaud pour passer à PugiXml à la place de TinyXml dans le XMLLoader et le XMLSaver de SPARK 2 et que tu penses que çà vaut le coup, Vas y hésites pas, moi je vais pas avoir le temps pour le moment.
Back to top Go down
View user profile http://spark.developpez.com
Sponsored content




PostSubject: Re: SPARK 2 : description XML   Today at 3:40 am

Back to top Go down
 
SPARK 2 : description XML
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» [HTML] Category description hover style IPB
» Comic Physique?
» How to explain what a Migraine is in simple terms?
» [Javascript] Using description to work like image in topiclist (PunBB & phpBB2)
» [HTML] Show and hide forum description

Permissions in this forum:You cannot reply to topics in this forum
 :: Forum Francais :: Evolution (fr)-
Jump to: