Home

TerKomp

Mittwoch, 22. November 2006 | Autor:

Ter­Komp ist ein Pro­gramm, dass ich momen­tan pla­ne - ein Kom­pres­si­ons­pro­gramm, dass Ter­rains vom Ter­ra­Gen-For­mat kom­pri­miert. Ter­ra­in­da­ten wer­den bis­her stur Feld für Feld abge­spei­chert, was 2Byte pro Feld benö­tigt und bei 2048² kommt da eini­ges zusam­men.

Daher will ich die Höhen­da­ten kom­pri­mie­ren - das gan­ze soll ver­lust­frei gesche­hen um kein Detail zu ver­lie­ren. Außer­dem wird ein so kom­pri­mier­tes Ter­rain sei­ner­seits noch­mal durch gän­gi­ge Packer wie Win­ZIP, Win­Rar, etc. gepackt wer­den kön­nen. Nor­ma­ler­wei­se gibt es da das Phä­no­men, dass Datei­en, die ein­mal kom­pri­miert wur­den beim erneu­ten kom­pri­mie­ren nicht klei­ner wer­den. Da mein Pro­gramm jedoch eine ande­re Her­an­ge­hens­wei­se hat wird die­ser Effekt nicht auf­tre­ten 🙂

Die Fra­ge ist, ob Java die geeig­ne­te Platt­form ist - Es kann teils schein­bar kei­ne gro­ßen Ter­rains ein­le­sen ohne dass der Java-VM der Spei­cher aus­geht. c++ kann ich lei­der (noch) nicht.
Nach ers­ten Ana­ly­sen sind Raten zwi­schen 60 und 70% erreich­bar. Ein Releaseter­min für eine Ver­si­on 0.1 steht noch nicht fest und wegen des Stu­di­ums kann der noch eine Wei­le auf sich war­ten las­sen.

Tags »

Trackback: Trackback-URL |  Feed zum Beitrag: RSS 2.0
Thema: Programmieren

Diesen Beitrag kommentieren.

4 Kommentare

  1. 1
    Orca 

    Hm. Die Idee hat­te ich auch schon­mal, ist ja bei sol­chen Rie­sen­da­tei­en auch nahe­lie­gend. Wie willst du denn vor­ge­hen? Das Ter­rain in Quadrate/Rechtecke mit mög­lichst gerin­ger Höhen­dif­fe­renz zer­ha­cken? So hat­te ich mir das zumin­dest damals grob gedacht.
    Aber ist natür­lich blöd, wenn die JVM kei­ne 4096² han­deln kann… so viel wie­der zum The­ma Java. Wie war das mit Ter­ra­For­mer auf Java? *g* Gaa­anz toll.

    Grü­ße, Tobi­as 😉

  2. 2
    nicokorn 

    Hehe..
    Im Grun­de würd ich nur die Dif­fe­renz zum nächs­ten Feld spei­chern und hof­fen, dass die nich so groß ist und man mit weni­ger bits aus­kommt. Ist natür­lich blöd, müss­te ich mir einen eig­nen Daten­typ zurecht­bas­teln, der mei­net­we­gen nur 10 Bits hat.
    Vor­teil: Das klappt immer bes­ser je grö­ßer das Ter­rain ist - Nach­teil: Java..
    na viel­leicht bekomm ich es ja doch noch irgend­wie hin. 🙂

    Eina ande­re Idee wäre, die gro­be Form in einem nied­rig auf­ge­lös­ten Ter­rain zu spei­chern und die Details in einem gro­ßen Ter­rain, dass dann mit weni­ger gro­ßen Zah­len aus­kommt.

  3. 3
    Orca 

    Oja, mit Bits arbei­ten ist bestimmt sehr spa­ßig. Ver­mut­lich kannst du dafür in Java auch kei­nen Daten­typ bau­en, denn Java bläht die 10 Bit dann wahr­schein­lich zu minim­nal 40 Bit auf und schon schiebst du wie­der Unmen­gen Spei­cher­sa­lat durch die Gegend *g*

  1. […] … löst hier im kon­kre­ten Fall das Pro­blem. Wobei m natür­lich für Mega steht und nicht für mil­li 😉 Jetzt kann ich ruhi­gen Gewis­sens am Ter­Komp wei­ter­pro­gram­mie­ren 🙂 […]

Kommentar abgeben