Helligkeit verändern

  • #1, by MachtnixWednesday, 11. June 2014, 00:39 11 years ago
    Hallo,

    ich habe mir ein relativ simples Problem vorgenommen, aber anscheinend ist es gar nicht so simpel.

    Beim Betreten einer bestimmten Kulisse soll die Helligkeit langsam auf 10% abgesenkt und nach einer Pause wieder auf 100% erhöht werden. Ich möchte gerne eine Tag-Nacht-Simulation probieren.

    Zum Testen habe ich erstmal nur Zehnerschritte gemacht, angedacht ist später aber eine langsamere 1%-Abstufung (allerdings kann man den Helligkeits-Regler gar nicht exakt einstellen, deshalb gibt es statt 70% eben z.B. 71% oder 69% usw. Daran würde eine 1%-Abstufung schon scheitern....). Die Aktion liegt bei "Beginn der Kulisse".

    Nun ist mir aufgefallen, dass beim Verlassen und Neubetreten der Kulisse der Vorgang nicht jedesmal neu gestartet wird (wie ich annahm), sondern die Aktionen weiterlaufen. Die Person betritt die Kulisse also zum zweiten Mal und es ist dort schon abgedunkelt.
    Auch das anfängliche Setzen auf 100% und bei "Ende der Kulisse" ignoriert die Engine, das heißt, sobald der Vorgang gestartet wird, laufen die Helligkeitsänderungen durch und lassen sich durch Verlassen und Betreten nicht neu starten. Somit ergibt der Befehl "Am Anfang der Kulisse" ja gar keinen Sinn, wenn beim erneuten Betreten noch alte Zustände abgearbeitet werden.

    Naja, Tag und Nacht laufen ja auch automatisch weiter, egal, ob wo man steht... ;-) Ich könnte das Spiel nun so umbauen, dass mich das nicht weiter stört, aber hinterfragen möchte ich dieses Phänomen dennoch. Oder es gibt einen anderen Ort, wo ich die Aktionen plazieren könnte?

    Abgesehen davon wäre das ein perfektes Beispiel für ein Script (sind ja stupide 200 Mal dieselben Schritte)... allerdings weiß ich überhaupt nicht, wo ich da anfangen soll. Klar kann ich in ein LUA-Script eine FOR-Schleife einbauen, die Werte von 0 bis 99 ausgibt, aber ich muss den Befehl "Helligkeit ändern" ja auch irgendwie ansprechen. Alleine die Schleife bewirkt ja nichts. In der VED-Datei gestöbert, wie der Befehl dazu wohl heißen möge, bin ich nicht schlau geworden. Beispiel:

    <ActionPart name="Helligkeit auf 29% ändern" id="384" order="2" lastModified="-1" ActionPartCommand="115" ActionPartPath="" ActionPartInt="29" ActionPartAltInt="0" ActionPartAltInt2="0" ActionPartString="">
    <ActionPartLink parentLink="F" id="-1" tableId="-1" LinkAny="F"/>
    <ActionPartAltLink parentLink="F" id="-1" tableId="-1" LinkAny="F"/>
    </ActionPart>

    Vom Scripten bin ich noch meilenweit entfernt. Einige Beispiel-Scripte mit wirklich EINFACHEN Beispielen zum Verständnis wären hilfreich (z.B. ändere Outfit einer Person, lasse Person von A nach B gehen usw.). Wie sieht denn ein LUA-Script überhaupt aus? Gibt es eine Art "body", einen Main-Block? Muss ich Variablen deklarieren? Bibliotheken einbinden? Und, und, und...

    Gruß
    Machtnix

    Thread Captain

    1097 Posts


  • #2, by BigStansWednesday, 11. June 2014, 01:12 11 years ago
    Hier gibt's 2 antworten. Im 2ten Link findest Du 'nen komplettes Luascript.
    http://www.visionaire-studio.net/forum/thread/change-of-ligh...
    http://www.visionaire-studio.net/forum/thread/brightness-set...

    kurz wäre es:
    local CurrentScene=game:getLink(VGameCurrentScene)
    CurrentScene:setValue(VSceneBrightness, Wert)
    

    Wobei der "Wert" dann eine Zahl ist. Jetzt müsste man es so umbauen, dass es von 0 bis 100 "zählt". Was ein einfaches ist. Probiere es erst ruhig einmal in einer for schleife aus.
    Danach probierst Du es mal mit einem loop event.

    Lua lernen kann spannend sein und auch spass machen smile

    Great Poster

    361 Posts

  • #3, by MachtnixWednesday, 11. June 2014, 01:57 11 years ago
    Danke für die schnelle Antwort. Du machst gerade Fließbandbeantwortung, hihi...

    LUA werde ich nicht einsetzen, bevor ich nicht weiß, wie es funktioniert. Nur fremden Code einbasteln finde ich unbefriedigend. Habe gerade zwei deutsche Tutorials gefunden (leider nicht für LUA-Anfänger).

    Ich muss schon nachschauen, was local CurrentSzene und all das überhaupt bedeutet, erst recht, wie ich es einsetze und wie die Syntax/Semantik ist... :-( Werde mir wohl mal ein schönes LUA-Buch kaufen... hat mir bei PHP sehr geholfen. Ich hoffe, es gibt was in Deutsch.

    Dass es Spaß macht, bezweifle ich gar nicht. Ich muss aber bei Null anfangen.

    Machtnix

    Thread Captain

    1097 Posts

  • #4, by BigStansWednesday, 11. June 2014, 23:43 11 years ago
    Ja, das mache ich meist Abends ^^
    local Currentscene legt Dir praktisch 'ne variable an.
    local Currentscene = "Name"
    dann hätte die Variable Currentscene den wert "Name".

    php ist schon einmal nicht schlecht. Lua ist eine noch einfachere syntax.
    http://www.proggen.org/doku.php?id=user:madshadow:lua:progra...

    hab ich gefunden und mal drüber geschaut. Ist sehr gut beschrieben.

    Great Poster

    361 Posts

  • #5, by MachtnixThursday, 12. June 2014, 21:18 11 years ago
    php ist schon einmal nicht schlecht.


    :-) Leider hat es mich zu der Überzeugung gebracht, dass ich KEIN Programmierer bin und nie sein werde. Mit dem Thema glaubte ich "durch" zu sein...

    Zum Thema: Tag und Nacht-Simulation sieht mit "Helligkeit runtersetzen" nicht so dolle aus. Es wird einfach schwarz - so Gimmicks wie leuchtende Augen gehen dann auch nicht. Ich glaube, ich muss Outfits und Kulissen einmal in Tag-, einmal in Nachtversion basteln. Oder gibt es die Möglichkeit, nur die Kulisse oder den Charakter einzeln abzudunkeln...?

    Machtnix

    Thread Captain

    1097 Posts

  • #6, by afrlmeThursday, 12. June 2014, 21:53 11 years ago
    You can adjust individual scene brightness/contrast or global brightness/contrast. You can attach lightmaps to each scene which will adjust the hue/brightness of the characters based on their character center position in the scene/lightmap. It is also possible to use lua script to adjust the players hue etc.

    You could even add an overlay image (semi-transparent black/whites/colors) in the foreground so that it is above the scene & character. This would essentially work in a similar way to a lightmap but affect only the areas that it touches.

    here's a couple of quick examples for setting the scene brightness...

    current scene...
    game:getLink(VGameCurrentScene):setValue(VSceneBrightness, val) -- replace "val" with a number between 0 & 100.
    

    a specified scene...
    getObject("Scenes[scene_name]"):setValue(VSceneBrightness, val) -- same as above but replace "scene_name" with the name of scene you want to adjust brightness for (name is case sensitive).
    

    here is how to adjust the global (master) brightness/contrast of the entire game...
    setWindowBrightness(80) -- set new brightness value to 80%
    

    here's the link to the syntax page.

    I believe Glenfx's tutorials explains about lightmaps & how to use them.

    Imperator

    7285 Posts

  • #7, by MachtnixThursday, 12. June 2014, 22:17 11 years ago
    You can attach lightmaps to each scene which will adjust the hue/brightness of the characters based on their character center position in the scene/lightmap.


    Ah, right! I forgot this lightmaps. Sometimes they are very useful! They were explained In the tutorial by Fernandez. The overlay image works to increase or decrease the brightness, but I prefer to color the night scenes into more blue now, so I have to make new scenes and outfits, haven't I? Thx.

    Machtnix

    Thread Captain

    1097 Posts

  • #8, by afrlmeThursday, 12. June 2014, 23:16 11 years ago
    well maybe a background for day & background for night but you should be able to use lightmaps for each scene to control the hue of the characters.

    Lightmaps only affect the characters.

    An overlay would be an image containing semi-transparent colors that you add over the top of all the other images in a scene. Essentially if you created a semi-transparent blue image at the same size as the scene, then the whole scene ( or at least the bits that the overlay is over ) would be tinted a blue color & made darker. Technically you could actually create an overlay at 25% of the scene size & add as an animation & use lua script to scale up to 400% - to save hd space & decrease loading times, but this is not recommended for large scenes as it may not scale up correctly.

    Imperator

    7285 Posts