Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 2334

Thema: Programmwunsch und -erstellungsthread #2

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    "Anzeigeleisten"? ^^ Das kann natürlich auch sowas wie eine 4stellige Zahl sein, für die man dann bekanntlich 4x9 Forks braucht.

  2. #2
    Zitat Zitat von IndependentArt Beitrag anzeigen
    "Anzeigeleisten"? ^^ Das kann natürlich auch sowas wie eine 4stellige Zahl sein, für die man dann bekanntlich 4x9 Forks braucht.
    Was du brauchst ist der Picture Pointer Patch. Damit brauchst du dann bekanntlich 0 Forks für eine Zahl.

  3. #3
    der hat nichts mit dyn zu tun oder? hab bei der liste der dyn sachen nix gefunden. hast du nen link zufällig?

    (ich weiß natürlich nicht, wie das dann funktioniert. MarcL hat mir gestern versucht zu erklären, was ein pointer ist, so mit mäßigem erfolg. aber ich finde es bestimmt heraus ^^)

  4. #4
    http://cherrytree.at/cms/lang/de/download/?did=19
    Laut Readme findet sich in dem Demopropjekt ein Zahlenbeispiel. Viel Spass damit, wenns irgendwo klemmt, frag einfach.

    Geändert von Corti (20.03.2014 um 12:52 Uhr)

  5. #5
    Zitat Zitat von IndependentArt Beitrag anzeigen
    MarcL hat mir gestern versucht zu erklären, was ein pointer ist, so mit mäßigem erfolg. aber ich finde es bestimmt heraus ^^)
    Im dazugehörigen >>Thread<< gibt es einige weitere Erklärungen von Usern, die dir vielleicht weiterhelfen.

  6. #6
    Gibt es eine Möglichkeit neue Checkmarks und Eingabefelder in die F8-Database einzubinden und mit entsprechenden Indeces (Ptr auf integer / booleans) zu verknüpfen?

    Im 2k3 fehlt unter MonsterGroup bei dem Alignment/EnemyPlacement eine Checkbox für 'randomize group'.
    Für alle Monster, abseits des ersten Monsters ohne hidden_flag, kann mit 50% Wahrscheinlichkeit die hidden_flag automatisch gesetzt werden.
    Der dazugehörige Pointer wäre +1C auf MonsterGroupParam:
    +04 = MonsterGroup_ID
    +08 = MonsterGroup_Name
    +0C = Ptr on MonsterList
    +10 = TerrainAmount
    +14 = Ptr on TerrainArray(?)
    +18 = Ptr on BattleEvents
    +1C = RandomizeHiding_flag (0|1 = false|true)
    +20 = EnemyPlacement_flag (0|1 = manual|auto)




    P.S.
    random stuff:

    Conditions, die HP abziehen, bleiben nicht bei 1 HP stehen:
    Zitat Zitat von DynRPG.ini
    [QuickPatches]
    PoisonKills=4BF98E,89431485C0751089DA9242E87E06000089DAE8AFD5FDFF2B7B1431C0B07F89437833C989FA8BC3E82AFCFFFF90
    CharSets im Shop bleiben farbig, selbst wenn entsprechende Items nicht genutzt werden können:
    Zitat Zitat von DynRPG.ini
    [QuickPatches]
    NoGrayShopper=493EC0,00
    RPG_RT2k v1.07:
    0x70BDB: 01 set 00

    Kein Aufleuchten bei EnemyBehavior: Transform.
    Zitat Zitat von DynRPG.ini
    [QuickPatches]
    TransformFlash=4BDF08,5858589090
    RPG_RT2k v1.07:
    0x7EE92: E8 BD FD FF FF set 58 58 58 90 90



    Geändert von bugmenot (26.03.2014 um 21:21 Uhr)

  7. #7
    AntiLagSwitch 2k(3)
    download AntiLagSwitch




    Geändert von bugmenot (28.03.2014 um 14:49 Uhr)

  8. #8
    Also werden nur die Events geupdated, die von einem Change Switch bzw. Change Variable direkt betroffen sind?

  9. #9
    Erm... immer wenn irgendetwas passiert (oder der entsprechende Eventbefehl erfolgt), das die PreConditions auf der linken Seite von Events erfüllen könnte (ChangeSwitch, ChangeVariable, AddItem, ChangeParty, ChangeTimer) ... erfolgt nach jedem solchen Eventbefehl ein EventUpdate, das ALLE Events auf der momentanen Map und ALLE CommonEvents anvisiert.

    Wenn man im Hintergrund irgendwelche Logik- oder Arithmetik-Prozesse laufen hat, die aus zig Zeilen bestehen, die in jedem Frame wiederholt werden... kann man entweder einen 0.0 wait setzen (damit das Spiel Zeit hat, sich wieder zu beruhigen... dann muss man aber auch mittendrin waits setzen, weil 2 Frames warten statt vorher 1 ohne wait auch nicht viel bringen könnte...) ...oder halt das Auslagern von Rechenarbeit auf das Durchchecken von mehreren hundert Events unterbinden.

    Diese Maker waren nie darauf ausgelegt, mit vorgegebenen Mitteln, irgendetwas großes durch den Nutzer ausrechnen zu lassen.

    Der Patch wird leider kein generelles Laggen durch riesige Maps mit hunderten sich bewegenden Events oder durch ständige Festplattenzugriffe durch unnöttiges <ShowPicture> beheben.


    Edit:
    Zitat Zitat von Cherry Beitrag anzeigen
    Parallele Events laufen nicht komplett durcheinander. Ein Event läuft solange ungestört, bis es entweder einige Tausend Befehle ausgeführt hat (weiß gerade die Zahl nicht) oder an einen Befehl kommt, der bis zum nächsten Frame wartet (dazu gehört Wait, aber auch das Ende eines PPs oder Befehle wie Open Save Menu, etc.). Daher, wenn man nicht eine Schleife ohne Wait baut (was man eh nicht sollte), sodass man an das Befehlslimit kommt, kann man davon ausgehen, dass zwischen zwei Befehlen die nicht auf das nächste Frame warten (und dazu gehören ja Variablen-/Switch-Operationen und Bedingungen) nichts anderes dazwischenfunkt.
    Solange man einen Block an ForkConditions + Switches + Variables hintereinanderreiht und vor und nach dem Block Switch[1000] an/ausschaltet, sollte es selbst bei parallel laufenden Events keine Probleme geben.

    Geändert von bugmenot (26.03.2014 um 11:21 Uhr)

  10. #10
    Die Checkerei wird also bei jeder Aktion durchgeführt, die die Seitenbedingungen betreffen könnte?

    Es erschliesst sich mir halbwegs, warum das bei dem Event durchgeführt wird, aus dem der Befehl stammt,
    da sich mitten im Frame etwas Wichtiges ändern kann, aber alle überprüfen? Es hätte ja eigentlich gereicht,
    wenn diese durchgecheckt werden, sobald sie in der Ausführung im derzeitigen Frame dran sind. òo

  11. #11
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Die Checkerei wird also bei jeder Aktion durchgeführt, die die Seitenbedingungen betreffen könnte?
    Was mit den CommonEvents ist, kann ich nicht genau sagen. Aber bezüglich von MapEvents werden in einer 'for i = 1 to EventAmount'-Schleife die Parameter des jeweiligen Events abgerufen und gleich hinterher die Seitenbedingungen durchgecheckt. Bei jeder solchen Aktion, die ein EventUpdate ausführt. Ohne irgendwo mittendrin zu warten.

  12. #12
    Sagt mal Leute, wäre es möglich eine Art eigene Scene zusammenzubauen?
    Also ich meine ein komplett eigenes Menü, aber im Standardstil, ohne Pictures etc. zu verwenden. Dass man das ganze praktisch hardcoded?

  13. #13
    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?

  14. #14
    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 (05.09.2014 um 23:15 Uhr)

  15. #15
    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 06:34 Uhr)

  16. #16
    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 10:24 Uhr)

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

  18. #18
    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.

  19. #19
    Zitat Zitat von Cherry Beitrag anzeigen
    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?
    Also ich hab nicht probiert, ob das mit diesem neuen Antilag-Patch Probleme verursacht, aber eine Situation würde mir einfallen, wo man zwischendurch neu evaluieren muss:

    Code:
    Event:
    
    Seite 1 (Paralleler Prozess, ohne Startbedingung):
    
    Message "A"
    Schalter 1 an
    Message "B"
    
    Seite 2 (Autostart, Bedingung Schalter 1 an):
    
    Message "C"
    Ausgabe muss sein: AC, das parallele Event bricht sofort ab, sobald eine andere Bedingung erfüllt ist.
    Wenn Seite 1 nen anderer Typ ist, ist die Ausgabe immer "ABC".

    Das Verhalten weicht übrigens beim XP und neuer ab, da ist die Ausgabe auch bei parallelen Events "ABC", ist also ne 2k/3-Besonderheit.

  20. #20
    Zitat Zitat von Ghabry Beitrag anzeigen
    Also ich hab nicht probiert, ob das mit diesem neuen Antilag-Patch Probleme verursacht
    Ohne Patch: AC
    Mit Patch: ABC
    Mit Patch mit [0.0 Wait] vor B: AC


    Zitat Zitat von Ghabry Beitrag anzeigen
    zwischendurch neu evaluieren
    Inwiefern?
    Wieder zum Ausgangszustand des "alle Events abklappern, wo Eventbedingungen erfüllt sein könnten und viele Frameeinbrüche verursachen" zurück?
    Einen CommentCommand @Update für einen erzwungenen Eventupdate einführen? (wovon ältere Spiele dann nichts haben)
    Sich darüber aufregen wie dämlich es sich anhört, den Code für irgendeine Funktion auf mehrere EventPages zu verteilen statt irgendwo intern zu verschachteln oder <CallEvent> richtig zu nutzen?
    Edit:
    "EventUpdate(Global)" = 1x je Frame, updatet jedes Event auf der Map nach einem Eventbefehl
    und
    "EventUpdate(Local)" = nach jedem einzelnen Eventbefehl, updatet nur das Event, aus dem der Befehl hervorgeht (+eigene EventPages)
    ?

    Geändert von bugmenot (08.09.2014 um 20:03 Uhr)

Berechtigungen

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