Ergebnis 1 bis 20 von 33

Thema: Simple-2D-Engine

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #25
    Zitat Zitat von Ghabry Beitrag anzeigen
    Ist halt XML, da ist doch Speicherplatzverschwendung und Tag-Bloat by Design .

    Nimm JSON, dann sparst du schon mal alle schließenden Tags ^^

    Nachtrag:
    Solche Optimierungen sollte man übrigens erst machen, wenn das Programm weitesgehend steht. Erstmal alles sauber programmieren und dann schauen was man optimieren kann.
    Finde ich nicht, es handelt sich schließlich nicht um eine micro Optimierung sondern um grundlegende Dinge. Es geht mir nicht speziell um das zippen, sondern um das richtige planen von XML Formaten.
    Ein Programm das so datenabhängig wie ein Game Maker ist, viele Baumstrukturen & Objekte, lebt von gut definierten Formaten.

    Ich kann mir z.B. überhaupt nicht vorstellen warum man die gesamten Tiles einzeln speichern will. Sowas wie "Textures/high-grass/" bottom, top, left, right.
    Es ist nicht nur umständlich zu importieren, sondern auch schwer zu bearbeiten. Was wenn ich das Gras umfärben möchte? Muss ich dann alle Dateien einzeln bearbeiten? Sowas löst man normalerweise mit Tilesets/Spritesheets.. was auch meist der Render Performance zugute kommt, da man auf kostbare Texturewechsel in Spritebatches oder ähnliches verzichten kann. Auch das indizieren und cachen fällt leichter.

    Mir sind beim durchschauen noch einige Sachen ins Auge gefallen.
    Zitat Zitat
    <AutoTileDatabase>
    <prototype ID="1" Name="gras-set" Index0="12" Index1="13" Index2="14" Index3="15" Index4="16" Index5="17" Index6="18" Index7="19" Index8="20" Index9="11"/>
    Für sowas sind XML-Attribute nicht geeignet. Es handelt sich um ein Int-Array. Wieso also nicht:
    Zitat Zitat
    <prototype ID="1" Name="gras-set"> <indices> 12,13,14,15,16 <indices/></prototype>
    Zitat Zitat
    <prototype ID="1" Name="Object1" boundingX="2" boundingY="24" boundingWidth="18" boundingHeight="8" animationSpeed="100" scriptName="">
    Der Prototype Tag ist plötlich auch ein Rectangle? Wieso nicht einen extra Tag einführen?
    Zitat Zitat
    <prototype ID="1" Name="Object1" animationSpeed="100" scriptName="">
    <rect x="2" y="24" width="18" height="8"/>
    Ich wette man wird an anderer Stelle ebenfalls ein Rectangle als Bounding Box benötigen, jedoch ohne animationSpeed oder scriptName Attribut.

    Unnötig lange Bezeichner..
    Zitat Zitat
    <AnimationInfo animationID="1" animationTypeID="1"/>
    Man sieht doch im Tag dass es sich um eine AnimationInfo handelt, das "animation" innerhalb der attribute ist also unnötig.
    Zitat Zitat
    <AnimationInfo ID="1" Type="1"/>
    Solche doppelt und dreifach Bezeichner fallen beim lesen von code eher negativ auf. sprite.spritePosition.spriteX.. ihh.

    Zitat Zitat
    <prototype ID="2" Name="forest" columnCount="3" rowCount="2" x0y0="55" x0y1="56" x1y0="53" x1y1="54" x2y0="51" x2y1="52"/>
    x0y0 usw. Kann man auch als Matrix speichern.

    Zitat Zitat
    <prototype ID="1" Name="gras" FileName="gras.png" Path="" transparent_color="" terraintype="0" passability="15"/>
    <prototype ID="2" Name="stone" FileName="stone.png" Path="" transparent_color="" terraintype="0" passability="0"/>
    Den Bezeichner prototype finde ich etwas fragwürdig. Es handelt sich um ein Tile, wieso also nicht <tile>. Hier könnte man auch einige Dinge anders machen um zukünftige Probleme zu vermeiden.
    Zitat Zitat
    <tile ID="1" Name="gras" transparent_color="">
    <image src="fullpath/image/tile.png"/>
    <collision type="solid" passability="15" action="" />
    <terrain type="0" action="#A102"/>
    </tile>
    Als Beispiel. Etwas mehr OOP im Design. Der <collision type="solid"> Tag ist dann für alle möglichen Kollisionsdaten definiert und kann für andere Objekte wiederverwendet werden. So könnte ein Sprite ebenfalls den Tag verwenden. Es ist auch übersichtlicher wenn man die Daten weiter runterbricht.

    Aber nun gut, muss man ja alles nicht so genau nehmen. Mach wie du lustig bist, sollte nur eine kleine Anregung sein

    Geändert von XRPG (10.08.2013 um 14:21 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •