Ergebnis 1 bis 14 von 14

Thema: Lichtquellen in Kombination mit Spieler Fackel (XP)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Ich habe mir das Script einmal schnell angeguckt, das ist im Grunde das selbe was ich getan habe. Ich würde allerdings nicht raten es zu benutzen da man an vielen Stellen erkennen kann, dass ineffizient gearbeitet wurde.
    Nicht schlampig, es hat schon ganz gute Qualität und funktioniert sicher auch, allerdings ist die Art und Weise wie einiges gemacht wurde nicht optimal.

    Trotzdem, wie es aussieht ist es das gleiche vorgehen. Vielleicht kann ich eine nutzbare Demo ausarbeiten, aber nicht heute denke ich.

  2. #2
    Hey,

    Hmmm, klingt ja interesannt. Vllt. Hilft das hier auch noch weiter, ist das erwähnte light circle script, dieses hat auch bewegende lichtquellen : http://www.hbgames.org/forums/viewto...274e66d8a031aa

    Beim youtube video sieht man (zumindest auf den ersten blick) dass das prima funktionieren kann ohne zu laggen, wenn odentlich umgesetzt.

    greetz

    Geändert von schmoggi (20.02.2012 um 15:05 Uhr)

  3. #3
    Hier ist eine schnelle Skizze was man damit machen kann. "Relativ" effizient und einfach zu bedienen.
    Was man ändern kann ist die Stärke der einzelnen Lichtquellen und die generelle stärke der Lightmap selbst. Die generelle stärke der Lightmap kann ohne Probleme zu jedem Zeitpunkt verändert werden, die Stärke einzelner Lichtquellen wäre recht Zeitintensiv von der Arbeit her.
    Hier allerdings in diesem Projekt sind diese Funktionen noch nicht eingebaut.

    Außerdem gibt es noch keine sich bewegenden Lichtquellen, das wäre von der Performance her eine ziemliche Bremse.

    Ich habe zwar eine Idee wie bewegliche Lichtquellen mit diesem System vielleicht umzusetzen wären, allerdings wäre das ganze Prozedere relativ kompliziert. Man müsste nämlich für jede Lichtquelle welche sich bewegt hat, hoffentlich nur eine in den meisten Fällen, überprüfen welche anderen sich Lichtquellen vor der Bewegung mit dieser überschnitten haben. Falls sich welche überschnitten haben sollten müsste die Lightmap an dieser Stelle nämlich neu berechnet werden.
    Im Moment geht es nur die gesamte Lightmap auf einmal zu erstellen was zu viel Arbeit ist als dass man diesen Prozess in jedem Frame einmal ausführen könnte.

  4. #4
    Hey,

    Ich habs mir mal angeschaut... sieht ja eigentlich auf den ersten Blick nicht schlecht aus (oder?), also ich finde zu leistest klasse arbeit ^^ (hier müssten sich noch mehr rgss gurus dazu gesellen). Das Ding ist nun der Lichtkegel für den Spieler selber (der ja auf dem Spieler bleiben sollte beim laufen). MMn könnte darauf momentan Priorität gelegt werden und nicht zu vergessen das darstellen der Lichter, die auch nur wirklich vom Spieler gesehen werden können (Performance schub). Bewegbare Events (NPC'S etc.) können hinten dran.

    Ich empfehle dir auch nochmal das Skript dir anzuschauen http://www.hbgames.org/forums/viewto...274e66d8a031aa
    Vielleicht kannst du daraus schlüsse ziehen, wie du es vielleicht performanter gestalten kannst, gerade auf die bewegenden Lichtquellen bezogen (in diesem Skript gibt es ja welche).

    greetz

    Geändert von schmoggi (20.02.2012 um 23:53 Uhr)

  5. #5
    mh.. interessant.. ich werd den Thread hier auf jeden Fall weiter verfolgen..

    ich hab leider auch noch keine Möglichkeit gefunden, wie man bewegliche Lichtquellen in Kombination mit drumherum abgedunkeltem BIldschirm erzeugen könnte..
    Eine Lightmap wird wohl grundsätzlich keine optimale Lösung sein - wie Cornix schon erwähnte, würde es mit massiven FPS Verlusten verbunden sein, wenn die Lightmap dauernd neu gezeichnet werden müsste..
    Das Light Circles Script scheint dieses Problem mehr oder weniger zu umgehen, indem es eben diese gerasterten Lichteffekte erzeugt.. (was schneller geht) Das Ergebnis ist aber leider nicht sonderlich schön..
    Man müsste also einen anderen Weg finden, die Lightmap möglichst "sparsam" neu zu zeichnen.. Cornix Idee, einfach nur an der Stelle zu überarbeiten, an der sich ein Lichteffekt bewegt hat, wäre einen Versuch wert.. Das dürfte für dein Problem, mit nur einer beweglichen Lichtquelle, wahrscheinlich sogar gut funktionieren.. Bei mehreren beweglichen Quellen wird das aber wahrscheinlich wenig sinnvoll sein. Die Überprüfung vorher, welche Bereiche denn nun neu gezeichnet werden müssen, werden dann wohl (inklusive der Neuzeichnung der entsprechenden Bereiche) aufwendiger, als wenn man einfach alles neu zeichenn lässt..

    Vielleicht gibs auch noch nen ganz anderen Weg.. das Script in dem Video scheint ja ganz gut zu funktionieren.. Allerdings kann man da auch noch nicht erkennen, ob das wirklich ruckelfrei läuft, bzw. wie es bei mehreren Lichtquellen aussehen würde..

    Geändert von Mort_ (21.02.2012 um 12:23 Uhr)

  6. #6
    Joa hmm... mit Blick nach vorne gerichtet ist die immer wieder aktualisierende Lightmap Methode vllt. nicht der richtige Weg, das kann gut sein. Ich weiß nicht, wie man technisch (wenn überhaupt umsetzbar) an soetwas herangeht... aber theoretisch gesehen stelle ich mir das System im optimal fall so vor:

    Das Skript sieht beispielsweise bei nem Event das # Zeichen im Namen und weiß jetzt, aha, das ist eine Lichtquelle. Die Grafik dieser Lichtquelle (welche ja dann die Form des Lichtbereiches darstellt) ist die Event Grafik selber (oder im Comment ist mit Name=Licht1.png die Grafik angegeben.. das ist relativ egal), also beispielsweise ein normaler Kreis mit nem schönen Farbverlauf von schwarz nach transparent. Im Comment in der Event Befehlsliste steht nun noch Opacity=200, das bedeutet dieser Bereich wird nicht 100% aufgedeckt, sondern eben nur fast (die eigentliche Grafik wird mit einer Opacity von 200 in dem Fall angezeigt). So, nun habe ich mein overlay screen Bitmap, also ein weises/schwarzes bild (640x480), wahlweise mit nem transparenten Bereich in der Mitte (Spieler Fackel). Überschneidet jetzt diese overlay Grafik Events, welche Lichtquellen sind, werden diese Bereiche (welche von der Lichtquellen Grafik vorgegeben sind) nicht überdeckt bzw. sie bleiben transparent (je nach opacity wert).

    Zumindest sieht so meine Vorstellung von der Funktionalität aus :/...

    EDIT:

    Was mir gerade spontan in den Sinn kam:

    Wie sähe es aus, wenn man eine Lösung über die Color Screen Tone Funktion versuchen würde? Ist nur eine Idee, vielleicht ist es im Grunde das gleiche was schon versucht wird, ich weiß es nicht.
    Darunter stelle ich mir gerade vor, dass man die Change Screen Tone Funktion vom Maker erweitert (oder eben eine neue erstellt), wo eben durch Events etc. festgelegt werden kann, dass bestimmte Bereiche von diesem Tone Change ignoriert werden!?

    EDIT 2:

    Eben auf YouTube gefunden: http://www.youtube.com/watch?v=qSI_Df0gBks

    Zwar ohne schöne verläufe, aber vllt. passiert da noch was.

    greetz

    Geändert von schmoggi (22.02.2012 um 17:57 Uhr)

  7. #7
    Der Großteil des Scripts ist bereits fertig, allerdings gibt es noch einen kritischen Bug im Code an einer essentiellen Stelle.
    Ich habe noch nicht die Zeit gefunden um den Code ein zweites Mal zu überprüfen um den Fehler zu lokalisieren, denke jedoch, dass es sich wahrscheinlich nur um einen Flüchtigkeitsfehler handeln wird und nichts konzeptionelles. Zumindest hoffe ich es.

  8. #8
    Hört sich ja echt klasse an! Bin gespannt, wie das Endergebniss ausschaut. Hoffe, du bist so freundlich und stellst es der Allgemeinheit (u.A. mir) zur Verfügung.

    greetz

  9. #9
    Ich habe nicht nur vor es zu veröffentlichen sondern viel mehr will ich vor allem auch das Konzept dahinter und die Algorithmen erklären. Ich finde das ist eine sehr interessante Angelegenheit.

  10. #10
    Ich bin schon vorher auf diesen Thread aufmerksam geworden und bin in meinem Spiel auch an einer Stelle in der ich Fackeln, Licht, Wachen etc. habe bzw. brauche.
    Also habe ich mich mal nach diesem Light Script aus dem Youtube Video umgesehen, ebenfalls nirgends gefunden (nur Beiträge von dir schmoggi, international auf der Suche nach diesem Script ). Ich hab also nach dem Benutzernamen des Youtube Users genauer geschaut und bald herausgefunden das der User aus der brasilianischen Community stammt. Nach durchforsten der brasiliansichen Scriptabteilungen habe ich eins gefunden, das dem von Raziel sehr ähnlich ist. Ich vermute jetzt einfach mal das das Script in dem Youtube Video nicht seins ist, sondern das was ich gefunden habe. Lange Rede, kurzer Sinn.

    Ich wollte es hier posten, aber vorher würde ich es gerne aufbereiten (sprich übersetzen, kompatibel machen) und dann für alle User zur Verfügung stellen...morgen oder so.
    Übrigens stimmt es das die Lichtkegel Pictures sind, also auch freie Lichtformen.

  11. #11
    Hey,

    Das kommt unerwartet ^^... aber warum nicht!? Dann hätten wir ja schonmal zwei Skripte und jeder kann nach Belieben/Anforderungen sich eines aussuchen. Außerdem kann man ja dann von einander lernen bzw. verschiedene Herangehensweisen begutachten und mögliche schwachstellen so gekonnt ausmerzen. Ich bin jedenfalls gespannt, auf beide Skripte!

    greetz

Berechtigungen

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