Blobby Volley Liga >> Forum >> Unterforum:Blobby Volley 2 >> Thread: Performance setBlobColor





[Seite: 1 2 ]


23.07.2009
11:56:36
Performance setBlobColor


ngc92
Posts:139

Da die blobby.redio Seite nicht mehr Erreichbar ist poste ich das mal hier:



außerdem scheint die Gelegenheit grad günstig, da sich ja bei BlobbyVolley 2 mal wieder was zu tun scheint.



Ich denke bei der Funktion setBlobColor lässt sich eine deutliche Performanceverbesserung erzielen, wenn man, statt wie jetzt jedes Mal jedes Bild des Blobbys neu einzufärben, nur das des aktuellen Animationsschrittes färbt.



Dies scheint tatsächlich eine deutliche Beschleunigung zu bringen, mit dem alten Code erreiche ich bei mir ca. 130 FPS, mit dem geänderten sind es jedoch über 300.



Die Verbesserung wirk natürlich nur bei MorphingBlobs, aber da finde ich den Unterschied schon beachtlich



Geändert hab ich am Code folgendes:

ngc92game.ng.funpic.de/colorPerformance.patch



   
29.07.2009
21:31:55
Re: Performance setBlobColor


nobody
Posts:339

Hallo,

ja, da hast du absolut recht, uns war das Problem bereits bekannt, aber trotzdem vielen Danke für den Patch =)!

Jedoch habe ich nicht in den trunk Bereich aufgenommen, da er qualitativ einen Mangel hat (wenn die Blobbys nicht ozillieren ist die Färbung leider nicht korrekt beim bewegen), würdest du das ausbessern würden wir den Patch selbstverständlich aufnehmen =) wir freuen uns immer wenn es Unterstützung gibt.

Wie du sicher auch in den logs erkannt hast, wurde eine ähnlicher Fehler von mir im Hauptmenü gepatcht. Auf Grund unserer aktuellen Architektur handelt es sich dabei nur um einen workarround. Nachdem wir dann den Fehler entdeckt haben den du gerade gemeldet hast, haben wir den Entschluss gefasst, die Renderer neu zu schreiben, da sie z.Z. zu spezifische Sachen machen und nicht sauber vom Spiel getrennt werden können, was zur Folge hat das wir im Grunde nicht sauber patchen können, sondern bald nur noch eine Ansammlung von Workarrounds produzieren.

Wir wollen einen Renderer produzieren der im Grunde nichts mit Blobby zu tun hat und dabei auch auf SDL 1.3 aussetzt.

Wie es scheint verstehst du was von der Materie =). Wenn du Lust und Zeit hast an der Entwicklung teilzunehmen kannst du dich ja bei uns melden.

Der 4 Spielermodus wird unter anderem auch vom Renderer behindert^^ und ich denke das ist für die meisten hier von Interesse ;).



Gruß

Daniel


Dieser Post wurde zuletzt am 29.07.2009 um 21:51:50 editiert
   
30.07.2009
16:09:49
Re: Performance setBlobColor


ngc92
Posts:139

Hallo,

der Fehler müsste jetzt behoben sein.



Die Datei ngc92game.ng.funpic.de/colorPerformance.patch hab ich aktualisiert.



Um das Problem zu beheben habe ich folgendes geändert:

Es gibt eine zusätzliche Funktion, die alle Frames einfärbt, die einmal zu Beginn des Matches aufgerufen wird.

Während des Matches wird (nur wenn di Blobbys oszillieren, ich glaub zwar nicht dass das die Performance merklich verbessert) dann normal die setBlobColor Funktion aufgerufen, die das aktuelle Frame färbt.





   
02.08.2009
12:02:20
Re: Performance setBlobColor


nobody
Posts:339

Danke für den Patch.

Werd mich nächste Woche mal dransetzten und ihn prüfen und integrieren =).

Wenn du noch ein paar Optimierungsmöglichkeiten findest sag einfach bescheid.

Du kennst nicht reinzufällig jemanden der gute neue Fonts (komplett ASCII) erstellen könnte oder? :D



Gruß

Daniel



PS: Der aktuelle Link ist: blobby.sf.net, der Redio Link wird nicht mehr wiederkommen.


Dieser Post wurde zuletzt am 02.08.2009 um 12:06:19 editiert
   
02.08.2009
15:45:27
Re: Performance setBlobColor


