Autor Thema: Räume Beleuchten  (Gelesen 5015 mal)

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Räume Beleuchten
« am: 18. Juli 2013, 20:29:25 »
Hi,
gibt es eigentlich auch die Möglichkeit die Räume so auszuleuchten, wenn man 2 Wandleuchten hat (die einzelnd zu schalten sind) die beleuchtung im Raum auch nur aus der jewaligen Seite hat.
Oder wenn man ein Fenster mit Rolo hat, dass es beim öffnen und schliessen die dementsprechende Ausleuchtung des Raumes hat?
Oder wenn ich eine von 2 Fackeln (die sich an der Wand befinden) anzünde, auch ein flackerndes Licht von sich geben?
Danke
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #1 am: 18. Juli 2013, 21:16:44 »
Zu den Räumen mit zwei Lampen die jeweils einen anderen Bereich des Raumes seperat ausleuchten sollen, würde ich das mit unterschiedlichen Hintergrundgrafiken machen oder mehrere Räume anlegen. Erstere Lösung ist wohl einfacher, es müssen beide Grafiken nur gleich groß sein.

Das mit der Fackel (flackerndes Licht) könnte man dann zusätzlich mit einer Animation machen. Einfach mehrere Grafiken vom Lichkegel zeichnen mit unterschiedlichen Radien.
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #2 am: 18. Juli 2013, 21:23:26 »
Zu den Räumen mit zwei Lampen die jeweils einen anderen Bereich des Raumes seperat ausleuchten sollen, würde ich das mit unterschiedlichen Hintergrundgrafiken machen oder mehrere Räume anlegen. Erstere Lösung ist wohl einfacher, es müssen beide Grafiken nur gleich groß sein.

Das mit der Fackel (flackerndes Licht) könnte man dann zusätzlich mit einer Animation machen. Einfach mehrere Grafiken vom Lichkegel zeichnen mit unterschiedlichen Radien.

Ich wollte es nicht als Grafik haben, sondern dachte da eher an das Prinzip des "Taschenlampen Script"!
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #3 am: 18. Juli 2013, 23:12:27 »
Das müsste eigentlich möglich sein, würde ich jetzt mal auf anhieb sagen.

Bei der Taschenlampe ist es ja so das der Lichtkegel mit der Maus übereinstimmt, bzw. er hat bei der Maus seinen Mittelpunkt. Dahin wo du die Maus bewegst scheint auch das Licht.

Wenn du es nun schaffst diesen Mechanismus zu entkoppeln und dem Licht als Mittelpunkt einen fixen Punkt im Raum (der Lampe) zuzuordnen, dann könnte das klappen. Schau mal im Taschenlampenscript nach ( ist im Mansion SP) ob du die Stelle im Script findest an der die Verbindung zwischen Licht und Maus gemacht wird. Dort dann die Koordinaten von der Lampe eingeben die im Raum ist. Und zum Schluß muss das ganze über eine Funktion im Script (z.B vom Lichtschalter) aktiviert werden.

Meintest du sowas?
« Letzte Änderung: 18. Juli 2013, 23:14:27 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

ZAK

  • volljähriger Tentakel
  • *****
  • Beiträge: 503
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #4 am: 19. Juli 2013, 04:40:00 »
Bei der Taschenlampe ist es ja so das der Lichtkegel mit der Maus übereinstimmt, bzw. er hat bei der Maus seinen Mittelpunkt. Dahin wo du die Maus bewegst scheint auch das Licht.
Meintest du sowas?

Ja Kiwa, so was meinte ich, wie ich ja auch schon zuvor geschrieben hatte...
Und das bei der Taschenlampe ist nicht ein Lichtkegel, sondern ein beweglicher Punkt der nicht abgedunkelt wurde!
Ich hatte gehofft das man es als Raumscript so schreiben kann, das man einen bestimmten Beleuchtungseffekt (z.B. Rolo am Fenster) erzielen kann, den man individuell auf andere Räume anwenden kann, ohne ständig neue Grafiken dafür zu erstellen.
Ich bin mal kurz weg, mich suchen. Wenn ich zurück komme bevor ich wieder da bin, sagt mir bitte das ich warten soll!

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #5 am: 19. Juli 2013, 11:49:47 »
Ich hatte gehofft das man es als Raumscript so schreiben kann, das man einen bestimmten Beleuchtungseffekt (z.B. Rolo am Fenster) erzielen kann, den man individuell auf andere Räume anwenden kann, ohne ständig neue Grafiken dafür zu erstellen.

Das müsste machbar sein. Entweder man schreibt für jeden Beleuchtungseffekt (z.B. Rolo am Fenster, Fackel usw.) ein eigenes Script oder man schreibt ein einziges Script und muss dann der Funktion einen Parameter übergeben welcher den Beleuchtungseffekt festlegt.

Den Raum abzudunkeln ist ja bereits möglich (dank dem Taschenlampenscript). Jetzt kann man die selbe Technik um bestimmte Bereiche im Raum nicht abzudunkeln auch auf ein Rollo oder eine Fackel abändern. Man muss dafür die geometrischen mathematischen Operationen entsprechend neu schreiben so das der gewünschte Effekt entsteht.

Schau mal ins Taschenlampenscript (Datei Flashlight.asc), dort werden solche Berechnungen für die Taschenlampe gemacht bzw. für den Bereich der nicht abgedunkelt wird.
Ändere bzw. ergänze die Berechnungen und erweiter die Funktion mit Parametern das du bestimmte Effekte steuern kannst (z.B. Größe des Rollos und damit Größe des einfallenden Lichtes) und dann sollte es klappen.
« Letzte Änderung: 19. Juli 2013, 11:51:05 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #6 am: 20. Juli 2013, 16:59:13 »
Das Tachenlampenskript kann schon 'fixed point'.

Im Michael-SP ist in der Dunkelkammer das Ganze mit mehreren Hintergründen gelöst worden.
(Mal so als Nebenbemerkung.)
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #7 am: 20. Juli 2013, 19:39:52 »
Das Tachenlampenskript kann schon 'fixed point'.

Das ist in der Tat gut zu wissen. Jetzt muss man nur noch andere geometrische "Figuren" hinbekommen(für das Licht bzw. für den Bereich der nicht abgedunkelt wird), also anstat einen Kreis z.B. ein Trapetz. Den das Licht scheint durch ein Rollo ja nicht mit einem Kreis, sonder eher wie ein Trapetz mit dunklen Bereichen dazwischen wegen den Lamellen (je nach Rollotyp unterschiedlich). Mit Rollo meine ich jetzt die Teile wie sie auch meist in Büros benutzt werden. Da kann man dann an einer Stange drehen und die Lamellen verstellen oder man steuert es elektronisch. So verändert man natürlich auch den Lichteinfall. Das müsste dann wohl auch mit unterschiedlichen Grafiken gelöst werden, genauso wurde es ja auch mit der Taschenlampe gemacht (der Kreis ist eine Grafik).

EDIT: Ich habe gerade mal versucht die fixen Punkte zu erzeugen, aber es klappte nicht weil AGS sagte das alles Schreibgeschützt ist.
Ich habe es so versucht (in der room_load Funktion vom Keller):

[ags]Flashlight.IsFollowingMouse = false;
Flashlight.IsFollowingCharacter = false;
Flashlight.IsStatic = true;[/ags]

Wie kann man den dann die fixen Punkte benutzen? Es muss ja dann eine Funktion geben der man Parameter für x und y übergeben kann.

Im Michael-SP ist in der Dunkelkammer das Ganze mit mehreren Hintergründen gelöst worden.
(Mal so als Nebenbemerkung.)

Welche Dunkelkammer meinst du den? Ich habe alle Räume mit dem AGS Editor durchsucht (nach mehreren Hintergründen) bei denen es dunkel sein kann, aber nirgends mehrere Hintergründe gefunden. Wenn diese da sind, müssen sie auch im AGS-Editor angezeigt werden, oder (bei "Display Background")?
« Letzte Änderung: 20. Juli 2013, 19:57:00 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

rulaman

  • Moderator
  • Teenie Tentakel
  • *****
  • Beiträge: 354
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #8 am: 20. Juli 2013, 21:25:12 »
Zum Michael-SP
Es ist der Raum 33 (Dunkelkammer)
In der obersten Zeile die Combo-Box 'Background to display:'  (Main Background, Background1, Background2)



Zum Skript
[ags]
FlashSprite = DynamicSprite.CreateFromExistingSprite(169, true);
Flashlight.SetBeamSprite(FlashSprite);
Flashlight.X = 150;
Flashlight.Y = 20;
Flashlight.SetStatic();
[/ags]
Baden ist die einzige Möglichkeit, den Dreck der Füße an den Hals zu bekommen.

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #9 am: 20. Juli 2013, 22:24:19 »
Zum Michael-SP
Es ist der Raum 33 (Dunkelkammer)
In der obersten Zeile die Combo-Box 'Background to display:'  (Main Background, Background1, Background2)

