Ich hatte schon länger den Gedanken, das Zeit-mess-Event, dass bei mir ja eh mitläuft, noch für andere Zwecke zu benutzen, wenn ich eben für irgendwas einen PP brauche, der was anzeigen soll. Natürlich darf ich das Wait dabei nicht verändern.
Aber mal rein theoretisch: Wenn ich verschiedene Befehle da reinhaue die keine Zeit brauchen, zB das ein Balken im Kampf blinkt o.ä., geht das irgendwann zu Lasten der Genauigkeit der Messung? Oder ist dem Maker egal, wieviel da noch durchläuft?
Es vergeht kein wahrnehmbarer Augenblick, solange du keine waitlosen Schleifen mit Sackgasse bzw zuvielen
Varianten hintereinander abarbeiten lässt, du Befehle benutzt, die das Event eh unterbrechen und auf den Spieler
erstmal warten, Zeit von sich aus vergehen lassen (wie ein Wait) oder die Hardware mit zuvielen Anweisungen
einfach nur überlastet ist, sollte eigentlich nie wirklich vorkommen.
Zu einer nicht-verschmerzbaren Abweichung sollte es nicht kommen, solange zwischen den Messungen auch
immer der richtige Zeitabstand eingestellt wird.
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.
Warum solltest du einen blinkenden Balken mit dem Zeitmesssystem verbinden?
Du solltest zwar wie du schon erkannt hasst nicht den Code deines Zeitevents mit Waits zum stottern bringen, du kannst aber folgendes versuchen:
1.Eine Variable jedesmal wenn der Code durchläuft +1 rechnen und dahinter ein Conditional Branch ob die Variable z.B 600 ist.
So kannst du dir einen Wait bauen ohne den Code anzuhalten.
2.Beim Ace kann ich in dem Common Event einen Set Move Route machen und irgend ein Event auf der Map Waiten lassen, dannach in der Moveroute einen Schalter umlegen.
An irgend einer Stelle des Codes machst du einen Branch ob der Schalter an ist, wenn ja passiert das was du wolltest. (Vieleicht geht das bei dem Maker den du benutzt auch)
Ich hab beide Ansätze nur grob angerissen, hoffe es hilft ansonsten weiter nachfragen.
Warum solltest du einen blinkenden Balken mit dem Zeitmesssystem verbinden?
...
Wie gesagt, um PPs zu sparen. Es gibt halt verschiedene Dinge, die ich gern machen würde, die alle einen PP benötigen und zwar einen einzelnen, weil sie ja nicht dauernd laufen sollen. Wenn man aber nun alles in einen packen könnte, der eh schon läuft, wäre das Performance-technisch super. Auch bei der Zustandsanzeige im Kampf hab ich einen PP verbraten, der aber aus ist, wenn niemand von einem Zustand betroffen ist.
Das hätte ich dann genauso gemacht, mit der Variable, wie dus beschrieben hast.
Beim Bsp. 2 bin ich nicht sicher, ob das für mich eine Rolle spielt oder ob ichs richtig verstanden hab. Ich benutze den 2k3, auch hier kann man switches(leider keine variablen) in move event einbauen.
Laggende Endlosschleife, die nix bringt:
Endlosschleife, die zumindest flüssig im Hintergrund funktioniert:
Schleife mit schlecht durchdachtem Ausbruch, der nie passiert:
Schleife mit ausgetüfteltem Ende:
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.
Liegt es an mir oder sind deine Aussagen widersprüchlich?
Zitat
Es spricht nichts dagegen diverse parallele Funktionen in ein PP zu klatschen.
...
und
Zitat
Je mehr Code man da rein packt desto ungenauer wird die Zeitmessung.
...
Das ganze klingt jetz so wie "Die Zeitmessung ist ja so oder so nicht genau, also macht es auch nix, wenn sie noch bisschen ungenauer wird."
Ist es das, was du sagen wolltest?
Also beim Ace ist die Länge des Codes erstmal zweitrangig solange man die Befehle so einstellt das nicht gewaited wird und auch so keine Waits vorkommen, bis auf
das 1Frame Wait bzw 0.0Frame Wait beim alten Maker am Ende der Schleife.
Wenn ich also z.B 20 Paralelle Events habe die alle nur kleinkram abfragen, so kann das schon zu Problemen führen wenn man wenig Performance über hat.
Es war bisher aber kein Problem ein Paralelles Event laufen zu haben, das bis zu paarhundert Conditonal Branches pro Frame abfragt.
Probleme können auch auftreten wenn man zuviele Sachen jeden Frame erneuert.
z.B mein Kampfsystem.
Damals hab ich die Koordinaten für die Events jeden Frame neubestimmt, zusätzlich wurde dann noch eine Trefferabfrage durchgeführt und weil mein Geschoss ein Event war,
so wurde die Trefferabfrage jeden Frame durchgeführt auf der 10 Felder langen Strecke bis zum Ziel. Da verzehnfacht bis sogar noch wesentlich mehr vermehrt sich der Code.
Heutzutage läuft nur noch die eine Actionstastenabfrage in der Schleife und alles andere wird einmalig ausgeführt wenn man es brauch.
Das geht besonders gut duch Call Common Events, deine common Events dürfen also normalerweise nie laufen und keine Bedingung haben.
So das sie immer ein aufrufendes Event brauchen , das ist sparsamm.
Manchmal ist es aber ok sachen in ein weitteres Paralelles Event einzubauen.
z.B eine Miene, das Paralelle Mienen Common Event wird erst aktiv wenn die Miene gelegt wurde und schaltet sich beim Mapwechsel aus sollte auf der nächsten Map keine Miene liegen.
So hab ich zwar Zeitweise ein zweites Paralelles Event am laufen, aber es ist ok.
Manchmal geht benutzerfreundlichkeit halt über das Ziel alles in einen Codestrang zu packen.
Edit: Beim Ace ist häufige Lag ursache: Viele haben einen Set Moveroute Befehl in einer Schleife der den Set Moveroute Befehl des Players jeden Frame neu aufruft obwohls nur einmalig müsste. Dadurch entsteht spürbares Lag. Hatte neulich jemand mit seiner Lauffunktion.
[1]Liegt es an mir oder sind deine Aussagen widersprüchlich?[...] [2]"Die Zeitmessung ist ja so oder so nicht genau, also macht es auch nix, wenn sie noch bisschen ungenauer wird."
...
zu [1]: Nein. Generell ist dein Ansatz durchaus clever, zumindest cleverer wie der anderer Helden, die lieber alles in einzelne CEs packen weil es einfacher ist und nachher meckern "Buh, mein Spiel hat nur 55 PPs zeitgleich und ruckelt >.<"
zu [2]: Ich bezwecke nicht dir zu sagen welche Kompromisse du in welcher Form eingehen solltest. Ich möchte dir die Tatsachen aufzeigen um dir zu erlauben einen Antwort zu finden, die deinen Prioritäten entspricht.
Kurzfassung:
PPs zusammen fassen ist generell eine gute, für die Performance förderliche Sache
Zeitmessung per PP ist technisch bedingt immer ungenau
Einen Zeitmessungs-PP mit anderen PPs zu kombinieren macht die Messung noch ungenauer.
Jetzt liegt es an dir. Niemand hier kennt dein Spiel und dann wissen welche PPs du wo hast und welche Variante die optimalste ist. Je nach PPs kann es locker flockig problemlos sein die Zeitmessung UND das andere PP zeitgleich zu haben. Die Chance dazu ist recht hoch. Vor Jahren hatte man noch viel schwächere PCs und es wurde noch schlampiger gescriptet, einfach weil man sich noch weniger Gedanken machte und meist gings auch gut.
Wenn du jetzt X verschiedene grafische Anzeigen, Koordinatenabfragen etc hast, dann könntest du überlegen die in den selben PP zu packen.
@Corti
Warum eigentlich eine Schleife in einer Schleife, also ein Sprung zum Label in einem ich sage mal "Thread", der sowieso immer wieder von vorne anfängt? Vielleicht hab ich auch nur missverstanden worum es eigentlich geht.
Hrm~ gute Frage Ist in diesem Fall wohl eher nicht nötig. Ich hab in dem Beispiel alles intuitiv und aus Gewohnheit mit Labels gemacht.Was speziell die Zeitmessung angeht, das kann man sicherlich auch in der Hauptschleife des CEs machen.
Wobei die Zeitmessung per PP immer ungenau sein wird, da PP's meines Wissens nach z.B. während eines Map-Übergangs nicht weiterlaufen. Auch überhaupt ein Wait mit in das PP zu setzen macht die ganze Sache schon ungenauer, da bei einem Wait von 1.0s schon ein 1.0s wait + ein 0.0 wait "ausgeführt" werden.
PeAcE
MorDen
--
»Ein Traum kann auch die Wehmut nach der verlorenen Vergangenheit sein…«
»Manchmal ist eine Enttäuschung auch einfach nur das Ergebnis zu hoher Erwartungen.«
__________________________________________________________________________
Außerdem würde das ja den ganzen Thread zunichte machen, weil ich dann keinen PP mehr brauche ^^ Wobei, doch, um Minuten und Stunden abzurechnen möglicherweise.
Falls Loops im Maker nicht aus irgendwelchen Gründen unperformant sind ist das ganz großer Schwachsinn.
Sprunganweisungen sollte man so selten wie möglich verwenden, besonders, wenn es korrekte Alternativen gibt. Sie werden nicht ohne Grund als schädlich angesehen.
Was wollen wir in diesem Fall machen? Eine Schleife. Also verwenden wir auch eine Schleife, alles andere wäre pants-on-head-retarded. Der Labeljump gibt uns nichtmal einen Performancevorteil, weil die Schleife nicht geschachtelt ist, es gibt keinen Grund ihn statt der Schleife zu verwenden.
Schon, aber wenn man die Bedingung und Ausbruchanweisung immer an das Ende einer Schleife setzt,
kann dieser nicht auftreten und es ist sowieso die praktischste Methode.
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.
Ich dachte der Bug heist USER der vergisst in einem Endlos Loop ein Wait einzubauen damit das Spiel nicht abstürzt .
Du könntest doch anfangen eine Funktion nach der anderen hier per Pictures vorzustellen, dann könnte man erstmal schauen ob der Kram allgemein schonmal vernünftig aufgebaut ist. Anschliessend oder währenddessen schaut man wie man es verschachteln kann.
Wäre auf jedenfall interessant zu sehen wie du deine Funktionen bisher umgesetzt hast.