Ergebnis 1 bis 20 von 1418

Thema: Technik-Sammelthread für Probleme und Antworten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ähm, gibt es eigentlich eine performante Möglichkeit zu prüfen ob irgendeines von 31 Events auf einen von 11 Bodenschaltern steht? Dank RMEF konnte ich zwar recht fix den Code für die Abfragen generieren, allerdings ist das dann ne ziemliche Ruckellei(oh, wunder) und ich hab ja nicht mal den schwächsten PC, kann ich also so nicht hinnehmen. Bin an RM2k gebunden, DynRPG ist also keine Option.
    Der PP hat nen Wait von 0.1 Sek, mehr wäre nicht ganz so gut, denn die besagten Events sind ständig in Bewegung(und auch nicht auf festen Bahnen oder sonstwas).

    Gibt's da irgendeinen möglichen Trick oder sonst was?

  2. #2
    Wenn's ruckelt, hast du Mist gebaut, aber für diese Abfrage brauchst du bestimmt keinen hochkomplexen Code aus der Factory.

    Benutz [Get Event ID] auf den 11 Schalterpositionen und schau jeweils, ob sie einem der 31 Dinger entspricht, das sollte Makerchen
    schnell genug abarbeiten können. Vorzugsweise aber ohne Loop, sondern alle 11 hintereinanderweg, der Wiederholperformance wegen.
    Am Ende einen Wait 0 benutzen, reicht aus.

    Du könntest auch 11 Prüfevents auf die Schalter stellen, die alle niedrigere IDs als die anderen haben und schauen, ob die Event-ID
    auf ihrer Position nicht mehr ihrer eigenen entspricht, irgendwie könnte das auch gehen.

  3. #3
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Du könntest auch 11 Prüfevents auf die Schalter stellen, die alle niedrigere IDs als die anderen haben und schauen, ob die Event-ID
    auf ihrer Position nicht mehr ihrer eigenen entspricht, irgendwie könnte das auch gehen.
    Letzteres klappt ganz gut, ist mir dann sogar auch selbst eingefallen. Wenn mal was auf dem direkten Weg nicht ganz so klappt, stellt sich wohl erst die Denkblockade ein.^^'
    Danke.

  4. #4
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Bin an RM2k gebunden, DynRPG ist also keine Option.
    Wenn du an den Rm2k gebunden bist, kann ich dir für komplexere Sachen den DestinyPatch empfehlen! Der stellt eine Skriptsprache bereit, welche du in den Kommentaren notierst, und die dir auf fast alles Zugriff gewährt. Damit kannst du dann auch komplexere Skripte "leichter" umsetzen. Zählschleifen und erweiterte logische Ausdrücke sind schon was feines^^

    Zitat Zitat von MagicMaker Beitrag anzeigen
    Wenn's ruckelt, hast du Mist gebaut, aber für diese Abfrage brauchst du bestimmt keinen hochkomplexen Code aus der Factory.



    Am Ende einen Wait 0 benutzen, reicht aus.
    Ich könnte mir vorstellen, dass evtl. der Else-Handler - wenn er denn verwendet wurde - daran Schuld sein könnte. Also an dem Ruckeln. Ich habe auch schon desöfteren festgestellt, dass man die Engine ziemlich leicht zum ruckeln bringen kann, wenn man viele Else-Handler verwendet und die Reihenfolge der Abfragen nicht der "erwarteten" Häufigkeit entspricht. Dort ist es dann oftmals schneller keine Else-Handler zu benutzen, und das ohne sie zu lösen.

    Und eigentlich bräuchte man bei einem PP kein Wait 0 am Ende, weil ein PP automatisch ein Wait 0 am Ende des Event-Skriptes setzt Setzt man gar kein Wait in einem PP, so wird es - im günstigsten Fall - 60 mal in der Sekunde ausgeführt (60 fps). Es wartet also von vornherein schon einen Frame - also Wait 0 - bis es das nächste Mal durchläuft. Mit einem Wait 0 würde es also 30 mal durchlaufen pro Sekunde.

    PeAcE
    MorDen

  5. #5
    Also 30 mal in der Sekunde ist eh mehr als genug. Und gegen sich stapelnde Else-Handler kann man die Abfragen in Gruppen aufteilen und den nicht benutzten Code überspringen.

  6. #6
    Zitat Zitat von Nemica Beitrag anzeigen
    Also 30 mal in der Sekunde ist eh mehr als genug. Und gegen sich stapelnde Else-Handler kann man die Abfragen in Gruppen aufteilen und den nicht benutzten Code überspringen.
    Ob 30 mal die Sekunde genug ist, kommt wieder darauf an, was gemacht werden soll - wobei ich dir natürlich grundsätzlich Recht gebe. Normalerweise sollte das reichen. Nur ist es einfach gut zu wissen, wie der Maker seine Events abarbeitet - ist zumindest meine Meinung. Denn ein AutoStart-Event z.B. wartet nicht bis zum nächsten Frame, weswegen man damit auch ziemlich einfach die gesamte Engine lahmlegen kann.

    Man kann manchmal auch komplett auf den Else-Handler verzichten. Aber es ist stimmt schon was du sagst, ist alles ne Frage der Code-Strukturierung. Ich arbeite ja auch nicht erst drei Tage mit den Makern^^ Und der Else-Handler ist imo schlecht implementiert xD

    PeAcE
    MorDen

  7. #7
    Das mit dem Elsestapeln ging auch eher an Elvis Stein den Jüngeren.

  8. #8
    Also bei mir läuft ja jetzt alles. Destiny wollt ich jetzt nicht auch noch reinhauen und schon gar nicht kurzfristig lernen damit umzugehen(ist Contestprojekt, Abgabe: heute*hust*). Achja, ich hoffe übrigends dass du nicht extra für Zählschleifen den Destiny brauchst, würde mir sorgen machen.^^'
    Und selbst wenn ein PP den Frame abwartet, ohne Wait wird das auf Singlecores oft unverhältnismäßig lahm.

    Die Frage ist ja, wie man die klassische direkte Positionsabfrage denn für die Menge sinnvoll aufteilen könnte. Wenn ich das ganze jetzt mit Flächen gebraucht hätte, wär's erst recht was geworden.

    Aber naja, bei läuft ja jetzt alles soweit. Hoffe nur dass wirklich schwache Rechner da nicht irgendwie trotzdem überfordert werden(die Schalter sind ja nicht die einzigen Sachen die als PP laufen), hab sowas aber leider nicht mehr im Haus.

  9. #9
    Ob Singlecore oder Hexadecacore macht beim Maker keinen Unterschied, alles wird da auf einem Prozessorkern ausgeführt.

  10. #10
    Bloß kann das Ding dann ja nicht das ganze System mit runter reißen, das war eigentlich mein Punkt, sorry.

  11. #11
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Also bei mir läuft ja jetzt alles. Destiny wollt ich jetzt nicht auch noch reinhauen und schon gar nicht kurzfristig lernen damit umzugehen(ist Contestprojekt, Abgabe: heute*hust*). Achja, ich hoffe übrigends dass du nicht extra für Zählschleifen den Destiny brauchst, würde mir sorgen machen.^^'
    Und selbst wenn ein PP den Frame abwartet, ohne Wait wird das auf Singlecores oft unverhältnismäßig lahm.

    Die Frage ist ja, wie man die klassische direkte Positionsabfrage denn für die Menge sinnvoll aufteilen könnte. Wenn ich das ganze jetzt mit Flächen gebraucht hätte, wär's erst recht was geworden.

    Aber naja, bei läuft ja jetzt alles soweit. Hoffe nur dass wirklich schwache Rechner da nicht irgendwie trotzdem überfordert werden(die Schalter sind ja nicht die einzigen Sachen die als PP laufen), hab sowas aber leider nicht mehr im Haus.
    Nein, natürlich kann man kopf- und fußgesteuerte Schleifen im Maker nachbauen - keine Frage. Damit dann halt auch Zählschleifen. Aber dennoch ist es wesentlich komfortabler, wenn man sie direkt benutzen kann - darauf wollte ich eigentlich hinaus. Rein »theoretisch« kann man wirklich vieles mit dem Maker nachbilden - mehr oder weniger aufwändig, und mehr oder weniger performant. Und gerade Koordinaten getten scheint für die Maker-Engine echt schwerstarbeit zu sein. Hatte das mal getestet indem ich die Zeit gemessen habe, wie lange es dauert 500.000 mal die Koordinaten eines Events zu getten. Dabei hatte ich einmal komplett die Maker-Engine verpflichtet, einmal DynRPG für das getten der Koordinaten (dabei die Schleife per Maker Engine) und einmal die komplette Schleife in DynRPG/C++. Zeit war Maker > Maker/DynRPG > DynRPG/C++ (Wobei DynRPG/C++ extrem schnell war ( <1s ) )
    Wobei ich glaube, dass das jetzt nicht sonderlich neu und interessant war xDD

    Und normalerweise sollte es - wie Cherry schon sagte - egal sein, ob Dual- oder Singlecore, solange die Pro-Kern-Leistung hoch genug ist. Wobei ich dir Recht gebe, dass beim DualCore der Vorteil ist, dass Windows-Hintergrunddienste auf den zweiten Kern verteilt werden können.

    Was vor allem beim Maker noch zu beachten ist, ist dass JEDE Variablen-Operation die gleiche Zeit zu kosten scheint. Egal ob "+", "-" usw. Das interessante: Die Variablen-Range-Funktion braucht anscheinend auch genauso lange, wie eine normale Variablen-Operation an einer einzigen Variable o.O

    Und bzgl. sinnvoller Aufteilung kommt das wohl auch ganz auf die Aufgabe des Skriptes an.

    Zitat Zitat von Cherry Beitrag anzeigen
    Ob Singlecore oder Hexadecacore macht beim Maker keinen Unterschied, alles wird da auf einem Prozessorkern ausgeführt.
    Hexadecacore = 16 Kerne? ^^

    PeAcE
    MorDen

    Geändert von Morden (17.06.2013 um 08:06 Uhr)

  12. #12
    Zitat Zitat von Morden Beitrag anzeigen
    Was vor allem beim Maker noch zu beachten ist, ist dass JEDE Variablen-Operation die gleiche Zeit kostet. Egal ob "+", "-" usw. Das interessante: Die Variablen-Range-Funktion braucht auch genauso lange, wie eine normale Variablen-Operation an einer einzigen Variable o.O
    Das ist gar nicht so verwunderlich. Die meiste Zeit wird der Maker wohl für die interpretierung der Skriptzeile beanspruchen, danach für den Zugriff auf das VariablenArray. Die eigentlichen Rechenoperatiionen benötigen da nur minimalste CPU Zeit.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •