2d maps und texturen



  • hi,
    ich wollt mal anfangen für mein aktuelles projekt n mapformat zu basteln. nun wollte ich fragen ob es günstiger/sinvoller ist die texturen (vorraussichtlich wird ne tile-map werden) "einfach so" auf der platte liegen zu lassen, sie in extra dateien zusammenpacken (wie z.b. in ut und in fast allen anderen 3d shootern auch 😉 ) oder die teile direkt mit in die mapfile reinzuschreiben (das hätte den vorteil, dass sie gar nicht fehlen können).
    und noch ne zweite frage zum mapformat selbst:
    wie speicher ich da am besten die infos? erst nen header wo dann drinsteht welcher teil wie lang ist und welcher zu erst kommt usw? und dann irgendwie pro tile die x und y position + den dateinamen? wäre nicht allzuviel info und die höhe und breite kann man ja auch im header festlegen. is das was, oder is das die falsche weise da ranzugehen?
    thx
    mfg
    BlackSting



  • also ob es jetzt günstiger ist kann ich die nicht beantworten, ich kann dir nur sagen wie ich es mache.

    das mit dem header mache ich genauso wie beschrieben, steht dann halt immer die dateiposition und die länge der daten drin (vertex, normalen, uv, ....).
    alse meine texturen speichere ich mit ins mapfile.

    struct STexture
    {
        unsigned int    nWidth;
        unsigned int    nHeight;
        unsigned int    nBPP;
        unsigned char   *pData;
    };
    

    nur als beispiel.

    und dann irgendwie pro tile die x und y position + den dateinamen

    würde ich auch so machen

    struct STile
    {
     unsigned int x, y;
     int textureid;
     bool blocked; // collision
    };
    

    ps: muss dazu sagen habe noch nie etwas mit tiles gemacht



  • Also wenn du 10MB+ Texturen pro Level hast, aber fast jeden Level die gleichen würde, ich diese auf jeden Fall nur einmal speichern. Das Zusammenpacken wird IMHO (die Meinung eines scheinbar Dummen) hauptsächlich gemacht um das Klauen/Ersetzen zu erschweren und etwas Ordnung bei User zu haben. Auf meinem Devrechner möchte ich das aber nicht unbedingt so haben!

    Um zu sagen, wie man am besten speichert, müsste man wahrscheinlich etwas mehr über deine Maps wissen.

    Bye, TGGC



  • Man kann die Levelstruktur auch in Chunks machen, die Tiles müssen ja nicht gleich groß sein. Dann musste dir halt ein std::vector machen und schauen was auf dem Schirm ist (bei 10000 tiles + objekten == sehr schlecht). Wenn du es dynamisch machen willst würde ich nen Quadtree nehmen und jeden Leaf nen Objekt vector geben (ggf von ner basisklasse ableiten damit man später sortieren etc kann) und dann je nach BoundingBox auffüllen.

    Nur so als Anregung 🙂



  • hi,
    danke für eure antworten!
    also, ich denke, dass ich es einfach so auf der platte liegen alssen werde, da ich damit bessere übersicht habe, nicht so viel aufwand habe (komplexeres map format usw) und mir es eh egal ist wenns geklaut wird (wird vielleicht (eher wahrscheinlich) open source) und die bilder von mir sehen eh alle scheisse aus *gg*. naja, danke euch allen!
    mfg


Anmelden zum Antworten