DromEd-Tricks und -Kniffe - Folge 357: Die Sache mit den Kerzen

  • Hier mal eine Beschreibung, wie man statt der normalen Kerzen solche mit zappelnden Flammen machen kann, wie in "Wiedersehen mit Basso" zu sehen war. :)


    Es ist - je nachdem wie detailverliebt man ist - einfach bis anspruchsvoll und doch verwunderlich, daß die meisten FM-Autoren aufwendige Konstrukte mit SFXen machen, die eher an Mini-Fackeln oder britzelnde Dynamitstangen erinnern (in "Garretts junge Jahre" hatte ich es auch wenig überzeugend mit FireArrowGlows versucht).
    Auf der Suche nach Objekten, die nicht in der DromEd-Hierarchie der dark.gam definiert sind, fand ich einige Objekte, die das mit Flamme versehene Pendant der normalen Kerzen sind. Im Einzelnen sind das:


    DromEd-Name (Nummer) --- Objektdatei --- Objekt mit Flamme
    ----------------------------------------------------------------------------
    Candle1 (-182) ---------------- candle1.bin --- candle1l.bin
    Candle2 (-183) ---------------- candle2.bin --- candle2l.bin
    Candle+Stick1 (-184) --------- canstick.bin -- cansticl.bin
    Candle+Stick2 (-185) --------- canstic2.bin -- cansti2l.bin
    HangingLamp (-470) ---------- hlamp.bin ----- hlampl.bin


    Vielleicht erinnern sich manche noch, was alles in den Kerzen bei "Wiedersehen mit Basso" drinsteckte. Zum einen waren sie ausblasbar oder ließen sich per Wasserpfeil löschen. Dann war da noch das Pustegeräusch. Und außerdem tappten AIs, die neben einer ausgepusteten Kerze standen, im Dunkeln und regten sich darüber auf.
    Das sei jetzt mal nach und nach beschrieben.



    Phase 1: Wir machen aus dem dunklen Talglicht eine leuchtende Kerze mit Flamme.
    Wir stellen z.B. eine "Candle1" auf einen Tisch, modifizieren dann das Objekt per add>shape>Model Name:candle1l und sehen so die erwünschte Flamme auf dem Objekt, die sich im Spielmodus auch bewegt.
    Wer die in der RES-Datei verwendeten GIFs nicht besonders schön findet, extrahiere einfach die GIFs Flame2_.gif, Flame2_1.gif und Flame2_2.gif aus WiedersehenMitBasso.zip pfadgetreu in den Ordner ..\obj\txt, dann sieht die Flamme realistischer aus.
    Schließlich gibt man dem Kerzchen z.B. per Add>Renderer>AnimLight (Z-Offset +0.5) und Add>Renderer>LightColor noch das gewünsche Licht und fertig.
    Bei der HangingLamp ist das Zusatz-Licht unnötig, denn sie steht in der Hierarchie bereits unter den leuchtenden Objekten (allerdings dann ohne zu flackern).



    Phase 2a: Nun soll Garrett das Licht auspusten oder löschen können.
    Wir machen das so ähnlich wie bei den runden Leuchtpilzen. Nur die Sache mit dem Licht muß leider etwas anders geregelt werden, weil wir ja im Gegensatz zum Pilz "SlayResult=Normal" brauchen, es muß ja eine Aktion folgen.
    Erst stellen wir wieder unsere Candle1 auf und wandeln ihren Shape in eine Candle1l um.
    Dann vergeben wir Add>Engine Features>FrobInfo={Script;[None];[None]} und verpassen wir ihr per Add>S>Scrips>{FrobSlay} ein endliches Dasein.
    Wir geben der Kerze hierfür aber ein dynamisches Licht - Add>Renderer>DynamicLight: 30, da ein normales Licht nicht verschwinden würde. Bei der HangingLamp muß dazu der Eintrag des normalen Lichtes auf Null gesetzt werden.
    Add>Renderer>ExtraLight{0.2;[FALSE]} kann auch nicht schaden, denn eine Kerze wirkt durch die Flamme selbst etwas erhellt.
    Nun setzen wir noch einen Corpse-Link vom Kerzenobjekt auf -182 (also die normale Kerze ohne Flamme) ... und vielleicht noch einen weiteren Link auf ein SFX mit schwarzem Rauch (ein solches SFX gibt es standardmäßig nicht, es muß gemacht werden und fällt je nach Objekthöhe auch unterschiedlich aus - statt ellenlanger Beschreibung schaue man dazu einfach in die Gamesys von "Wiedersehen mit Basso").
    Dann optional Add>Schema>Class Tags: DeviceType Pust - dazu später mehr.
    Solche Kerzen lassen sich auch beliebig duplizieren, nur den Corpse-Link müssen wir jedesmal neu einfügen.


    Was aber macht Garrett mit den HangingLamps, die er nicht erreichen kann? Er nimmt den guten alten Wasserpfeil.
    Wir geben der Hängekerze den Shape hlampl aber kein FrobInfo, kein Script und auch nicht das Schema-ClassTag.
    Nun setzen wir noch einen Corpse-Link vom Kerzenobjekt auf -470 (also die normale Hängekerze) und noch einen weiteren, optionalen Link auf -1997, den SmokePuff.
    Dann vergeben wir noch ein Add>Act/React>Receptrons, und zwar den WaterStim mit dem Effekt SlayObject. Im einzelnen: Min=0.00, Max=None, TargetObject=Me.



    Phase 2b: Nun zum optionalen Pustegeräusch.
    Dazu extrahieren wir die pust.wav aus WiedersehenMitBasso.zip mitsamt ihrem Pfad.


    In die MISCSFX.SCH fügen wir ein:
    // Pusten
    schema pfff
    archetype DEVICE_MISC
    pust
    env_tag (Event Death) (DeviceType Pust)


    In die ENVSOUND.SPC fügen wir am Ende der Zeile
    tag DeviceType GenPotion TimedPotion [...] Pust ein.


    Dann in DromEd "reload_schemas" und die Gamesys sichern.



    Phase 3: Die AI sollen genervt auf die plötzliche Dunkelheit reagieren.
    Vorweg: Bekanntlich haben die Objekte aus der Gruppe "Extinguishable" unter Engine Features den "Suspicious"-Eintrag, der vom Script so bedient wird, daß den AIs der verdunkelte Zustand mitgeteilt wird. Mir ist es nicht gelungen, das auf die Kerzen zu übertragen, daher bastelte ich mir ein eigenes "Signal" zurecht.
    In der Objekthierarchie editieren wir den nun unter Sound>Schema>DEVICES>DEVICE_MISC befindlichen Eintrag "pfff". Wir geben ihm folgende Zusätze:
    Add>Schema>attenuation Factor=0.75 (Wirkradius) und Add>Schema>Message=duster (Signalbezeichnung). Und bei Add>AI>Utility>Sound Value={Inform;duster}.
    Dann wieder die Gamesys sichern.


    Für die in Frage kommenden AIs machen wir z.B. folgendes:
    Add>AI>Responses>Signal Response={duster;Normal;Play sound/motion();foundsmall; ;Stalled 0, Blinded 0; Wait;1;Search 0, Scan 0;Play sound/motion();notice;item torch;Conv 4}
    Das Beispiel im Klartext: Die AI erhält das Signal "duster", labert XXXsma_1/2.wav, tappt verärgert und nachtblind umher und flucht XXXtorc1/2.wav.
    Man kann aus dem Signal "duster" also je nach Lust und Laune beliebige Motionen und Schemata in den AI hineinprogrammieren.




    Hoffe, ich habe nix vergessen, notfalls kann ich den Beitrag ja editieren. Wer nun noch will, daß Garrett die Lichter wieder anmachen kann ... nur zu. Bei mir hatte er eben kein Feuerzeug dabei ... ;)

    Und so sei der Hammer ewiges Symbol unseres Aufstiegs aus dem Schatten des Schwindlers.

    3 Mal editiert, zuletzt von zappenduster ()