Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Code vereinfachung?



Nefer
02.04.2005, 18:11
Morgen zusammen!

Ich hoffe ihr könnt mir helfen. Ich sitze zur Zeit an einem Projekt im Harvest Moon Stil. Da ich aber keine Lust habe, 10000de Events mit entsprechenden 50 Seiten und verschiedenen Variablen zu bestücken, hab ich es wie folgt gemacht:
Die Events führen jeweils folgende Berechung durch: Nimm meine Koordinaten, such die dazugehörige Variable, dann ändere von ThisEvent die Graphik je nachdem, wie der Wert dieser Variable ist.
So, damit kann ich die Events kopieren, und muss an sich nichts ändern. Wenn ich auf die Farm-Map draufgehe, startet sich ein Event, dass alle bepflanzbaren Events durchgeht und startet, wenn sich z.B. ein Stein oder eine Pflanze drauf befindet.
Jetzt ist es wie folgt: Ich hab das ganze mit einem 10x10 Felder großem Stück Land probiert, habe so gut wie alles, was ich brauchte, geschrieben und hab jetzt die Events fröhlich kopiert. Mal abgesehen davon, dass mein Rechner jetzt etwas zum Sichern braucht, ist es aber jetzt so:
Das dauert 20 Sekunden, und ich habe erst ein Viertel der Farm mit Events bestückt.
So, meine Frage ist: Kennt jemand irgendwelche Methoden, den RPGMaker zu beschleunigen? (Was weiß ich, vielleicht macht es was, wenn ich die Berechnungen vereinfache oder die Coments rausnehme oder so. Hab von 3 Möglichkeiten das zu machen, schon die ausgewählt, die am wenigsten Zeit brauchte, aber jetzt bin ich verzweifelt.)
Gibt es da was, was das beschleunigen würde? Macht es zum Beispiel was aus, wenn ich während dem Event die Parallelen Prozesse rausnehme oder irgendwie sowas. Kann das beim besten Willen nicht alles ausprobieren. Hoffe auf irgendwas brauchbares,

Danke, Nefer

FF
02.04.2005, 18:58
ich kann mir das beim besten willen nicht so recht vorstellen!
zeig mal den code, oder lad ein script hoch!

aber mal ein allgemeiner tipp:
mach sehr viele waits von 0.1 secunde nach jedem pp und ce rein!

NPC Fighter
02.04.2005, 19:08
ich kann mir das beim besten willen nicht so recht vorstellen!
zeig mal den code, oder lad ein script hoch!

aber mal ein allgemeiner tipp:
mach sehr viele waits von 0.1 secunde nach jedem pp und ce rein!

Nein, besser 0.0 !!

*sichwiederinslochverzieh*

Nefer
02.04.2005, 19:18
Script hochladen?

Der Code sieht etwa so aus (stark vereinfacht und ähnlich basic, weil ich faul bin):


X = 3
Loop
Y = 12 (Das Feld beginnt an der Koordinate (3|12))
Loop
VariNr = X * 40 - 71 + Y (Damit ist der Event auf (3|12) der Variablen 61 zugeordnet, der auf (4|12) der Nr 101)
VariWert = Vari(VariNr) Variablennummer
If VariWert <> 0 (0 ist unbearbeiteter Boden)
Set EventID (X|Y) --> EventNr
If EventNr > 0
Eventpage = 1
Call Event (EventNr | Eventpage)
End Case
End Case
Y = Y + 1
If Y >= 51
Break
End Case
End Loop
X = X + 1
If X >= 42 (Das Feld endet an der Koordinate (42|51)
Break
End Case
End Loop


So Pi mal Daumen. Da ist eigentlich noch ein Teil drinne, damit ich einen Ladebildschirm sehe (weil ich das gerne überwacht habe), aber das tut denk ich nichts zur Sache
Das ist kein Paralleler Event, sondern den muss ich nur beim Betreten der Map ausführen, wenn man sonst was ändert (gießen oder so) dann ändere ich das eine Feld einzeln. Soll ich trotzdem Waits einsetzen?

Hoffe es ist jetzt verständlicher?!

FF
02.04.2005, 19:51
ab besten hinter jedem pp und auch jedem fork aslo

if xyz
asdadasd
wait (0.0)
else
asdasdasd
wait (0.0)
end
weiter im text

Nefer
03.04.2005, 13:36
ab besten hinter jedem pp und auch jedem fork aslo


PP heißt Parallel Prozess, oder? Die haben natürlich alle Waits, hätte aber sein können, dass 5 davon schon die Rechenleistung so beeinflussen, dass ein anderer Event langsamer geht.
Wegen dem mit dem Fork: Das hab ich ausprobiert, wird nur noch langsamer. Ist ja an sich auch logisch. Diese Schleife durchläuft es 1600 mal, wenn da jetzt 3 mal Wait 0.0 drinne steht, macht das 800*0.1 Wait = 80 sekunden?! Ganz schön viel, dafür geht es ja wirklich recht schnell.

MagicMagor
03.04.2005, 13:42
Hm.. erstmal dickes *thumbsup* Hätte nicht gedacht, daß jemand denselben Ansatz bei HM geht, wie ich es mal gemacht habe..

Wahnsinnig beschleunigen kann man den Maker leider nicht, er ist sehr unoptimiert geschrieben. Was du machen könntest, ist PPs einsparen, also lieber den Code von zwei PPs zusammen in ein PP packen. Wird zwar unübersichtlich, kann aber eventuell einen kleinen Schub geben. Ansonsten mußt du wohl damit leben..

Nefer
03.04.2005, 13:56
Hm.. erstmal dickes *thumbsup* Hätte nicht gedacht, daß jemand denselben Ansatz bei HM geht, wie ich es mal gemacht habe..
Danke. Und was ist aus deinem Ansatz geworden? Wenn man fragen darf.


Wahnsinnig beschleunigen kann man den Maker leider nicht, er ist sehr unoptimiert geschrieben. Was du machen könntest, ist PPs einsparen, also lieber den Code von zwei PPs zusammen in ein PP packen. Wird zwar unübersichtlich, kann aber eventuell einen kleinen Schub geben. Ansonsten mußt du wohl damit leben..
Sehr schade. Aber das mit den PPs werd ich dann mal machen. Bin eh ein Chaot, da kommt's dadrauf nicht an.