WIP Gameengine

  • [WIP]

    Moin, ich bastel grad an einer kleinen Spielengine - mal schauen ob es ein Projekt wird was ich auch mal fertigstelle :D


    Inhaltsverzeichnis

    - Grundsätzliche Definitionen (Anforderungen an die Engine und deren Bestandteile): weiter unten in Diesem Beitrag.

    - Dateiformate

    - Hilfsprogramme

    - System

    - Sound

    - Grafik

    - usw.



    Die Engine:


    Die Anforderungen an die Engine sind wie folgt:

    - für Adventures geeignet (also nicht unbedingt tauglich für Actionspiele)

    - 640x480 Pixel in 8 Bit Farbtiefe

    - Animationen

    - PCM Sound per Creative ADPCM bis 11kHz (im Grunde genommen *.Voc Files - allerdings entferne ich vorher die Blockheader, keine Lust mich zur Laufzeit damit herumzuschlagen), bzw. Wav bis 22khz in 8 Bit - diese Formate können eben von allen Soundblasterkompatiblen abgespielt werden.

    - Spielablaufsteuerung mittels kompilierten Skripten

    - Maus- und Tastatursteuerung

    - Savegames - am besten mit Aufwärtskompatibilität damit alte Savegames auch in neueren Spielversionen funktionieren (können)


    Technisches:


    Sound:


    Kurz und knapp, Soundblaster 2 Kompatibilität ist angestrebt, d.h.

    - Soundwiedergabe per DMA und Soundkarteninterrupt

    - Creative ADPCM mit bis zu 11kHz in Mono, bzw. 8Bit PCM mit bis zu 22kHz in Mono



    Grafik:


    Wir haben 256 Farben bei 640x480. 256 Farben sind nicht viel, aber glücklicherweise ist der 8Bit Mode indexed - das heißt: Malen nach Zahlen!

    Statt der Farbe wird eine Farbnummer gespeichert, diese wiederum zeigt auf eine Stelle in unserer Palette in der dann die tatsächliche Farbe zu finden ist - und diese Palette können wir relativ frei definieren, damit können wir die Palette so wählen dass sie nur Farben enthält die wir auch nutzen.

    Also auch wenn nur 256 Farben zur Verfügung stehen, können wir wenigstens dafür sorgen dass es genau die Farben sind die wir auch nutzen.


    Nachteil:

    Diese 256 Farben gelten nicht für jedes einzelne Bild/jeden einzelnen Sprite, sondern für den gesamten Bildschirm. Wenn wir also mehrere Bilder gleichzeitig anzeigen müssen sich diese Bilder die 256 Farben teilen.


    Noch eine kleine Anmerkung: 24/32 Bit Bitmaps verwenden eine Farbtiefe von 8 Bit pro Farbkanal, der Standard VGA DAC ist aber 6 Bittig, d.h. 2 Bit Pro Farbkanal können nicht dargestellt werden.

    Ich muss also die Bitmaps gewissermaßen auf 18 Bit Farbtiefe reduzieren - das geht allerdings einfach mit einem shr 2.


    Die Unterteilung des Farbraumes:


    Sichtbare Bildelemente Ingame:

    - User Interface

    - Hintergrund

    - bis zu 4 Charaktere

    - 1 Portrait


    Sichtbare Bildelemente Zwischenszene:

    - User Interface

    - Szene

    - 1 Portrait


    Farben:

    016 User Interface

    024 Portrait

    024 Charakter

    120 Hintergrund (256 - (User Interface (16)+4*Charakter(24)+Portrait(24)) )

    216 Szene (256 - (User Interface (16)+Portrait(24))


    Bei den Farben gibt es noch eine Besonderheit: die UI ist immer vorhanden und beinhaltet Transparenz - Bilder die Farben der UI nutzen bekommen Quasi mehr Farben.

    Bleistift: in der UI (16 Farben) ist die Farbe Schwarz enthalten, in dem Hintergrundbild (120 Farben) ist ebenfalls die Farbe schwarz enthalten - d.h. der Hintergrund kann das Schwarz der UI nutzen statt ein eigenes schwarz zu definieren und kann daher 121 Farben nutzen - das wird bei der Bilddekodierung etwas mehr Aufwand, aber verbessert die Farbwiedergabe.


    Bildgrößen:


    Diese Engine entsteht weil ich ein Spiel portiere (ob ich es veröffentliche hängt davon ab, ob ich es fertigstelle und der eigentliche Entwickler es erlaubt) und daher muss ich mit vorhandenem Material arbeiten und die Engine ist letztlich genau für dieses Spiel angepassr, daher auch folgende Bildgrößen:

    - Hintergrund/Szene 640x360

    - Charakter 256x360

    - Portrait 93x108

    - GUI 640x120


    Skriptengine/Compiler:


    Das Compilierte Skript: (WIP)


    Das hier ist noch stark in überarbeitung....


    - Die darstellbaren Zeichen werden genullt, d.h. A=0,B=1 usw. - das macht den Interpreter einfacher

    - Befehle sind Zeichen >=$80 - d.h. Zeichen ab Zeichen 128 aufwärts markieren Befehle - das macht letzlich 128 verschiedene Befehle, sollte reichen.

    - Variablen/Objekte werden nicht mit Klarnamen gespeichert, sondern über eine 16Bit ID - das macht die Kompilierung der Skripte komplizierter (und ich brauche ab der ersten kompilierung eine Ressourcendatei um sicherzustellen dass immer dieselben IDs vergeben werden - sonst funktionieren die Savegames nicht Versionsübergreifend), aber den Interpreten deutlich einfacher


    Befehle:


    - IF (Ausdruck) Befehle ELSE Befehle ENDIF- Dieser Befehl muss gefolgt werden von einem Ausdrucksbefehl


    - Ausdrucksbefehle:

    -- Equal (Variable, Konstante)

    -- Equal(Variable,Variable)

    -- Equal(Operation,Konstante)

    -- Equal(Operation,Variable)

    -- Equal(Operation,Operation)

    -- Dasselbe nochmal mit >,<,>=,<=

    --- Der Befehlsumfang ließe sich mit der Verwendung von 4 reservierten Tempvariablen (pro Seite des Ausdrucks brauche ich 2 Tempvariablen) reduzieren auf Ausdruck(Variable, Konstante) + Ausdruck(Variable,Variable)

    --- vermutlich werde ich den reduzierten Ansatz wählen - scheint einfacher, sinnvoller und belastet das Befehlsbudget weniger


    - Operationsbefehle: (reduzierter Ansatz (Tempvariable))

    -- shl (Variable,Konstante) (max 15)

    -- shl (Variable,Variable) (max 15)

    -- shr (Variable,Konstante) (max 15)

    -- shr (Variable,Variable) (max 15)

    -- not (Variable)

    -- mul (Variable, Konstante)

    -- mul (Variable, Variable)

    -- div (Variable,Konstante)

    -- div (Variable,Variable)

    -- add (Variable,Konstante)

    -- add(Variable,Variable)

    -- sub (Variable,Konstante)

    -- sub (Variable,Variable)

    -- and (Variable,Konstante)

    -- and (Variable,Variable)

    -- or (Variable,Konstante)

    -- or (Variable,Variable)

    -- xor (Variable,Konstante)

    -- xor (Variable,Variable)


    Steuerbefehle

    - Jump (LocationID) - Springt zu einer anderen Stelle im Skript

    - Set (Variable, Operation)

    - LoadPicture (Position, ID, PaletteID, Variant)

    - LoadCharakter(ID, PaletteID, Variant, Preffered Slot) - ist dafür da weil es nur 4 Charakterslots gibt und es Situationen gibt in denen mehrere Charaktere auftauchen die gerne an derselben Position wären)

    - LoadAnim (Position, ID, PaletteID, TimerDivider-1,Loop)

    - Write (Position, Speed, String)

    - PlaySound(Name/ID,Loop)

    - StopSound

    - LoadGame

    - SaveGame

    - Quit

    - LoadClickableMap(Position, Handler) - wie machen wir das mit UI/Game? Sind 2 verschiedene Handler... - Daisychain?


    Das User Interface


    Für die Mausbedienung werde ich mich einer ClickAble-Map bedienen, vereinfacht gesagt ist dies eine Art Bild bei dem der Farbwert angibt was geklickt wurde.


    Bei jedem Klick lasse ich mir vom Maustreiber die Cursorposition mitliefern, bestehend aus X und Y - damit hole ich mir einfach direkt von der Clickable Map den Rückgabewert und erspare mir jede Menge Vergleichsarbeit.


    Rückgabewert:=Clickablemap[ (Cursorpos_Y*640)+Cursorpos_X ];


    Ist eben deutlich schneller als:


    If (Cursorpos_x >120) and (Cursorpos_x<160) and (Cursorpos_y >20) and (Cursorpos_y<90) then Aktion 1

    Else If (Cursorpos_x >100) and (Cursorpos_x<130) and (Cursorpos_y >200) and (Cursorpos_y<210) then Aktion 2

    Else If....


    Ich werde jedoch die Auflösung der Clickable Map vierteln - damit hat diese nur noch 19200 bytes und passt somit in ein 64kb Segment und 4x4 Pixel sind als kleinstes klickbares Objekt auch angemessen.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

    10 Mal editiert, zuletzt von Dosenware ()

  • Dateiformate:


    Hier geht es erstmal Gundsätzlich um den Aufbau der verschiedenen Dateiformate die ich einsetze.


    Bildressourcendatei


    Dies ist eigentlich ein Sammelbecken an Bilddateien, damit erspare ich mir Overhead und damit kostbaren Festplattenspeicher.

    Festplattenspeicher ist eingeteilt in Cluster, diese sind üblicherweise 4-16kb groß und stellen die kleinste addressierbare Einheit im Dateisystem dar.


    Das heißt: jede Datei - und sei sie auch nur ein byte groß - belegt mindestens einen Cluster.

    Es macht also keinen Unterschied ob eine Datei aus nur einem byte, oder aus 16000 bytes besteht - beide belegen 1 Cluster und damit 16kb (bei 16kb Clustern) - wenn ich also mit mehreren tausend Dateien zu tun habe, kann da schon eine Menge Verschnitt anfallen.

    Um dies zu umgehen packe ich die kleinen Dateien zusammen in eine große Datei:

    Nur damit ihr wisst was das Ausmacht: die unkomprimierten 24Bit BMPs für die Hintergründe sind je 901kb groß, bei 1321 Dateien macht das 1,13Gb - belegt werden aber 1,28Gb, ich habe da also allein 150Mb Verschnitt allein durch das Dateisystem und das Verhältnis von Dateigröße zu Verschnitt wird tendenziell immer schlechter je kleiner die Dateien sind)


    Header der Ressourcendatei:

    - Liste der Dateipositionen, longint, terminiert mit $FFFF FFFF - Die BildID entspricht einfach der Reihenfolge der Dateipositionen (der erste Eintrag in der Liste ist also ID=0, der 2te Eintag ist ID=1, usw. - entspricht im Vollausbau mit 65536 Einträgen einer Tabellengröße von 256kb)


    Header der Bild/Animationsdateien:

    - Breite, word

    - Höhe, word

    - Anzahl der Farben, byte

    - Anzahl der Paletten, byte

    - Anzahl der Varianten, word - Bit 15: 1=Sequenziell (Animation), 0=Absolut (Variante)

    - Variant3+ Offset, longint - dies ist eine Liste ähnlich der im Header (ohne terminierung), der Offset ist relativ zum Start der Bilddatei und nur vorhanden wenn es mehr als 2 Varianten gibt

    - Palettedata, eine Liste von Longints (aka 4 Bytes) die Länge der Liste entspricht der "Anzahl der Farben" - es gibt "Anzahl der Paletten" viele Listen


    Ein Wort zu den Paletten:

    Tag/Nacht sehen häufig gleich aus, nur die Farben Unterscheiden sich - statt nun umständlich das komplette Bild, inklusive seiner Palette erneut zu speichern - kann ich auch einfach nur die Palette speichern, dann lade ich EIN Bild und schalte nur die Palette um wie z.b. hier zu sehen: Vesa und die Tücken 16 Bit Protected Mode


    Ein Wort zu Varianten:

    Varianten sind Bilder die sich nur in wenigen Details vom Ursprungsbild unterscheiden, z.b. Tür zu- > Tür Auf oder auch Licht im Fenster an -> Licht im Fenster aus.

    Für die Varianten werden nur die Unterschiede zum Ursprungsbild gespeichert, der Rest wird auf Transparent/NAC (Not a Color) gesetzt.


    Bilddaten:


    Wie man im vorherigem Post sieht nutzt kein Bild alles 256 Farben, damit können wir - im zusammenhang mit der niedrigen Farbzahl - eine einfache Kompession umsetzen:


    Der Wert $FF entspricht dem Befehl Repeat - gefolgt von der Anzahl und der Farbe:

    $FF $08 $A1 entspricht also folgenden Bilddaten: $A1 $A1 $A1 $A1 $A1 $A1 $A1 $A1

    Ich kann damit im Extremfall 256 bytes auf 3 bytes reduzieren - dafür benötige ich aber einfarbige Flächen - dithering ist in dem Fall eher schlecht (und sieht ohnehin Kacke aus)

    Ich konnte damit (bzw. einem Vorgänger der allerdings nur 128 Farben unterstützte - dort war Bit 7 ($80) der Trigger, die unteren 7 Bit gaben die Anzahl an)) ein Bild von 226kb auf 36 kb reduzieren, als Gif sinds 33kb, als png 26kb - für die Einfachheit und damit der Schnelligkeit des Verfahrens garnicht mal schlecht.

    Evtl. werde ich die alte und neue Variante implementieren, die alte ist etwas effizienter, die neue kann dafür auch die Szenen (216 Farben).

    Für die Paletten muss ich mir jedoch noch etwas überlegen aktuell besteht jeder eintrag aus 4 bytes, davon werden 3 genutzt. Die Konvertierung von 3 auf 4 Bytes kostet wieder Zeit, kann aber bis zu 216 bytes einsparen.


    NAC/Transparenz: ist einfach der Wert $FE - die Farbe wird dann einfach nicht dargestellt d.h. der Pixelzähler wird einfach erhöht.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

    9 Mal editiert, zuletzt von Dosenware ()

  • Hilfsprogramme


    Als erstes geht es mal mit dem aktuellen Roadblock los:


    Die Bildbearbeitung/Konvertierung



    Seht ihr das Krieseln an den Kanten? (in Falschfarben gut sichtbar) Das sind alles verschenkte Farben - ich habe das Bild schon kräfig nachbearbeitet um die Farbzahl zu reduzieren, ohne dass es mistig ausschaut (Farbbänder, Dithering) - aber das Ergebnis könnte besser sein.

    Doch dazu muss ich die überschüssigen Farben loswerden um sie an anderer Stelle nutzen zu können - z.b. für einigermaßen brauchbare Farbverläufe.


    Ebenso muss ich die Bilder für multiple Paletten und Varianten/Animationen vorbereiten und dazu brauche ich ein Tool, also hier Kurz die Anforderungen.


    - Bei Laden eines Bildes automatisch Konvertierung auf 18 Bit, dann sind schoneinmal die nicht darstellbaren Farben raus (bei 24/32 Bit Farbtiefe werden 8Bit pro Farbkanal genutzt, bei VGA/Vesa sind 6 Bit pro Kanal normal)

    - Zählen der Farben und aufsteigend sortiert anzeigen, sowie anzeigen einiger Bildinformationen

    - Mausbedienung + Hotkeys

    - Highlightfunktion -> selektierte Farbe wird negiert/durch Spezialfarbe ausgetauscht um sichtbar zu machen wo sie verwendet wird

    - ersetzen von Farben durch Pick and Place (sowohl im Bild, als auch in der Palette)

    - Undofunktion - d.h. zwischenspeichern

    - anzeige 2er Bilder simultan

    - Blättern durch Bilder für Animationen/Varianten

    - Laden von Bildgruppen und deren Farbpaletten

    - Laden von Farbpaletten

    - umarangieren von Farbpaletten

    - bei Laden von Varianten/Animationen automatisch Differenzbilder erzeugen. (Transparenz als $FE $FE $FE speichern, diese Farbe ist eh nicht darstellbar)

    - beim Laden von Bildern(Bildgruppen) Arbeitskopie als BMP erzeugen, die alle geladenen Bilder enthält - so habe ich nur eine offene Datei, statt bis zu 60

    - Speichern im eigenen Bildformat


    Die Probleme beginnen schon in Dosbox - 1280x960/1024 werden nicht in 24/32 Bit unterstützt, bei dieser Farbtiefe sind maximal 800x600 Pixel möglich, was die gleichzeitige Anzeige 2er 640x480 Bilder erschwert.


    Ein erstes Konzept sieht so aus:


    Die bunten Kästchen sind die Paletteneinträge - die leeren weißen Kästchen daneben sind Platzhalter, dort soll später eine 4 stellige Hexadezimale Zahl stehen die die Zahl der Pixel angibt die jene Farbe verwenden.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

    4 Mal editiert, zuletzt von Dosenware ()

  • Beitrag von Dosenware ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von Dosenware ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von Dosenware ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Entwicklung Hilfsprogramm: Bildbearbeitung/Konvertierung


    Zählen ist schwer:

    Was erstmal doof klingt, hat mich jetzt eine ganze Weile beschäftigt.


    Ich zähle 32bittige Farbwerte in Bildern die maximal 640x360 Pixel groß sind - 640x360 ist mehr als der Datentyp word aufnehmen kann, also brauche ich Longint - theoretisch sind wir also bei 4Milliarden x 4 Milliarden Werten... 16 Gb... das ist viel, glücklicherweise lässt sich das reduzieren:

    - große Zählwerte interessieren mich nicht, ich will die wenig genutzten Farben loswerden (einzelne Pixel mit leicht anderer Farbe sieht man eh nicht) - d.h. als Zählwert reicht mir word (65535 max)

    - Im 32 Bit Farbwert ist ain Alphakanal mit enthalten - den nutze ich nicht d.h. wir landen bei 24 Bit - da der VGA-DAC nur mit 6 Bit Pro Kanal arbeitet, kann ich die unteren 2 Bit jedes Farbkanals nullen und arbeite faktisch nur mit 18Bit =262144 Farbwerte

    - viel wichtiger ist allerdings: 640x360=230400 Pixel - damit also auch nur maximal 230400 Farbwerte


    Am Ende landen wir bei 230400 Farbwerten (32Bit) + 230400 Zählwerten (16 Bit) = 1.382.400 bytes - 1,35 Mbyte - immernoch viel, aber handlebar.


    Und nun kommt noch die Segmentierung des Speichers hinzu - jede Datenstruktur in Pascal kann maximal 65535 bytes einnehmen, also muss ich meine 1,35Mbyte in handhabbare Häppchen zerlegen.


    Nächstes Thema: Geschwindigkeit.

    Für jeden einzelnen Pixel meine Zählliste (mit maximal 230400 Einträgen) zu durchsuchen frisst wahnsinnig viel Zeit, also mache ich mir zunutze dass benachbarte Pixel wahrscheinlich dieselbe Farbe haben und vergleiche die Farbwerte der Pixel miteinander während ich sie Zähle - in die Zählliste wird das ganze erst dann eingetragen, wenn ich auf ein Pixel mit anderer Farbe stoße.


    Mit 8000 cycles (soll wohl einem 386er mit 33 MHz entsprechen) braucht das Konstrukt immernoch etwas über 18 Minuten - ist aber schonmal deutlich schneller als die erste Version, die wirklich jeden Pixel mit der Liste verglich, die 28,5 Minuten brauchte - obwohl die Ursprungsversion nur mit einer 4096 Einträge langen Liste arbeitete...


    Das Testbild hat übrigens 6185 verschiedene Farben (nach Reduktion auf 6Bit/Kanal) - wovon 2006 Farben nur von einem einzelnen Pixel genutzt werden und 4705 Farben werden von 1-9 Pixeln genutzt - klar dass ich die loswerden will - die fressen nur den besser sichtbaren Bereichen die Farben weg.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • Pixel ersetzen:


    Ich arbeite gerade daran automatisch Pixel ersetzen zu lassen, genauer gesagt will ich Farben, die nur 9mal - oder weniger - im Bild vorkommen automatisch durch andere, sehr ähnliche - aber häufiger verwendete - ersetzen lassen.

    Hier sieht man ganz gut welche einzelnen Farbpixel ersetzt werden - die Farbvergleichsoperation muss ich allerdings noch korrigieren.



    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • nein, das Gegenteil. Ich brauche eine Farbreduktion auf 120/216 (Hintergrund/Szene) Farben - leider sieht das mit der Farbreduktion über die normale Bildbearbeitung schrecklich aus, drum versuche ich das jetzt selbst und will erstmal die "unsichtbaren" Farben loswerden.


    Das Bild hat übrigens nach der Konvertierung zu 6Bit/Farbkanal (VGA Dac) ~6500 Farben, wovon etwa 5000 nur auf 1-9 Pixeln vorkommen - wie du siehst: fast alle sind an den Kanten.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • Dithering ist Mist - sieht Kacke aus, als hätte das Bild Masern. Dithering kannst du bei hochauflösenden Bildern machen, da störts nicht.

    Die verwendeten Bilder haben üblicherweise nicht viele Farben - vielleicht mal einen Farbverlauf, aber sonst viele einfarbige Flächen, die meisten Farben tauchen eben an den Kanten auf.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • Ich werde das ganze wohl Umstellen auf einen Vergleich mit den Umgebungspixeln:

    -Wenn die 8 angrenzenden Pixel eine andere Farbe als das aktuelle Pixel haben, wird die Farbe des Pixels ersetzt - sofern die Farbabweichung zu einem der benachbarten Pixeln 1 1 1 ist (das niederste Bit in jedem Farbkanal)


    Abweichungen der Art 1 1 0, 1 -1 1 und ähnlich sind nicht zulässig weil sich sonst die Farbe ändern würde...

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • Mal ein kleiner Bildervergleich:

    Original (auf 640x360 resized, 8Bit pro Farbkanal) - 27551 Farben



    Auf VGA Umgestellt (6 Bit pro Farbkanal ) - 6185 Farben


    Mit obiger Methode (siehe das Bild mit falsch gefärbten Kanten) bearbeitet - 1895 Farben


    Mal schauen was rauskommt wenn ich jedes Pixel mit seinen 8 Nachbarn vergleiche (siehe Posting eins weiter oben) - die Farbzahl dürfte dann jedenfalls nochmals massiv sinken.

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

  • Ich habe mal Spaßeshalber den Algorithmus unbeschränkt (oben sucht er nur nach alternativen für Farben die weniger als 10 Mal vorkommen) durchlaufen lassen: - 498 Farben



    PS. da sind übrigens immer noch 68 Farben drin, die nur als einzelne Pixel vorkommen...

    das/der Back-up/Backup [ˈbɛkʔap] - Substantiv, Neutrum - oder Substantiv, Maskulin

    Gebrauch: EDV

    Grammatik: das/der Back-up, Genitiv: des Back-ups, Plural: die Back-ups

    Definition: Das hättest du besser vorher gemacht.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!