Ihr könntet mal was für die kommende Version tun. Ich erinnere mich das mal jemand einen Skript Benchmark als Projekt gemacht hat. Falls dieser vom Macher noch vorhanden ist wäre es cool wenn er nochmal auftauchen könnte und dieser auch von einigen durchgeführt wird. Generell auch : Wenn jemand stellen in seinen Projekten kennt wo viele wiederholt laufende Skripte laufen und die FPS in den Keller gehen.. bitte mal Augen drauf legen und genau schauen.
Hintergrund :
Ich übernehme gerade eine große Änderung aus dem Android Port (fragt nicht, ist gerade auf Eis weil ich da an einen doofen Grafikbug gestoßen bin den ich nicht beheben kann sondern den der Macher der API die ich nutze beheben müsste... also muss ich warten). Diese Änderung war notwendig weil viele Skripte, gerade Funktionen, auf dem Handy erheblich die FPS in den Keller brachten. Im DemoAdventure bspw. waren die DrumBox oder Quatris kaum benutzbar.
Der Grund ist das die Skriptverarbeitung in Sachen Performance schlampig von mir erstellt wurde, auf PCs fällt das allerdings nur in den seltesten Fällen auf da man hier mehr Power verschwenden kann. Diese Verschwendung will ich auch auf Windows beseitigen und deshalb hoff ich auf vorher nachher Vergleiche von euch.
Detail Hintergrund :
Skripte werden bisher (oder wurden) bei jedem Durchgang immer und immer wieder Buchstabe für Buchstabe durchgegangen um Befehle und dessen Inhalte rauszusuchen. Besondern viel Zeit frisst es wenn ein IF Befehl zum überspringen von Zeilen führt und erstmal die richtige Stelle, also die richtige } Klammer gefunden werden muss. Und das halt bei jedem Frame bei jeder Funktion die läuft. Das ändere ich gerade in der Windowsversion (wie zuvor bei Android) so das alle Skripte beim Spielstart in ein anderes Format gebracht werden. Verlängert zwar den Startvorgang aber sorgt dann eben für einen erheblichen Zuwachs an Leistung. Auf Android waren danach alle aufwendigen Skriptsachen wie Minigames kein Problem mehr.
Ein normales Skript wie zB :
randomnum (zahl ; 10)
if_num (zahl ; 5)
{
Befehl (Blah)
Befehl (Blah2)
}
NochnBefehl (Blah3)
wird dann ein 2D Array :
Code: Select all
randomnum | zahl | 10
if_num | zahl | 5
{ | 6
Befehl | Blah
Befehl | Blah2
}
NochnBefehl|Blah3