![]() ![]() |
Blickfeldbeschränkung |
Eure Hauptcharaktere werden während ihrer Reisen sich in dunkle
Bergwerksstollen oder Kellergewölbe begeben, in denen es keinerlei Lichtquellen
hat. im wirklichem Leben ist bei Dunkelheit das Blickfeld stark eingeschränkt
und nicht so lang, wie es in Spielen oftmals dargestellt wird. Am Beispiel von "Zelda
- A Link to the past" soll dies demonstriert werden:
[Beispielbild]
Nur, wie lässt sich so etwas anstellen, ohne allzugroßen Aufwand?
![]() |
Zuallererst braucht ihr Grafiken (Pictures, um genau zu sein), die das
begrenzte Blickfeld freigeben und den Rest schwarz bedecken sollen. In
unserem Beispiel habt ihr die Wahl zwischen zwei Grafik-Paketen für diesen
Zweck: [sichtkegel_1.zip] [sichtkegel_2.zip] |
![]() |
Danach geht es ans Anlegen des Ereignisses, das in der Datenbank
geschieht. Es soll als paralleler Prozess laufen und erst dann aktiv werden,
wenn ein Schalter namens "Finstre Dungeons" aktiv ist. |
![]() |
Zuerst müssen zwei Variablen die Heldenposition auf dem aktuell
dargestelltem Bildbereich pixelgenau speichern (Also die X- und
Y-Koordinate/Scene X bzw. Scene Y). |
![]() |
Direkt danach soll eine Bedingung abfragen, ob das Ereignis "Held" nach
oben (Up) schaut. Ein Nein-Fall ist hier wichtig. |
![]() |
Im Ja-Fall wird dann zuerst das Bild mit dem Sichtkegel auf der zuvor
ermittelten Position der Helden angezeigt. Die Bildnummer, die im Maker
vergeben werden muss, soll hier 15 sein. |
![]() |
Direkt nach diesem Bild-Zeigen soll eine Endlosschleife stehen. |
![]() |
In dieser Endlosschleife wiederum soll eine Bedingung abfragen, ob die
Heldentruppe immer noch nach oben schaut. |
![]() |
Im Ja-Fall dieser Bedingung soll wieder die pixelgenaue Position der
Helden gespeichert werden. Verwendet hierfür die selben Variablen wie zuvor
auch. |
![]() |
Mittels Bildbewegung soll das Bild des Sichtkegels nun an die neue
Position bewegt werden, was in einem Zeitraum von 0 Sekunden geschehen muss. |
![]() |
Im Nein-Fall der selben Bedingung soll aus der Endlosschleife
ausgebrochen werden. |
![]() |
Im Nein-Fall der Bedingung, die ganz am Anfang angelegt wurde (die erste, welche die Blickrichtung abfragt) soll nun das ganze für die Blickrichtung "rechts" wiederholt werden, nur dass ihr hier auch den entsprechenden Sichtkegel verwendet. Führt dieses Schema auch für die Blickrichtungen "runter" und "links" durch. |
Blickfeldbegrenzung-Ereignis [Parallel][Schalter [Finstre Dungeons]] | ||||||||||||||||||||||
[Variable [Held Pixel-X]] [<-- [setzen][Ereignis
[Held][Pixel X]] [Variable [Held Pixel-Y]] [<-- [setzen][Ereignis [Held][Pixel Y]] [Bedingung[Ereignisblickrichtung][Held][hoch]
|
1. | : | Begebt euch in die Datenbank eures Projektes, indem ihr die Taste [F8]
drückt oder auf den Button mit der Tabelle klickt. Dort wechselt ihr auf die
Registerkarte "Common Events/Häufig benötigte Ereignisse". |
||||
2. | : | Wählt eine freie Zahlenkolonne aus, der ihr das Ereignis für die
Blickfeldbegrenzung zuweisen wollt. Bestimmt hier, dass es als paralleler
Prozess laufen und erst dann starten soll, wenn der Schalter "Finstre
Dungeons" aktiv ist. |
||||
3. | : | Erstellt nun mit Hilfe des Befehls "Change Variable(s)/Variable(n)
verändern" (zu finden auf der ersten Seite der Ereigniskommandos) zwei
Variablen, die ihr "Held Pixel-X" und "Held Pixel-Y" nennt. Ihnen weist ihr mit Hilfe des Operators "Set/Wert setzen" und der Option "Event/Ereignis" nun vom Ereignis "Held" jeweils die "Scene X/Bildausschnitt X " und "Scene Y/Bildausschnitt Y" zu. |
||||
4. | : | Direkt danach soll nun eine Bedingung abfragen, ob die Heldentruppe nach
oben schaut. Wählt hierfür das Ereigniskommando "Fork Conditions/Bedingung"
(zu finden auf der dritten Registerkarte der Ereigniskommandos), wo ihr im
Dialog der Bedingungserstellung auf der zweiten Registerkarte
"Event/Ereignis", dort im erstem Drop-Down-Menü wiederum "Hero/Held" und
daneben "Up/Hoch" wählt. Wichtig ist, dass diese Bedingung einen Nein-Fall
hat (Else-Case/Ansonstenfall). Die Bedingung sollte nun wie folgt aussehen:
|
||||
5. | : | Im Ja-Fall dieser Bedingung (Die Heldentruppe schaut nach oben; der
Bereich ist dunkelgrün hevorgehoben)
bestimmt ihr nun mit dem Befehl "Show Picture/Bild anzeigen", dass das Bild
eines Sichtkegels nach oben angezeigt werden soll. Das Ereigniskommando
dafür findet ihr auf der zweiten Registerkarte der Ereigniskommandos. Die Bildnummer soll 15 sein und die Koordinatenangaben für X und Y aus den Variablen "Held Pixel-X" und "Held Pixel-Y". Bestimmt unbedingt, dass die transparente Farbe verwendet werden soll (mittels der Option "Stir/Ja"). |
||||
6. | : | Direkt nach dieser Bildanzeige soll eine Endlosschleife folgen, deren
Befehl ihr auf der dritten Registerkarte der Ereigniskommandos findet. |
||||
7. | : | Direkt danach soll nun wieder eine Bedingung abfragen, ob die
Heldentruppe nach oben schaut. Die Vorgehensweise ist exakt die Selbe wie
bereits unter Punkt 4 gezeigt.
|
||||
8. | : | Im Ja-Fall dieser eben erstellten Bedingung (Die Heldentruppe schaut
immer noch nach oben; der Bereich ist dunkelblau
hervorgehoben) wird wieder mit Hilfe des Befehls "Change Variable(s)/Variable(n)
verändern" (zu finden auf der ersten Seite der Ereigniskommandos) in
die beiden Variablen "Held Pixel-X" und "Held Pixel-Y"
die Werte "Scene X/Bildausschnitt
X " und "Scene Y/Bildausschnitt Y" zugewiesen. |
||||
9. | : | Direkt danach soll ein Bildbewegungsereignis das Bild Nummer 15 (den
Sichtkegel) zu der eben ermittelten Heldenposition bewegen. Das
Ereigniskommando dafür findet ihr auf der zweiten Registerkarte und bestimmt
dort exakt die selben Werte wie unter Punkt 5 geschehen, also die beiden
Variablen für die Koordinaten X und Y, die Bildnummer 15 und die
transparente Farbe "Stir/Ja". |
||||
10. | : | Im Nein-Fall der Bedingung aus Punkt 7 (die Helden schauen nicht mehr
nach oben; der Bereich ist pink
hervorgehoben) bestimmt ihr, dass ein Ausbruch aus der Endlosschleife
geschehen soll. Das Ereigniskommando dafür ist auf der dritten Registerkarte
der Liste an Ereigniskommandos zu finden. |
||||
11. | : | Im noch leerem Nein-Fall der Bedingung aus Punkt 4 (der
dunkelrot hervorgehobene Bereich)
wiederholt ihr die Punkte 5 bis 10 für die Blickrichtung "rechts". |
||||
12. | : | Verfahrt nach dem selbem Schema auch für die Blickrichtungen "runter" und "links". |
Im englischem Maker |
<>Change Var: Var[Held PixelX](Set)-Hero's Screen X <>Change Var: Var[Held PixelY](Set)-Hero's Screen Y <>If Hero==>Up(Direction) <>Show Picture: ID:15-Sichtkegel_Hoch-(V[xxxx],V[yyyy]) <>Loop <>If Hero==>Up(Direction) <>Change Var: Var[Held PixelX](Set)-Hero's Screen X <>Change Var: Var[Held PixelY](Set)-Hero's Screen Y <>Move Picture: ID:15-(V[Held PixelX],V[Held PixelY]), 0.0sec <> :Else Case <>Break <> :End Case <> :End Loop <> :Else Case <>If Hero==>Rigt(Direction) <>Show Picture: ID:15-Sichtkegel_Rechts-(V[Held PixelX],V[Held PixelY]) <>Loop <>If Hero==>Rigt(Direction) <>Change Var: Var[Held PixelX](Set)-Hero's Screen X <>Change Var: Var[Held PixelY](Set)-Hero's Screen Y <>Move Picture: ID:15-(V[Held PixelX],V[Held PixelY]), 0.0sec <> :Else Case <>Break <> :End Case <> :End Loop <> :Else Case <>If Hero==>Down(Direction) <>Show Picture: ID:15-Sichtkegel_Rechts-(V[Held PixelX],V[Held PixelY]) <>Loop <>If Hero==>Down(Direction) <>Change Var: Var[Held PixelX](Set)-Hero's Screen X <>Change Var: Var[Held PixelY](Set)-Hero's Screen Y <>Move Picture: ID:15-(V[Held PixelX],V[Held PixelY]), 0.0sec <> :Else Case <>Break <> :End Case <> :End Loop <> :Else Case <>If Hero==>Down(Direction) <>Show Picture: ID:15-Sichtkegel_Rechts-(V[Held PixelX],V[Held PixelY]) <>Loop <>If Hero==>Down(Direction) <>Change Var: Var[Held PixelX](Set)-Hero's Screen X <>Change Var: Var[Held PixelY](Set)-Hero's Screen Y <>Move Picture: ID:15-(V[Held PixelX],V[Held PixelY]), 0.0sec <> :Else Case <>Break <> :End Case <> :End Loop <> :End Case <> :End Case <> :End Case <> :End Case <> |
Im deutschem Maker (V1.10c) |
<>Var ändern: [Held PixelX]Wert, Held, TileX <>Var ändern: [Held PixelY]Wert, Held, TileY <>Bedingung: Held - Ob[Ges.Richt] <>Bild anzeigen: 15-Sichtkegel_Hoch-(V[Held PixelX],V[Held PixelY]) <>Schleife <>Bedingung: Held - Ob[Ges.Richt] <>Var ändern: [Held PixelX]Wert, Held, TileX <>Var ändern: [Held PixelY]Wert, Held, TileY <>Bild bewegen: 15-(V[xxxx],V[yyyy]), 0.0Sek <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :Schleifenende <> :Ansonsten <>Bedingung: Held - Rc[Ges.Richt] <>Bild anzeigen: 15-Sichtkegel_Hoch-(V[Held PixelX],V[Held PixelY]) <>Schleife <>Bedingung: Held - Rc[Ges.Richt] <>Var ändern: [Held PixelX]Wert, Held, TileX <>Var ändern: [Held PixelY]Wert, Held, TileY <>Bild bewegen: 15-(V[Held PixelX],V[Held PixelY]), 0.0Sek <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :Schleifenende <> :Ansonsten <>Bedingung: Held - Un[Ges.Richt] <>Bild anzeigen: 15-Sichtkegel_Hoch-(V[Held PixelX],V[Held PixelY]) <>Schleife <>Bedingung: Held - Un[Ges.Richt] <>Var ändern: [Held PixelX]Wert, Held, TileX <>Var ändern: [Held PixelY]Wert, Held, TileY <>Bild bewegen: 15-(V[Held PixelX],V[Held PixelY]), 0.0Sek <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :Schleifenende <> :Ansonsten <>Bedingung: Held - Ln[Ges.Richt] <>Bild anzeigen: 15-Sichtkegel_Hoch-(V[Held PixelX],V[Held PixelY]) <>Schleife <>Bedingung: Held - Ln[Ges.Richt] <>Var ändern: [Held PixelX]Wert, Held, TileX <>Var ändern: [Held PixelY]Wert, Held, TileY <>Bild bewegen: 15-(V[Held PixelX],V[Held PixelY]), 0.0Sek <> :Ansonsten <>Schleife stoppen <> :End-Fall <> :Schleifenende <> :End-Fall <> :End-Fall <> :End-Fall <> :End-Fall <> |
Immer, wenn eure Hauptcharaktere eine dunkle Ortschaft betreten, an der die Sichtfeldbegrenzung aktiv sein soll, muss der Schalter "Finstre Dungeons", der ganz am Anfang erwähnt wurde, aktiviert werden. Wenn eure Hauptcharaktere diese finsteren Orte wieder verlassen, so muss der Schalter wieder deaktiviert werden. Dies sollte kurz vor dem jeweiligem Teleport-Befehl, der eure Hauptcharaktere die Karte wechseln lässt, geschehen.