ngc92
Posts:139

Eine weitere Möglichkeit zur Optimierung wäre evtl. die Darstellung des Textes im SDL Renderer.

Dort wird ja zu Zeit jedes Zeichen einzeln gezeichnet. Da die meisten Texte im Spiel sich jedoch nicht oder nur sehr selten ändern, wäre es vermutlich schneller, den gesamten Text einmal in eine SDL_Surface zu zeichnen und dann jeweils nur noch diese zu blitten. Ich kenne mich da jetzt nicht so genau aus, aber ich vermute, ein einzelner Blit einer größen Fläche geht schneller als ganz viele kleine. Ich kann das in nächster Zeit ja mal ausprobieren.



Was genau muss denn bei den Fonts gemacht werden?

Geht es einfach darum, aus den .ttf Dateien .bmp's zu machen? Wenn ja, bei der Irrlicht Engine, mit der ich in letzter Zeit ein bisschen was gemacht habe, gibt es ein Font-Tool, dass eine ttf in eine einzelne Bitmap macht. Diese müsste man dann halt von Hand zerlegen, was eben ein bisschen Arbeit, aber nicht weiter schwer wäre. Nur das Einfärben könnte etwas problematisch werden, schließlich soll es ja auch gut aussehen^^


Dieser Post wurde zuletzt am 02.08.2009 um 15:48:54 editiert
   
02.08.2009
16:53:03
Re: Performance setBlobColor


nobody
Posts:339

Huhu,

es geht darum das wir schon einen ähnlichen Font haben wollen wie vorher auch, wir jedoch keinen Grafiker haben der uns diesen Font herstellen kann. Wir hoffen noch auf Silvio, dass er die Zeit findet einen hübschen Font zu kreiren.

Die Ziele dieser ganzen Aktion sind die folgenden:

- Vollen ASCII Zeichensatz-Support (beginnend bei ! damit wir einen vollständigeren aber trotzdem nicht zu großen Zeichenumfang haben => mehr Konsistenz in der Kodierung, z.Z. haben wir ja ein ziemlich löchrigen Zeichenumfang, wie man an den aktuellen Credits in der Dev-Version sehen kann^^, Stichwort (at) statt @

- In den nicht druckbaren positionen können wir wir dann eine kleine Erweiterung speichern, damit wir öÖüÜäÄ€ und andere wichtige Zeichen auch abdecken

- verschiedene Fontgrößen damit wir eine Chatfunktion implementieren können, sowie die Menüs übersichtlicher gestalten können (benötigte Größen: 12, 18, 24)

- jede Fontgröße soll in einen Bitmap-Streifen abgelegt werden, damit das laden dieser schneller von statten geht und man relativ einfach jedes Zeichen blitten kann (z.B. für ein A der größe 24 einfach 64*24 rechnen brauch und dann aus diesem Streifen ein 24*24 Bitmapstück nutzt.

- "sauberer" Font bezüglich des Fontrandes, starte mal das Spiel und betrachte die Punktzahlen, dort wird dir auffallen das diese einen ziemlich häßligen Rand haben.



Deine Idee mit dem großen Blit ist gut, jedoch denke ich das das etwas zu weit gehen würde, da der Unterschied wahrscheinlich nicht merkbar ist und der Programmieraufwand dem nutzen wohl nicht gerecht wird. Beim laden eines Streifens sieht das ganze wieder etwas anders aus, da die Programmierung dadurch eher schlanker als als größer wird (52 kleine Bitmaps laden wie es aktuell der Fall ist, ist wirklich nicht sehr schlau :D). Das winende Auge ist das das Spiel dadurch, ca. 100kb größer wird, aber ich denke heutzutage kann man das verkraften :D ;D



Gruß

Daniel


Dieser Post wurde zuletzt am 02.08.2009 um 17:26:21 editiert
   
02.08.2009
17:44:25
Re: Performance setBlobColor


ngc92
Posts:139

Ich hab das eben testweise mal probiert, der Unterschied ist wirklich kaum spürbar, es war etwa 3% schneller, aber das kann genauso gut nur eine Schwankung sein. (im Menü wird es wohl mehr ausmachen, aber da ist die Performance nicht ganz so wichtig)



Wenn allerdings dann irgendwann mal der Support für mehrere Sprachen eingebaut wird wäre dies eine gute gelegenheit, so etwas zu verwirklichen. Dann braucht man eh eine Klasse, die die Zeichenketten, die bis jetzt noch direkt im Code stehen, verwaltet, und diese könnte dann auch das pre-rendern übernehmen.



Ich habe übrigens noch einmal nachgeschaut, das Font-Tool von Irrlicht erstellt die Bitmapstreifen so, dass jedes Zeichen auch nur den Platz einnimmt, den es auch braucht, was dann die Berechnungen schwieriger machen würde.








Dieser Post wurde zuletzt am 02.08.2009 um 17:45:28 editiert
   
02.08.2009
17:57:14
Re: Performance setBlobColor


nobody
Posts:339

Hab mir gerade mal ein wenig die Möglichkeiten der SDL angeschaut und habe bemerkt das wir bereits jetzt die Unicode-Unterstützung intern aktiviert haben. Weis jetzt gerade nicht wieso, aber wird denke ich seinen Grund haben. Habe weiter nachgeschaut wie die Unterstützung für Unicode aussieht und muss sagen das ich begeistert bin wie gut diese ist.

Deswegen habe ich mir mir ASCII mit Erweiterung mal eben schnell aus dem Kopf geschlagen und schlage vor UTF-8 zu nutzen, womit wir dann auch die wichtigsten Sprachen einschließen =) (den Mehrsprachesupport hatte ich schon ganz vergessen :D)



Also bräuchten wir einen 3 Streifen mit je 256 Zeichen, angeordnet nach Unicode-Codierung, ob das über das Ziel hinausgeschossen ist kann ich jetzt noch nicht sagen, aber denke das das dadurch grundsolide wird, jedoch die implementierung etwas kniffelig wird.



Gruß

Daniel



   
02.08.2009
19:25:45
Re: Performance setBlobColor


ngc92
Posts:139

Hmm, von Unicode hab ich leider keine Ahnung :(



Ich habe mal geschaut wie das mit den Schriften in Irrlicht gemacht ist. Dort wird in einer Map jeweils das Zeichen, das dazugehörige Quellrechteck sowie overhang und underhang für die Breite gespeichert. Dies hat natürlich den Nachteil eines höheren Verwaltungsaufwands, aber dafür kann man dann theoretisch den gesamten Zeichenvorrat nutzen, den der Datentyp bietet (was dann wohl wchar_t wäre) und das Ergebnis sieht evtl. etwas besser aus, da die Zeichenabstände variiern.



Ich hab mal die Irrlicht Font Dateien für die surfb Schrift erstellt (ngc92game.ng.funpic.de/surfb.rar).

In den XML Dateien sind dann die Daten der einzelnen Zeichen gespeichert.



Die großen Schriften sind so nat. nicht zu gebrauchen, die müssen mindestens noch ordentlich eingefärbt werden. Die kleineren Schriftarten für den Chat würde ich nicht ganz so farbenfroh machen, ich denke mal bei größeren Texten ist das für den Leser sehr unangenehm (man stelle sich die credits in ner deutlich kleineren Schrift vor). Daher würde dort vllt. ein einfaches In-Graustufen-Färben reichen, und dann wird das ganze im Spiel dann in der jeweiligen Farbe des Blobbys des Spielers der schreibt genommen. Falls es mal 4 Spieler Matches geben wird hätte man dann im Chat auch gleich bessere übersicht, wer was geschrieben hat.





   
02.08.2009
20:09:30
Re: Performance setBlobColor


nobody
Posts:339

UTF-8 ist ist gefühlt wie ASCII nur mit einem Bit mehr Information =).

Find das ziemlich cool mit der Schrift, damit wäre einiges mehr möglich.

Ist halt abzuwägen ob das "to much" wäre^^ ne gute Frage^^.

Für kleine nicht bunte Schriften wäre auch SDL_ttf eine gute Lösung.

Mit dem Chat haste absolut recht! Ist halt die Frage wie man das anlegen soll, nicht zu klein aber auch nicht zu groß^^.



Naja erstmal warten auf einen Font.



Bin nun erstmal ein paar Tage nicht mehr zu erreichen. Melde mich spätestens am 10.



Gruß

Daniel



   


[Seite: 1 2 ]


Du musst angemeldet und eingeloggt sein um Antworten zu schreiben


bv2
english page
Blobby Volley League