Archiv verlassen und diese Seite im Standarddesign anzeigen : Frames schneller abspielen
Und zwar geht es um 2 Sachen:
- Ist es möglich die Charsets schneller zu machen? Sie sollen sich aber nicht schneller bewegen, sondern die Laufanimation soll schneller aussehen. Beim 2k bewegen sie sich pro Tile auch irgendwie schneller.
- Kann man die Animationsgeschwindigkeit von Autotiles beeinflussen? Ich habe in Ruby nichts gefunden.
Danke schonmal für eure Hilfen.
Der Drake
17.02.2006, 21:27
- Ist es möglich die Charsets schneller zu machen? Sie sollen sich aber nicht schneller bewegen, sondern die Laufanimation soll schneller aussehen. Beim 2k bewegen sie sich pro Tile auch irgendwie schneller.
Unter 'Game_Character 2' in Zeile 23:
if @anime_count > 18 - @move_speed * 2
einfach so abändern, das die Bedingung einfacher erfüllt wird. Wie genau musst du allerdings selbst abschätzen, je nachdem was gut aussieht.
- Kann man die Animationsgeschwindigkeit von Autotiles beeinflussen? Ich habe in Ruby nichts gefunden.
Nicht dierekt... es gäbe mehrere Möglichkeiten das ganze umzusetzen. Zum beispiel könntest du Tilemap.update öfters als einmal pro Frame aufrufen, wenn die Framerate das mitmacht... oder du könntest deine eigenen tile basierenden Animationen einbauen, was wahrscheinlich auch im Allgemeinen mehr Möglichkeiten bieten würde.
Das kann man auch ganz einfach machen, indem man Tilemap.map_data, oder Tilemap.auto_tiles ändert. ^^"
Klasse, das erste hat geklappt. Ich habe den Wert von 18 auf 16 gesetzt und das sieht schon besser aus.
Beim zweiten
Das kann man auch ganz einfach machen, indem man Tilemap.map_data, oder Tilemap.auto_tiles ändert. ^^"
verstehe ich das nicht. Wo finde ich das oder besser gefragt was muss ich ändern? :confused:
MagicMagor
17.02.2006, 22:32
Tilemap ist eine Klasse, die Teil der RGSS ist. Demnach ist sie nicht in den Standard skripten definiert.
Ruby erlaubt es aber auch solche Klassen zu erweitern und zu überschreiben. Um das korrekt zu tun muss man natürlich wissen inwiefern die Klasse funktioniert um dann die entsprechend modifizierte Implementierung zu schreiben. Dabei hilft einem nur die Dokumentation der Klasse in der Hilfe-Datei und Experimente, die man mit der Klasse selber anstellt.
Ich behaupte einfach mal, daß das über die Fähigkeiten von vielen hinaus geht (ich selbst würde es mir auch nur begrenzt zutrauen), deswegen auch der Smiley von Drake =).
Ah, verstehe kompliziertes Gebiet also. Gibt es denn die Möglichkeit das das autotile mehrmals geupdated wird, also so etwas wie @tilemap.update * 3
Würde das Autotile dann 3 mal so schnell sein? *unwissendbin* :redface:
Der Drake
18.02.2006, 12:38
Gibt es denn die Möglichkeit das das autotile mehrmals geupdated wird, also so etwas wie @tilemap.update * 3
Würde das Autotile dann 3 mal so schnell sein?
Einfach dreimal die Methode aufrufen eben - @tilemap.update; @tilemap.update; @tilemap.update; - oder sowas in der Richtung.
Tilemap ist eine Klasse, die Teil der RGSS ist. Demnach ist sie nicht in den Standard skripten definiert.
Ruby erlaubt es aber auch solche Klassen zu erweitern und zu überschreiben. Um das korrekt zu tun muss man natürlich wissen inwiefern die Klasse funktioniert um dann die entsprechend modifizierte Implementierung zu schreiben. Dabei hilft einem nur die Dokumentation der Klasse in der Hilfe-Datei und Experimente, die man mit der Klasse selber anstellt.
Ich behaupte einfach mal, daß das über die Fähigkeiten von vielen hinaus geht (ich selbst würde es mir auch nur begrenzt zutrauen), deswegen auch der Smiley von Drake =).
In dem Fall nicht wirklich, Tilemap.map_data ist einfach ein 3D Table, mit Daten über die Map. Den kann man während des Spiels noch umschreiben, um so zum beispiel Animationen in das Chipset einzufügen.
Tilemap.auto_tiles ist hingegen ein Array, mit den Bitmaps der Autotiles... den kann man wohlbemerkt auch mittendrin ändern, anstatt nun ein gewöhnliches animiertes Autotile zu benutzen, kann man sich auch 3 nicht animierte machen und dann selbst zwischen ihnen wechseln.
Beides ist eigentlich flexibler als das Standard Animationssystem des Makers. Sowas ähnliches gab es schon beim 2k, hat zum Beispiel Velsarbor beim Corine Plateau eingesetzt.
Ok, scheint so als wäre ich wieder am Anfang. Wenn ich beim Character Interpreter den Wert von 18 auf 16 runterstelle, so sieht das beim Player zwar gut aus, aber andere NPCs bewegen sich ziemlich abgehackt.
@tilemap.update; @tilemap.update; @tilemap.update;
Scheint keinerlei Auswirkung zu haben. Schade.
Vielleicht eine andere Lösung?
Geh bei der Klasse Spriteset_Map im Scripteditor auf die Zeile (vermutlich) 119 (dort müsste der Code:
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
stehen).
Dort fügst du noch weitere @tilemap.update ein.
Genau da habe ich es ja. Es funktioniert leider nicht.
Habs bei mir ausprobiert. Bei mir funktioniert es oO
Bei mir klappt es schenibar nicht. Egal ob ich mit Semikolon nebeneinander den Befehl eingebe oder untereinander. Die Autotiles sind genauso langsam wie vorher. :(
Der Drake
19.02.2006, 16:18
Bei mir klappt es schenibar nicht. Egal ob ich mit Semikolon nebeneinander den Befehl eingebe oder untereinander. Die Autotiles sind genauso langsam wie vorher. :(
Das kann eigentlich nur heißen, das der Code nicht ausgeführt wird. Hast du andere Skripte in deinem Spiel die diese Passage vielleicht überschreiben und/oder abändern?
Aaah, siehste mal. Ich habe nur ein Script eingebaut und das war das Anti Lag Script und das hat tatsächlich diese Funktion blockiert. Jetzt klappt es. Wie schön das man nicht die ganze Tilemap Klasse umschreiben muss. Meine billige Idee hat tatsächlich funktioniert. :)
Könnte denn das mehrfache Updaten der Tilemap bei schwächeren PCs zu mehr Rucklern führen? Ich wollte nämlich die Systemvorraussetzungen so niedrig wie möglich halten.
Der Drake
19.02.2006, 19:32
Aaah, siehste mal. Ich habe nur ein Script eingebaut und das war das Anti Lag Script und das hat tatsächlich diese Funktion blockiert. Jetzt klappt es. Wie schön das man nicht die ganze Tilemap Klasse umschreiben muss. Meine billige Idee hat tatsächlich funktioniert. :)
Könnte denn das mehrfache Updaten der Tilemap bei schwächeren PCs zu mehr Rucklern führen? Ich wollte nämlich die Systemvorraussetzungen so niedrig wie möglich halten.
Dazu müsste man wissen wie die Klasse intern funktioniert. Ich denke allerdings, dass die Map erst beim Aufrufen von Graphics.update gezeichnet wird und Tilemap.update lediglich die zugehörigen Daten aktualisiert.
Wenn das stimmt, sollte es die Performance nicht beeinträchtigen...
Bei mir machte es erst einen Unterschied bei:
300.times { @tilemap.update }
sollte also auch für schwächere Rechner verträglich sein.
Mehr als 25 werde ich wohl nie brauchen, von daher... :)
Noch eine Sache: Ich würde die Geschwindigkeit der Autotiles gerne per Variable steuern. Ich hatte es auch vorher in etwa so versucht:
case $game_variables(1)
when 2
2.times do @tilemap.update end
when 3
3.times do @tilemap.update end
else
@tilemap.update
end
Das ist ziemlich umständlich und ich fände eine Lösung so besser:
(Inhalt der Variable X).times { @tilemap.update }
Nur weiß ich nicht wie das genau lauten muss.
Warum das Ganze? Bei Wasserfällen z.B. brauche ich eine höhere Geschwindigkeit als bei anderen Autotiles.
PS: Mein anderes Problem (das mit den Charsets) besteht immer noch...Lösung anyone?
Der Drake
19.02.2006, 20:49
Nur weiß ich nicht wie das genau lauten muss.
$game_variables[1].times do @tilemap.update end
PS: Mein anderes Problem (das mit den Charsets) besteht immer noch...Lösung anyone?
hm? oo
Unter 'Game_Character 2' in Zeile 23:
if @anime_count > 18 - @move_speed * 2
einfach so abändern, das die Bedingung einfacher erfüllt wird. Wie genau musst du allerdings selbst abschätzen, je nachdem was gut aussieht.
$game_variables[1].times do @tilemap.update end
Ach doch so einfach. Hat auch gleich geklappt. :anime: Thx.
Ok, scheint so als wäre ich wieder am Anfang. Wenn ich beim Character Interpreter den Wert von 18 auf 16 runterstelle, so sieht das beim Player zwar gut aus, aber andere NPCs bewegen sich ziemlich abgehackt.
Hast's nur übersehen. ;)
Der Drake
19.02.2006, 23:38
Hast's nur übersehen. ;)
Ah... Nunja, ich glaube dafür hab ich auch keine instant-Lösung parat ^^°
Man muss wohl irgendwie rumprobieren... in deinem Fall vielleicht die Gleichung noch mehr von Bewegungsfrequenz oder dergleichen abhängig machen.
Ja, werde da mal rumprobieren. Wenn ich nur wüsste welcher Wert denn eigentlich wofür steht., dann könnte ich mir auch eine Formel überlegen. So hantiert man ja mit unbekannten Werten rum. Naja...
btw: Es gab gestern so komische Probleme mit dem RMXP. Als ich mit dem tilemap.update etwas rumspielte, hat das Game plötzlich wahnsinnig angefangen zu laggen. Auch als ich den Original Code wieder hingeschrieben habe. Das ging erst weg, nachdem ich den Maker neugestartet habe.
Dann noch was: Plötzlich konnte ich das Menü nicht mehr aufrufen - auch nicht bei anderen Projekten. War erst wieder normal als ich den PC neu gestartet habe.
Ach übrigens, danke nochmal für die Hilfe, werd dich in die Credits miteinnehmen.
:D
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.