Seite 105 von 117 ErsteErste ... 55595101102103104105106107108109115 ... LetzteLetzte
Ergebnis 2.081 bis 2.100 von 2331

Thema: Programmwunsch und -erstellungsthread #2

  1. #2081
    Danke! Meine Gebete wurden erhört!

    Ich hab wieder eine Idee! Es gab ja schon mal für den RPG Maker XP ein AntiLag-Script, das einfach Events, die außer Sichtweite waren angehalten hat (außer es waren Parallele oder Automatische Prozesse). Gibt's sowas auch schon für DynRPG?

    (vllt. sollte ich mal langsam halb lang machen, ich Spam hier sonst vor lauter Freude noch alles zu! :'D)

    Geändert von Stray (01.08.2014 um 02:57 Uhr)

  2. #2082
    Such mal bugmenots Posts durch. Irgendwo hat er was gemacht mit Optimierung der Performance, war aber ein Fix und kein Plugin.

  3. #2083
    Zitat Zitat von Corti Beitrag anzeigen
    Such mal bugmenots Posts durch. Irgendwo hat er was gemacht mit Optimierung der Performance, war aber ein Fix und kein Plugin.
    >>AntiLagSwitch<<?

  4. #2084
    Ja, den kenn' ich schon. Aber ich meine genau noch so etwas.

    Eigentlich suche ich auch viel mehr etwas, was die Route von Events erst beginnen lässt, wenn sie in Bildschirmnähe auftauchen. Aber beim XP hat das mit diesem Script auch funktioniert... :/

  5. #2085
    Zitat Zitat von Stray Beitrag anzeigen
    etwas, was die Route von Events erst beginnen lässt, wenn sie in Bildschirmnähe auftauchen
    Nennt sich Logik und eine Prise Mathematik. Vielleicht noch ein bisschen Coden mit den Funktionen, die dir das Werkzeug (mit dem du arbeitest) bereits zur Verfügung stellt.

    Wenn es trotzdem ruckelt, kannst du ja posten, welche Eventbefehle du am meisten ausführen lässt. Lösungen gibt es nur für definierbare Probleme.

    Zitat Zitat von Stray Beitrag anzeigen
    [...]Route von Events erst beginnen lässt, wenn sie in Bildschirmnähe auftauchen. Aber beim XP hat das mit diesem Script auch funktioniert
    Entschuldigung, dass ich dem jetzt ohne gentleman'sche Wortwahl antworte, aber das klingt dämlich. Also das Konzept von "Was nicht auf dem Screen ist, wird nicht aktualisiert".


    Die VXP-Reihe leidet an irgendetwas anderem, was die Performance so grottig werden lässt.

    Da helfen auch keine asynchronen Wasserfallgrafiken.

  6. #2086
    Na gut. Es hat beim RmXP damals zumindest geholfen. Es hat natürlich nicht das Problem beseitigt, dass der RPGXP ohnehin viele Ressourcen frisst usw.

    Es geht dabei auch um eine ganze Menge Events, da es ja sonst nicht laggen würde. Es wäre nämlich etwas großer Aufwand für eine große Anzahl an Ereignissen eine Horde an extra Variablen und co. für die Berechnung dessen, wann ein solches im Bildschirmbereich auftaucht aufzustellen und für jedes davon gesondert anpassen zu lassen.
    Aber es war nur eine kleine Idee und sicher ist die Performance vom Rm2k(3) in den meisten Fällen auch gut genug.

    Geändert von Stray (01.08.2014 um 19:56 Uhr)

  7. #2087
    Die Performance sämtlicher RPG Maker ist mit Ausnahme des XP hervorragend. Es sei denn, du hast einen wirklich alten PC.

    Beim XP hilft wiederum die Fusion mit dem VX Ace, d.h. du benutzt den RMXP mit RGSS3. Sofern du Skripte benutzt, müssten die dafür aber extra abgeändert werden.

    Die 2k-/2k3-Performance-Schwierigkeiten resultieren dagegen meistens aus diesen Sachen:
    - größere, rotierende Pictures (nicht bei jedem PC)
    - keine 0.0s oder 0.1s waits am Ende eines parallelen Prozesses
    - zu riesige Maps mit zuvielen Objektcharsets

    *senf

  8. #2088
    Zitat Zitat von Davy Jones Beitrag anzeigen
    Beim XP hilft wiederum die Fusion mit dem VX Ace, d.h. du benutzt den RMXP mit RGSS3. Sofern du Skripte benutzt, müssten die dafür aber extra abgeändert werden.
    Soweit ich weiß funktioniert dann die native Encryption vom XP allerdings ebenfalls nicht mehr.

  9. #2089
    Zitat Zitat von Stray Beitrag anzeigen
    eine ganze Menge Events, da es ja sonst nicht laggen würde.
    Sofern du nicht auf die Idee kommst mehr als 200 mal <MoveEvent> je Frame ausführen zu lassen. (Das kann man zB. mit einem 0.0 wait in 200er Blöcke aufteilen.) MovementRoutes sind da weniger anspruchsvoll im Hinblick auf Prozessorauslastung.



    Zitat Zitat von Stray Beitrag anzeigen
    großer Aufwand für eine große Anzahl an Ereignissen eine Horde an extra Variablen und co. für die Berechnung dessen, wann ein solches im Bildschirmbereich auftaucht
    Dazu braucht man insgesamt nur 5 (Hero_x, Hero_y, Event_ID, Event_x, Event_y). Für alle Events. Und nicht für jedes Event x Werte. Bei Differenz von Hero_x - Event_x falls kleiner -20 / größer +20 bzw. Differenz in y-Pos wird halt... ich weiß nicht... so eine Art SelfSwitch umgelegt, welcher die zweite EventPage aktiviert, bei der der MovementType auf [stationär] steht. Wenn das Event wieder im Screen ist -> SelfSwitch OFF, dann geht die MovementRoute soweit ich weiß da wieder weiter, wo sie unterbrochen wurde.

    Oder besser noch: Event_ID[xyz] bis Event_ID[zyx], welche sich in einem Bereich der Map aufhalten, erst stillegen, wenn man eine bestimmte Entfernung verzeichnet. Dann laufen die Events zumindest nicht mehr asynchron oder sonstwie ungeplant durcheinander. (Ich nehme mal an, auf das Problem stößt man mit dem XP Skript?)

    Item&EventPointer-Ersatz

    Aber es sieht auch irgendwo dämlich aus, wenn etwas, das aus dem Bild raus ist, auf einmal nicht mehr hinterherkommt.

    Geändert von bugmenot (01.08.2014 um 23:41 Uhr)

  10. #2090
    Zitat Zitat von goldenroy Beitrag anzeigen
    Soweit ich weiß funktioniert dann die native Encryption vom XP allerdings ebenfalls nicht mehr.
    Die XP-Verschlüsselungen wurden schon vor Jahren geknackt, dementsprechend ist der Kram so unnötig wie ein Kropf.

    Geändert von Davy Jones (02.08.2014 um 18:07 Uhr)

  11. #2091
    Ich möchte aber eine wirklich große Menge Events auf einer Map verwenden, die blöderweise alle gleichzeitig einen Parallelen Prozess bräuchten. Waits habe ich bereits überall eingefügt. Laggen tut es trotzdem immer wieder mal und ich bin mir nicht sicher, ob das auf jedem anderen Rechner noch genauso 'knapp-gut' läuft, obwohl mein Computer nicht gerade eine Low-End-Maschine ist. Er ist relativ neu und funktioniert gut.

    @bugmenot:
    Auch bei 5 Variablen wäre es bei der Menge an Events und den damit zu ersetzenden Variablen extrem, da in einem Event nicht nur die Werte abgespeichert werden, sondern auch in Bedingungen abgefragt werden, was auch wieder ersetzt werden muss. Ich benutze zur Zeit für jedes Event die selben Variablen, was verrückterweise sogar ganz okay funktioniert.

    Zitat Zitat
    Aber es sieht auch irgendwo dämlich aus, wenn etwas, das aus dem Bild raus ist, auf einmal nicht mehr hinterherkommt.
    In meinem Fall wäre es nicht so wichtig, weil es ein Sidescroller ist, bei dem sich der Bildschirm während des Spielens automatisch verschiebt.

    Geändert von Stray (14.08.2014 um 14:24 Uhr)

  12. #2092
    Zitat Zitat von Stray Beitrag anzeigen
    Ich möchte aber eine wirklich große Menge Events auf einer Map verwenden, die blöderweise alle gleichzeitig einen Parallelen Prozess bräuchten. Waits habe ich bereits überall eingefügt. Laggen tut es trotzdem immer wieder mal und ich bin mir nicht sicher, ob das auf jedem anderen Rechner noch genauso 'knapp-gut' läuft, obwohl mein Computer nicht gerade eine Low-End-Maschine ist. Er ist relativ neu und funktioniert gut.
    Wäre es nicht sicherer und einfacher die Events von einem globalen Loop-Event zu callen? So hättest du a) nur einen PP und b) verhinderst du von vornherein, dass sich die Events - wenn sie die gleichen Variablen nutzen - gegenseitig in die Quere kommen.

    PeAcE
    MorDen

  13. #2093
    Aber das würde ja bedeuten, dass man wieder für jedes einzelne Event neue Variablen schaffen muss - und gerade das will ich nicht.
    Die Überschneidung ist nicht das große Problem, denn die funktioniert sogar ganz gut, wenn man sie in den Griff kriegt.

    Geändert von Stray (27.08.2014 um 13:11 Uhr)

  14. #2094
    Zitat Zitat von Stray Beitrag anzeigen
    Aber das würde ja bedeuten, dass man wieder für jedes einzelne Event neue Variablen schaffen muss - und gerade das will ich nicht.
    Die Überschneidung ist nicht das große Problem, denn die funktioniert sogar ganz gut, wenn man sie in den Griff kriegt.
    Hi Stray. Vielleicht misverstehe ich das Problem mit den eigenen Variablen aber vielleicht hilft dir meine Vorgehensweise bei solchen Sachverhalten.

    Ich benutze für den Rm2k den Destinypatch und habe auf meinen Maps bis zu 40 Events die sich per Call einer Datenbankevents registrieren.
    Im Anschluss daran wird in einem einzigen Event der Datenbank über die IDs geloopt und je nach Eventnamen zu der ID oder weiteren Infos reagiert.

    Dabei ist der Destinypatch unersetzlich, denn er hat die Möglichkeit ein Events per ID aus einer Variable fernzusteuern oder sogar ihr Aussehen zu verändern.
    Das Minimum was du brauchst ist eine reservierte Anzahl von Variablen des RPGMaker für die ID-Liste.

    Falls deine Events Gegner sind, die eine gewisse Energie haben brauchst du logischerweise für jeden Gegner mindestens eine eigene Variable für die Energie. Der DestinyPatch bietet hier zusätzlich eigene Datentypvariablen an, die hierfür sehr praktisch sind.
    Du kannst damit beispielsweise die HP-Variable in den dworten des Destinypatch zusammensetzen aus (MapID * 1000) + EventID.
    d.h. Event 1 auf Map 1 = d[1001]
    Event 90 auf Map 150 = d[150090]
    Der DestinyPatch lässt maximal 900.000 dworte zu, soweit ich weiß.
    Auf diese Weise kannst du deinen Events eigene globale Variablen zugestehen aber du kannst ganz ohne konkrete Variablen arbeiten indem du die entsprechende Variable immer über die Formel (MapID * 1000) + EventID = dwordPointer erhälst.

    Kann man überhaupt verstehen, was ich meine?

  15. #2095
    Zitat Zitat von bugmenot Beitrag anzeigen
    AntiLagSwitch 2k(3)
    download AntiLagSwitch



    Könnten wir nicht die UpdateEvents-Funktion so umbauen, dass sie nur ein Flag setzt, und am Ende der Eventverarbeitung in einem Frame das eigentliche UpdateEvents ausführen, wenn das Flag gesetzt ist? Ich seh momentan keinen Grund warum man mehr als 1x pro Frame die Events aktualisieren sollte, was meinst du?

  16. #2096
    Zitat Zitat von Cherry Beitrag anzeigen
    [...]was meinst du?
    Der Einfall ist mir vor vier Monaten auch in den Sinn gekommen. Mir war aber kein freier Platz in den Pointern bekannt (ohne groß zusammenfassen + anpassen zu müssen) um die Flag unterzubringen, und keine Funktion bekannt, welche jeden Frame nur 1 mal abgerufen wird.

    Das lässt sich beides doch extern in einer DynRPG-Routine unterbringen?
    ...und die loop in loc_4AB8C5 verlassen, solange Flag = true (nach Durchlauf der Schleife setzen) und das ding/flag halt nach jedem Frame per externe Funktion auf false (= do not block EvUpdate) flippen. Warum brauchst du dafür meinen Konsens?



    P.S.
    Zitat Zitat von bugmenot Beitrag anzeigen
    [...]bis irgendjemandem einfällt, wie die Kämpfe nicht mehr crashen.
    Mir ist etwas eingefallen:

    download MapInMenu

    Keine Ahnung, was ein transparentes F9-Menü bringen soll. Credits an Cherry's erste 2k3 Version.

    Geändert von bugmenot (06.09.2014 um 00:15 Uhr)

  17. #2097
    Ich würd mir meinen eigenen Platz für das Flag suchen, z.B. 4CE100, oder irgendwo ein unbenutztes Byte klauen, wie z.B. Offset 5 (nach der Scene, die nur als Byte und nicht als DWord verwendet wird) in TLcfgSystem, also [[4CDC7C]]+5.
    Dann würde ich das richtige UpdateEvents (wenn nötig) einfach bei 4903AB machen, also nachdem die Scene geupdated, aber noch nicht gedrawt wurde (weil letzteres vom Maker ja auch geskipt werden kann wenn ersteres zu lange gedauert hat).

    Ich werd das bei Gelegenheit mal einbauen, wenn du es noch nicht gemacht hast bis dahin.

    Deinen Konsens: Naja, weil du den AntiLagSwitch gemacht hast, dich also schon mit den Auswirkungen auseinandergesetzt hast, wenn man UpdateEvents nicht aufruft, und daher, sollte meine Idee fehlerhaft sein, was gesagt hättest

    @all: Kann mir mal wer ein Spiel verlinken was derbe laggt (und zwar nicht wegen Show Picture)? Ein Real Life Example wär praktisch.

    Btw, ich frag mich ja auch woran es liegt, dass das Rotieren von größeren Pictures so extrem laggt. Ich vermute ja, dass sich der Frameskip-Mechanismus da selber ein Ei legt, sobald das Updaten länger dauert als 1/60 Sekunde (weil es das ja jedes Frame braucht).

    Geändert von Cherry (06.09.2014 um 07:34 Uhr)

  18. #2098
    Zitat Zitat von Cherry Beitrag anzeigen
    [[4CDC7C]]+5
    ... du meinst sicher das Byte neben der GameScene, welche durch den [MainPtr]+4 dargestellt wird?
    Wenn nicht, dafür sind die 90 90 da. GameScene auf [+4] wird sowieso überall als BytePtr gesetzt/abgefragt bzw. mit zero extend für jmp off_4...[eax*4] ausgelesen.

    Eine nicht so schwachsinnige Version.
    UpdateEvents setzt eine Byte_flag und in sub_4A35D0 wird dann die flag wieder = false gesetzt und das eigentliche UpdateEvents durchgeführt (ohne nach dem ersten EventBefehl zu blockieren).

    Zitat Zitat von Cherry Beitrag anzeigen
    @all: Kann mir mal wer ein Spiel verlinken was derbe laggt
    Frag mal Itaju, ob er noch den Downloadlink der semi-aktuellen Version von AtV hat.
    Oder copy&paste dir ein paar dutzend Events mit 100 EventPages (zählt dann als ca. 50 Events) zusammen und einige hundert mal inc(Var1) in einem parallel process.

    Geändert von bugmenot (09.09.2014 um 11:24 Uhr)

  19. #2099
    Ja, sollte alles beschreibbar sein... was crasht da bei dir?

  20. #2100
    Zitat Zitat von Cherry
    @all: Kann mir mal wer ein Spiel verlinken was derbe laggt (und zwar nicht wegen Show Picture)? Ein Real Life Example wär praktisch.
    Alone - Cold Winter und Eternal Legends 2. Allerdings ist ersteres mit Molebox verschlüsselt (deswegen auch die Ruckler) und bei letzterem kommt es auf den PC an, von welchem es gestartet wird. Bei einigen laggt es sich langsam bis zur Unspielbarkeit, bei anderen passiert garnix.

    Ansonsten fallen mir keine Spiele ein, die stark ruckeln.

Berechtigungen

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