Ups, sorry, ich hatte glatt 'Mansion SP' gelesen - da hätte ich auch lange suchen können  :-[

Zum Skript
[ags]
FlashSprite = DynamicSprite.CreateFromExistingSprite(169, true);
Flashlight.SetBeamSprite(FlashSprite);
Flashlight.X = 150;
Flashlight.Y = 20;
Flashlight.SetStatic();
[/ags]

So klappt es, allerdings läuft der Lichtkreis mit, wenn man durch den Keller läuft (habe es im Mansion getestet). Der Lichtkreis ist zwar nicht beim player, aber wenn man weit genug nach links oder wieder rechts läuft, wird der Lichtkreis auf gleichbleibender Höhe "mitgezogen". Worauf genau beziehen sich X und Y? Raumkoordinaten können das nicht sein, denn wenn der Keller betreten wird, ist X deutlich größer als 500 (original Keller im Mansion). Aber trotzdem Danke schonaml für die Infos...
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #10 am: 21. Juli 2013, 12:06:44 »
Ich experimentier gerade mit dem Taschenlampenscript herum.

Kann mir jemand sagen wie man das "Lichtsprite" auswechseln kann. Wenn ich es löschen will sagt AGS:

---------------------------
Adventure Game Studio
---------------------------
Cannot delete a sprite because it is in use:

Sprite 169 is used in the following places. It may also be used in text script commands and in rooms (for example, room object graphics); we cannot detect those uses automatically.



GUI gFlashlight background image


---------------------------
OK  
---------------------------

Das Sprite liegt unter "GUI" im Spritemanager. Bis jetzt habe ich nur Sprites bearbeitet, die immer in einem Raum liegen. Das "Lichtsprite" liegt aber in keinem Raum, ich habe es nur unter "GUI" gefunden weil ich ein anderes Objekt in einem Raum angeklickt habe und dann im Spritemanager danach gesucht habe. Um das "Lichtsprite" zu wechseln bzw. ein neues zuzuordnen muss man das aber irgendwie anders machen. Nur wie? Eine neue Grafik habe ich schon gezeichnet.

Danke für Hinweise.

EDIT: Ich habe rechts im AGS Editor den Spritemanager gefunden, aber dort kann ich das Sprite auch nicht ändern. Gleiche Meldung wie oben. Und der Pfad wo das alte Sprite gespeichert sein soll gibt es nicht. *ratlos sei*
« Letzte Änderung: 21. Juli 2013, 12:55:20 von Kiwa »
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #11 am: 21. Juli 2013, 22:57:30 »
Pfad? Es ist doch importiert. Wenn Du das Original ändern willst, einfach rechts draufklicken und "Copy sprite to clipboard". Dann ins Grafikprogramm einfügen.
Löschen lässt es sich nicht, weil es, wie ja in der Meldung erwähnt, als Hintergrundbild des GUIs "gFlashlight" eingestellt ist. Zum Ändern würde ich das Sprite einfach überschreiben (Rechtsklick -> Overwrite with clipboard) oder einfach das neue Sprite im Sprite manager importieren, und dann in den Eigenschaften von gFlashlight die "Background graphic" ändern (auf das neue).

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #12 am: 22. Juli 2013, 00:08:14 »
@KhrisMUC

Mit Pfad meinte ich den Dateipfad der im AGS Editor unter "SourceFile" angegeben war (den nun steht da nix mehr).

Um das Sprite mit einem neuen / anderen zu ersetzen habe ich die "Rechtsklick -> Overwrite with clipboard" Methode genommen wobei es bei mir im AGS Editor "Replace Sprite from clipbord" heißt. Naja, ist egal wie es heißt - es klappt. Was ich jetzt noch heraus finden muss ist, mit welcher "Transparenz" das neue Sprite eingefügt werden muss (Palette Index 0, Top left pixel,....., Leave as ist und No transparency). Palette Index 0 geht nicht, dann sagt AGS:
---------------------------
Transparency selection
---------------------------
You cannot use the 'Index 0' transparency with hi-colour games.
---------------------------
OK   
---------------------------
Und bei den anderen sieht der Lichteffekt ziemlich grau aus oder es gibt im Spiel überhaupt kein Licht. Das ist auch dann so wenn ich das original Sprite wieder benutze. Was muss ich mit dem Sprite machen damit es im Spiel hell wierd, also an der Stelle keine Abdunkelung im Raum ist?
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Räume Beleuchten
« Antwort #13 am: 22. Juli 2013, 20:34:26 »
Es gibt zwei Arten von Transparenz, standard und alpha. Standard heißt, dass ein Pixel entweder vollständig transparent ist, oder gar nicht. Beim Importieren kann man AGS mitteilen, welcher RGB-Wert transparent sein soll, i.d.R. nimmt man eine der vier Ecken, z.B. bei Charakter-Sprites. Für den Taschenlampen-Effekt brauchst Du aber ein schwarzes Rechteck mit transparentem Loch, d.h. Du musst mit der gleichen Farbe, mit der das Loch gezeichnet ist, einen Rand hinzufügen, z.B. oben oder links, und dann top-left-corner auswählen.
Die zweite Möglichkeit, alpha, bedeutet, dass jeder Pixel einen Transparenzwert von 0-255 zusätzlich zu den drei Farbkanälen hat, den sogenannten Alphakanal. Damit kann man weiche Übergänge von transparent zu undurchsichtig erzeugen, was ja gerade bei Lichteffekten vorteilhaft ist. Dazu muss das Spiel aber auf 32bit Farbtiefe eingestellt sein. Entsprechende Sprites kann man z.B. mit Photoshop erzeugen, indem man auf ein Layer malt (nicht die Hintergrundebene), also so, dass man das übliche Schachbrettmuster im Loch hat. Wenn man das als PNG abspeichert und in AGS importiert, erkennt es den Alpha-Channel.

Die Index-0-Methode bezieht sich auf 256-Farben-Spiele, die damit automatisch eine feste Palette haben. Die allererste Farbe (also Index 0) wird dabei als transparent genommen. Deswegen die Meldung, da das eben nicht mit 16 oder 32bit Farbtiefe, also hi-color geht.