-
Ehrengarde
Ich habe mir nun die Zeit genommen mich durch das Script zu lesen. Der Script-Stil ist nicht sonderlich freundlich wenn man das sagen darf und erschwert das Verständnis zunehmend.
Von der Idee her arbeitet das Script beinahe so wie meine Idee es vorsah. Nur an einer kritischen Stelle wurde eine andere Lösung genommen.
Nämlich das updaten der Lichteffekte.
Das Script arbeitet nämlich tatsächlich so, dass es jedes Frame jeden einzelnen Lichteffekt welcher auf der Karte gerade sichtbar ist komplett neu zeichnet genauso wie die Hintergrunddunkelheit.
Ich jedoch wollte nur diejenigen Lichteffekte neuzeichnen lassen welche sich mit einer sich bewegenden Lichtquelle überschneiden und auch nur in den dafür notwendigen Punkten.
Tatsächlich kann man nicht sagen ob die eine oder andere Variante besser ist, da es hier auf die Situation ankommt.
Um das zu erläutern:
1). Gibt es garkeine sich bewegenden Lichtquellen in dem Spiel ist meine Variante leichtverständlich besser, dann wird nämlich bei einem Update überhaupt garnichts gemacht werden müssen.
2). Gibt es nur bewegliche Lichtquellen so müssten in beiden fällen sowieso alle Lichtquellen neu gezeichnet werden, meine Variante würde allerdings zusätzlichen Overhead für, in diesem Fall nutzlose, berechnungen produzieren und deshalb schlechter ausfallen.
3). Gibt es wenige bewegliche Lichtquellen und einige verstreute einzelne unbewegliche Lichtquellen auf der Karte, wie es der Standard sein sollte, dann sollte theoretisch meine Variante besser abschneiden, da nur das nötigste in den nötigen Fällen neugezeichnet werden würde und nicht alles.
4). Gibt es eine bewegliche Lichtquelle die plötzlich auf sehr viele dicht beieinanderstehende unbewegliche Lichtquellen trifft so wird meine Variante wahrscheinlich ebenfalls schlechter abschneiden als die andere aus dem gleichen Grund wie im Punkt 2).
5). Außerdem ist ein unterschied, dass diese Methode die hier gezeigt wird einen konstanten Performance-Verbrauch besitzt während meine Variante nur arbeitet wenn etwas passiert. Das heist, stehen alle beweglichen Lichtquellen gerade still so wird auch wirklich nichts gemacht, stehen im Moment alle Lichtquellen so weit von einander entfernt dass sie sich nicht überschneiden muss ebenfalls nichts, beziehungsweise nur wenig, gemacht werden.
Ich denke wirklich, dass man vielleicht versuchen sollte beides einzubauen und nach Bedarf zu wechseln.
Nachdem ich mich heute nocheinmal an das Script gesetzt habe konnte ich auch den letzten Bug aus dem Algorithmus entfernen und es funktioniert nun, allerdings noch nicht in einer Form wie man es dem Standardbenutzer vorwerfen könnte.
Ich denke ich werde eine Testumgebung in naher Zukunft veröffentlichen können.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln