Taschenlampen und andere mobile Lichtquellen...

  • #1, by SpiderbyteThursday, 27. October 2011, 11:44 14 years ago
    Hallo, wir hatten uns im Maniac Mansion Mania - Thema die Frage gestellt, wie man eine Taschenlampe in dunklen Räumen einbaut. Der erste Lösungsansatz war: Einen Cursor zu erstellen, der größer als die Kulisse ist und in der Mitte einen transparenten Bereich hat. Problem: Da unser Interface sichbar bleiben soll, und ein "Taschenlampencursor" das Interface ebenfalls überdecken würde ist diese Lösung ausgeschieden. Mir ist nun dazu folgendes eingefallen: Ich erstelle mir im Weggrenzeneditor Aktionsbereiche in Form von Planquadraten (Bild 1) jedes Planquadrat bekommt die Aktion: Mausbewegung in Objektbereich: Schicke Person "Taschenlampenschein" zu Position X <-- X steht für die Zahlen die ich in Bild 1 und 3 in die Kästchen geschrieben habe. Zur Info: unsere Kulissengrafiken sind in der Auflösung 320x200 Der Charakter "Taschenlampenschein" (Bild 2) hat seine Mitte an der unteren Kante und liegt so über allen Bereichen der Kulisse und auch über dem Spielercharakter. Der Schein ist in der Mitte am transparentesten und außen etwa nur 10 % durchsichtig, daß man den Spieler und den Raum gerade so noch erkennen kann. Bild 3: So sieht das ganze übereinander gelegt aus. Der Taschenlampenschein folgt so dem Mauscurser. das Tempo dazu kann ja eingestellt werden. Ich denke, daß wenn der Schein dem Cursor folgt, sieht bestimmt besser aus als wenn er der Cursor selber wäre. Außerdem könnte man über zufällig gesetzte Aktionsteile die Sichbarkeit rauf und runter setzen um die Lampe "flackern" zu lassen oder an und aus zu dimmen. Was denkt ihr?

    Newbie

    13 Posts


  • #2, by SpiderbyteThursday, 27. October 2011, 12:28 14 years ago
    An die LUA Spezialisten: Da ich keine Ahnung von LUA oder Scripten habe wäre es schön, wenn ihr folgende Aktionen mal ins LUA übersetzen könnt. 1. Cursor Position ermitteln 2. Setze ermittelte Position vom Cursor 3. Pause für X ms <----diesen Wert möchte ich bei Bedarf ändern, damit der Lichtschein verzögert dem Cursor folgt 4. Schicke Charakter "Taschenlampenschein" zu der gesetzten Position 5.Springe zu Aktionsteil #1 Diesen Scriptablauf würde ich aus einer Aktion heraus starten oder beenden können, um zum Beispiel während einer Befehlsausführung den Lichtschein beim Zielobjekt festzusetzen, damit die Aktuelle Person auch Licht hat während der Befehl ausgeführt wird. Es wäre nett, wenn ihr dazu schreiben könntet, wie ich die Variablen Charakter und Zeit umschreiben muß, um sie an mein Spiel anzupassen. Danke schonmal.

    Newbie

    13 Posts

  • #3, by SpiderbyteThursday, 27. October 2011, 18:52 14 years ago
    Funktionieren tut es jedenfalls. Man muß nur mit den Objektmitten aufpassen. Alles was Anklickbar sein muß hat in dem Fall eine Objektmitte von 300. Ich sollte vielleicht dazuschreiben, daß die Planquadrate nun doch keine Actionsflächen sind. Denn Aktionsflächen können nur 2 Aktionen zugeordnet werden: betreten und verlassen. Also habe ich 32 Kulissenobjekte erstellt. Da wir nun nicht mehr auf die Kulisse klicken können sondern nur auf die Planquadrate oder davor liegende Objekte, habe ich jedem Quadrat die Koordinaten hinterlegt zu denen der Charakter gehen soll wenn er auf Solches klickt. Alle Befehle außer Gehe zu die auf diese Quadrate angewendet werden, werden gnadenlos durch eine hinterlegte Aktion abgebrochen. Man merkt nur noch an dem Verhalten des Mauszeigers, (aktiv inaktiv) daß man sich über einem Objekt befindet. Aber auch das könnte man umgehen (Wenn man denn wolle) Die Umsetzung meines Plans hat etwa 3 Stunden gedauert also war der Aufwand nicht soo groß. Aber ich bin mir sicher daß keiner von euch so verrückt ist und sich 32 Objekte anlegt, nur um einen Taschenlampeneffekt zu erzeugen. Da wäre ein Script auf jeden Fall die bessere Alternative wink

    Newbie

    13 Posts

  • #4, by TaylorFriday, 28. October 2011, 08:22 14 years ago
    Interessanter Thread... danke! Wie wäre es z.B. mit einer Kerze??? Ich meine wenn der spielbare Charakter eine Kerze in der Hand hält und durch einen dunklen Raum geht. Das müsste beim Gehen dann doller flackern usw. smile

    Newbie

    0 Posts

  • #5, by SpiderbyteFriday, 28. October 2011, 08:49 14 years ago
    Nun, da die Kerze fest mit dem Charakter verbunden ist, würde ich eine Charakteranimation gleich mit der Kerze in der Hand machen. Wenn der Charakter nämlich z.B. hinter einem anderen Objekt langgeht, würde auch der Kerzenschein verdeckt und von vorne sieht man trotzdem noch den Lichtschein an den Seiten heraustreten. So wird nämlich nur das erhellt, was sich räumlich hinter dem Charakter befindet. Das Objekt im Vordergrund bleibt so hell oder dunkel wie er erstellt worden ist (Kann ja auch per Objekthelligkeit geregelt werden.)

    Newbie

    13 Posts

  • #6, by SpiderbyteFriday, 28. October 2011, 10:00 14 years ago
    Einen Gedankenfehler habe ich noch entdeckt: Der Charakter "Lampe" hat so wie ich ihn erzeugt habe und wie er auch im Bild zu sehen ist seine volle Sichtbarkeit. Wenn ich die Sichtbarkeit der Lampe nun heruntersetze wird es nicht dunkler, sondern heller. Meine Idee: eine schwarze Blende (so groß wie die Hintergrundgrafik mit einer Objektmitte zwischen der maximalen Mitte der Lampe (290) und den Objekten (bei mir ab 300) setzen. Mit "Setze Objekt Sichtbarkeit" kann man die Blende nun komplett transparent setzen (Taschenlampe normal) oder raufsetzen (Taschenlampe aus) So können wie alle Belichtungszustände des Raumes steuern: Sichtbarkeit Lampe 0% und Blende 0% = Raum normal Sichtbarkeit Lampe 0% und Blende 100% = Raum komplett dunkel Sichtbarkeit Lampe 100% und Blende 0% = Taschenlampe normal Sichtbarkeit Lampe 50% und Blende 0% = Taschenlampe heller Sichtbarkeit Lampe 100% und Blende 50% = Taschenlampe dunkler

    Newbie

    13 Posts

  • #7, by SpiderbyteFriday, 28. October 2011, 10:19 14 years ago
    Zum besseren Verständnis hier mal die Reihenfolge der Ebenen: 1 = hinten im Raum; 6 = vorne im Raum 1. Kulisse mit der Kulissengrafik: Objektmitte z.B. -1 (kann ja eh nicht verändert werden, oder doch? ) Interessante Frage: Kann man einem Hintergrund transparente Fensterausschnitte verpassen und z.B. Charaktere dahinter rumlaufen lassen? Die Objektmitte dieser Charaktere müßte dann nur weit über ihren Köpfen sein statt an den Füßen. Evtl. ließe sich so "Carakter spiegelt sich" oder dergleichen umsetzen. 2. Die Grafiken der Kulissenobjekte OHNE Objektumrandung: Objektmitte Individuell von 1 - 144 (144 ist etwa Unterkante des Spielbereiches) 3. Der oder die Charaktere: Objektmitte hängt von der Position ab zwischen 1 - 144 4. Charakter Taschenlampe; Objektmitte je nach Position von 170 - 290 5. Die Planquadrate; Objektmitte alle auf 300 6. Die Kulissenobjekte OHNE Grafik aber mit Objektumrandung; Objektmitte ab 301 7. Interface: Objektmitte ??? 8.Cursor: Objektmitte ???

    Newbie

    13 Posts

  • #8, by EinzelkämpferFriday, 28. October 2011, 11:40 14 years ago
    Also das mit den Planquadraten erscheint mir tatsächlich sehr kompliziert - vor allem, weil du die ja bei jeder Kulisse anlegen musst, die so einen Taschenlampen-Effekt benötigt. Außerdem: Wenn du die Lampenblende als Person angelegt hast, wie sieht es denn dann mit den Weggrenzen aus? Eine Person kann sich doch nur innerhalb der Weggrenzen bewegen. Was passiert denn, wenn du deinen Mauszeiger außerhalb der Weggrenzen bewegst? Da kann der Schein doch gar nicht folgen, oder?

    Über ein Skript ließe sich das sicher besser lösen. Dabei sollte man versuchen, die Blenden-Grafik in einem Interface unterzubringen. Der Effekt wäre dann von der Kulisse unabhängig, ließe sich also leicht auf jeder beliebigen Kulisse einsetzen. Ich könnte mal ausprobieren, ob ich das hinbekomme, werde in den nächsten Tagen aber nicht dazu kommen (auf keinen Fall rechtzeitig für einen Halloween-Contest-Beitrag wink ).

    Newbie

    81 Posts

  • #9, by SpiderbyteFriday, 28. October 2011, 11:53 14 years ago
    Wie gesgt, es funktioniert bei mir schon und wird in meiner Halloween Folge zu bewundern sein wink Vorrausgesetz ich werde rechtzeitig fertig. Da der "Lampencharakter nicht die "Aktuelle Person" ist, kansst du ihn hinschicken, wo du willst. Auch aus dem Screen hinaus. Übrigens danke, daß du dir die Zeit nehmen willst das mit Scriping umzusetzen.

    Newbie

    13 Posts