Seite 5 von 5 ErsteErste 12345
Ergebnis 81 bis 98 von 98

Thema: [DynRPG] RPGSS

  1. #81
    Zitat Zitat von Morden Beitrag anzeigen
    Könntest du nicht einfach die ID des Items in eine Variable schreiben und dann im Text "\i[\v[]]" machen?
    Ansonsten scheine ich das Problem gerade nicht zu verstehen bzw. weiß ich nicht genau, was du vorhast ^^"

    PeAcE
    MorDen
    ..Stimmt. Das wird wohl funktionieren, danke. °J°
    Trotzdem könnte kyuu das mit dem Heldennamen ja in die neue Version packen, wenn es nicht allzu kompliziert einzubauen ist. °-o

  2. #82
    Zitat Zitat von goldenroy Beitrag anzeigen
    ..Stimmt. Das wird wohl funktionieren, danke. °J°
    Trotzdem könnte kyuu das mit dem Heldennamen ja in die neue Version packen, wenn es nicht allzu kompliziert einzubauen ist. °-o
    Kein Problem.^^ Manchmal denkt man einfach komplizierter, als es sein muss xD.

    Klar sollte das noch mit rein - und ich denke nicht, dass der liebe Kyuu damit wirklich Probleme hätte^^

    PeAcE
    MorDen

  3. #83
    Zitat Zitat von Morden Beitrag anzeigen
    und ich denke nicht, dass der liebe Kyuu damit wirklich Probleme hätte^^
    Danke für das Vertrauen. :>


    Neuer Release

    rpgss-0.9.0.7z

    Code:
    Changes between 0.9.0 and 0.8.1
    -------------------------------
    
      * Optimized screen blending.
      * Added setter for Battler.name.
      * Shortened blend mode constants.
      * Added rpg.get[Item,Skill]Name.
      * Added rpg.get[Item,Skill]Description.
    
    Changes between 0.8.1 and 0.8.0
    -------------------------------
    
      * Image:drawText now uses the 'set' blend mode.
    Screen Blending wurde nun komplett in Assembler geschrieben. Leider lässt sich Screen Blending nicht mit SIMD optimieren, weil die Screen Buffer-Pixel im RGB565-Format sind und damit ungeeignet für SIMD (das Entpacken und Verpacken ist zu teuer). Dennoch ist Screen Blending in RPGSS äußerst schnell und mit der Implementierung in Assembler konnte ich größtenteils Verbesserungen von 50-100% erzielen.

    Kleiner Tipp an dieser Stelle: Wer viele und große Images jeden Frame zeichnet, kann bessere Performance erzielen, indem er die Images zuerst auf ein Image-Buffer und den Buffer dann auf den Screen zeichnet. Image-Blending ist in der Regel SIMD-optimiert und damit viel schneller als Screen-Blending.

  4. #84


    Partikel + Blend Modes = Awesome

  5. #85
    Echt genial! Die Zeichenmethoden von RPGSS sind echt hammer!
    Wird langsam echt mal Zeit für's offizielle DynRPG v0.2 ^^

    Wie sieht's mit der Performance aus, Kyuu?

    PeAcE
    MorDen

  6. #86

  7. #87
    Zitat Zitat von IndependentArt Beitrag anzeigen
    gibts das auch bewegt? ^^
    Ich denke es ist bewegt. Immerhin sprach Kyuu von "Partikeln"

    PeAcE
    MorDen

  8. #88
    Zitat Zitat von Morden Beitrag anzeigen
    Echt genial! Die Zeichenmethoden von RPGSS sind echt hammer!
    Freut mich, dass jemand sie nützlich findet. :>

    Zitat Zitat von Morden Beitrag anzeigen
    Wie sieht's mit der Performance aus, Kyuu?
    Wovon genau?

    Die Performance der Grafikroutinen? Echt schwer zu sagen, da die Performance von so vielen Faktoren abhängt (Prozessor, Blend Mode, Algorithmus, Anzahl der gezeichneten Pixel, etc.).

    Bei der Partikel-Demo unten schaffe ich beispielsweise 350 Partikel gleichzeitig auf einem Pentium 4 (3,4 GHz) bei 60 FPS. Auf einem Core i3 (3,3 GHz) schaffe ich mehr als das Fünffache (wobei die Anzahl der gezeichneten Pixel pro Frame bereits bei 350 Partikeln in Millionenhöhe liegt!).

    Wenn es dich interessiert, könnte ich ein paar Benchmarks veröffentlichen (wenn ich mal Zeit habe). Oder du machst deine eigenen Benchmarks. ;>

    Zitat Zitat von IndependentArt Beitrag anzeigen
    gibts das auch bewegt? ^^
    Download

  9. #89
    kranker scheiß

    really looking forward to whatever this is.

  10. #90
    Hey. Ich hab ne Frage.
    Folgende Map hat eine Lightmap.



    Diese benutzt verschiedene Photoshop-Blendmodes (Color Dodge, Overlay, Multiplizieren etc. etc.).
    Da sich diese ja nicht einfach so in den Maker übertragen lassen (zumindest nicht ohne Parallax), dachte ich, ich verzichte auf ein paar schönere Effekte und komprimier das ganze auf einen Effekt.



    Den LE-Manager kann ich ja aufgrund fehlender Unterstützung für BlendModes eh momentan streichen, deshalb habe ich mit den verfügbaren Blend Modes in spritelib rumgespielt.


    (Mix, 100 Opacity)


    (Multiplizieren)

    Wie man sieht, sind die Ergebnisse nicht wirklich ansehlich. Ist da irgendwas in die Richtung geplant? :0

    Geändert von goldenroy (31.07.2014 um 15:47 Uhr)

  11. #91
    Das erste Bild ist aus Photoshop (wobei es mehrere Layer sind; der unterste ist die Map und alle drüber liegenden sind Lightmaps mit unterschiedlichem Blending)? Und deine Frage ist, ob es möglich ist, die Blend Modes aus Photoshop hinzuzufügen? Habe ich das richtig verstanden? :o

    Neue Blend Modes hinzufügen ist kein Problem, ich müsste nur an die Blending-Formeln kommen. :<

    Was den LE-Manager angeht: In der Datei LightmapManager.lua, in Zeile 54, ist der Aufruf von game.screen.draw. Dort einfach den Aufruf um den Blend Mode-Parameter erweitern. Der Blend Mode gilt dann natürlich für alle Maps. Es ist selbstverständlich auch möglich den LE-Manager um mehrere Lightmap-Layer zu erweitern. Will den eh noch in der nächsten Zeit überarbeiten, damit Lightmaps eine Tiefe (Z-Position) bekommen.

  12. #92
    Zitat Zitat von Kyuu Beitrag anzeigen
    Das erste Bild ist aus Photoshop (wobei es mehrere Layer sind; der unterste ist die Map und alle drüber liegenden sind Lightmaps mit unterschiedlichem Blending)? Und deine Frage ist, ob es möglich ist, die Blend Modes aus Photoshop hinzuzufügen? Habe ich das richtig verstanden? .
    Das wäre optimal, ja. Im Moment ist die gängige Art für solche Lichteffekte, den Effekt direkt als Parallax mit der Map einzufügen. Dadurch werden natürlich Events und der Hero nicht vom Effekt erfasst, und diese müssen entweder manuell eingefärbt oder einfach ignoriert werden. Wenn man die direkt als Picture mit dem passenden Blend Mode einfügen könnte, sähe das echt super aus.
    Ich kann dir ja mal nen Breakdown der benutzten Blend Modes geben:

    Ganz unten ist natürlich die Map


    Dann Weiches Licht / Soft Light


    Ineinanderkopieren / Overlay


    Farbig Abwedeln / Color Dodge


    Multiplizieren / Multiply


    Und das wird einfach so drübergelegt


    Bezüglich der Formeln hab ich nicht wirklich Ahnung von der Implementierung, ich kann lediglich etwas googlen und >>sehr<< >>vielversprechend<< >>aussehende<< >>Ressourcen<< finden. °-o (Die obigen Bilder wurden übrigens in Photoshop CS5 gemacht, ich weiß nicht, ob sich da was über die Versionen geändert hat.)

    Geändert von goldenroy (31.07.2014 um 19:26 Uhr)

  13. #93
    Hm, ok. Multiply ist eh schon drin. Color Dodge und Overlay sollten kein Problem sein. Soft Light könnte für die Echtzeitanforderungen eines Spiels aber zu langsam sein, zumindest in der "exakten" Version (Wurzel muss gezogen werden). Das könnte ich aber mit einem LUT, oder mit einer angenäherten Version beschleunigen. Ich teste es mal am Wochenende aus.

  14. #94
    @goldenroy:

    Sorry, aber daraus wird nichts. Die Blend Modes sind ungeeignet für Software Blending in Echtzeit. Habe die Blend Modes bis jetzt zwar nur in C++ ausprobiert, aber selbst in Assembler wird sich vermutlich nicht viel ändern. Hätte ich bloß OpenGL + Shader zu Verfügung... :/

    Geändert von Kyuu (03.08.2014 um 17:11 Uhr)

  15. #95
    Okay, das ist schade, aber nicht allzu tragisch. ^-^
    Mir ist aber noch eine andere Sache aufgefallen: Gibt es einen simplen Weg, um festzustellen, ob sich ein Charakter bewegt? <Character>.moving gilt ja nur fürs Bewegen durch Move Event und es gibt afaik auch keinen Sprite-Offset (wie weit die Grafik vom eigentlichen Eventblock entfernt ist, wenn das != 0 ist, dann ist das Event ja in Bewegung). Es gibt natürlich den üblichen Weg über das abgleichen von Koordinaten, aber vielleicht hat Dyn ja Zugriff auf was simpleres als das. :0

  16. #96
    Zitat Zitat von goldenroy Beitrag anzeigen
    Gibt es einen simplen Weg, um festzustellen, ob sich ein Charakter bewegt? <Character>.moving gilt ja nur fürs Bewegen durch Move Event und es gibt afaik auch keinen Sprite-Offset (wie weit die Grafik vom eigentlichen Eventblock entfernt ist, wenn das != 0 ist, dann ist das Event ja in Bewegung). Es gibt natürlich den üblichen Weg über das abgleichen von Koordinaten, aber vielleicht hat Dyn ja Zugriff auf was simpleres als das. :0
    Echt? Das war mir noch gar nicht bewusst. Kann's jetzt auch nicht ausprobieren, da ich mitten in einem Systemwechsel stecke.

    Soweit ich mich erinnern kann, haben Character-Objekte aber einen Haufen Attribute, anhand derer der Maker Bewegungen interpoliert. Das heißt, es gibt höchstwahrscheinlich einen Weg herauszufinden, ob ein Character gerade in Bewegung ist, unabhängig davon, ob ein Move-Event oder was auch immer den Character bewegt. Ich schau mal was sich machen lässt, sobald ich wieder die Gelegenheit bekommen.

  17. #97
    Beim onComment des DynRPG wird ja als Argument die EventID des entsprechenden Events übergeben.
    Gibt es eine Möglichkeit diese ID auch beim RPGSS zu übergeben (z.B. mit einem zusätzlichen @callID das als erstes Argument die EventID an die LUA-Funktion übergibt.

    Edit:

    Warum wirft dieses Stück Code den Fehler "no member named 'charsetId'"? Ich möchte gerne das Charset durch das Script ändern lassen. Oder ist das nicht möglich?

    function change(eventID)
    event = game.map.findEvent(eventID)
    event.charsetId = 2
    end

    Geändert von benzor (09.08.2014 um 20:00 Uhr)

  18. #98
    Zitat Zitat von benzor Beitrag anzeigen
    Beim onComment des DynRPG wird ja als Argument die EventID des entsprechenden Events übergeben.
    Gibt es eine Möglichkeit diese ID auch beim RPGSS zu übergeben (z.B. mit einem zusätzlichen @callID das als erstes Argument die EventID an die LUA-Funktion übergibt.
    Ja, ist möglich. Ich baue es in die nächste Version ein.

    Zitat Zitat von benzor Beitrag anzeigen
    Warum wirft dieses Stück Code den Fehler "no member named 'charsetId'"? Ich möchte gerne das Charset durch das Script ändern lassen. Oder ist das nicht möglich?

    function change(eventID)
    event = game.map.findEvent(eventID)
    event.charsetId = 2
    end
    Weil ich noch keinen Setter für das charsetId-Attribut geschrieben habe.

    Bei einigen Attributen macht eine Zuweisung keinen Sinn, z.B. weil es keine Auswirkung hätte. Dort, wo ich mir nicht sicher war (und zu faul war zum Testen :>), habe ich den Setter vorerst ausgelassen.

Berechtigungen

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