Idee und Umsetzung von Stephan Markthaler (programmierung.eulengesang.de)
Das Programm steht unter der GNU Public License (GPL) Version 3 und ist damit kostenlos, aber (hoffentlich) nicht umsonst. Deswegen handelt es sich um Charityware: Sollte Ihnen das Programm gefallen, dann bitte ich darum, den Geldbetrag, den Ihnen das Programm wert ist, an einen wohltätigen Zweck Ihrer Wahl zu überweisen. Der Verwendungszweck ist freigestellt, doch bitte vergewissern Sie sich, dass das Geld tatsächlich für wohltätige Zwecke verwendet wird. Als Orientierung kann beispielsweise das DZI Spenden-Siegel dienen.
Der Leveleditor kann unabhängig vom LASER-Spiel verwendet werden. Er wurde jedoch eng zusammen mit dem LASER-Spiel entwickelt, weshalb ich keine Garantie für eingenständige Funktionstüchtigkeit geben kann.
Die Levelsets stehen nicht unter der GPL 3. Sie dürfen die mitgelieferten Levelsets nur unverändert weitergeben. Sie können jedoch Level modifizieren und in einem neuen Levelset speichern. Sofern die Änderungen nur geringfügig sind (z. B. Veränderung der Levelzeit oder kleine Spiegel-Verschiebungen, die nicht spielrelevant sind), müssen Sie bei einer Veröffentlichung auf das Original verweisen. Sollten Sie ein Levelset eines anderen Autors verwenden, dann erkundigen Sie sich bitte über die Bedingungen, unter denen das Set veröffentlicht wurde.
Dem Archiv liegt eine compilierte Linux-Version bei. Eine aktuelle Windows-Version wird zur Zeit wegen des erhöhten Aufwands nicht regelmäßig bereitgestellt. Zur Compilierung wurde der FreeBASIC-Compiler fbc v0.21 verwendet, jedoch sollte jede fbc-Version ab v.0.17 funktionieren.
Zur Soundwiedergabe wird die Bibliothek bass24 von http://un4seen.com benötigt. Sowohl bass.dll
(für Windows) als auch libbass.so
(für Linux; liegt im Ordner lib/
) wurde dem Paket beigelegt. Soll oder kann diese Bibliothek nicht genutzt werden, dann lässt sich durch das Auskommentieren der ersten Programmzeile von laser304.bas einstellen, dass kein Sound benutzt werden soll.
Sind alle Einstellungen vorgenommen, dann kann das Programm mit
fbc laser304.bas [-s gui]
compiliert werden.
Ein herzliches Dankeschön geht an Saga Musix (http://sagamusix.de) sowie an Timewyrm (http://timewyrm.de) für die Bereitstellung der Hintergrundmusik.
Ein normaler Programmaufruf startet das Spiel. Mit dem Parameter -e
wird statt des Spieles der Leveleditor aufgerufen. Der Parameter -h
listet weitere Aufrufsoptionen auf.
Das Startmenü wird durch die Pfeiltasten gesteuert.
Ziel des Spieles ist es, alle Laserkanonen zu zerstören, indem man die Laserstrahlen auf die Kanonen lenkt. Dabei darf man sich nicht selbst von den Strahlen treffen lassen, in keine Löcher fallen und die Zeit nicht aus dem Auge verlieren. Das Spiel wurde erfolgreich gelöst, wenn alle Kanonen zerstört wurden.
Es gibt verschiedene Spiegel, die den Laserstrahl umlenken. Ein Teil der Spiegel lässt sich verschieben, ein anderer Teil im Uhrzeigersinn drehen. Manche Spiegel drehen sich auch von selbst. In der Versionsreihe 3 ist eine neue Steinart dazugekommen: der Impulsstein. Befindet sich ein beweglicher Stein oder Spiegel direkt vor dem Impulsstein, dann wird er in Pfeilrichtung fortgeschoben, solange bis er auf ein Hindernis stößt.
Achtung: Der Schlacht-Modus befindet sich noch in der Testphase. Sollten Sie auf Probleme stoßen oder Sie anderweitige Anregungen haben, dann freue ich mich über eine Rückmeldung.
Im Schlacht-Modus treten zwei Spieler gegeneinander an. Jeder muss versuchen, mehr Gegner, Diamanten oder Laserstrahlen zu treffen als der Mitspieler.
Im Gegensatz zu anderen Modi wird im Schlacht-Modus nicht das Startlevel angegeben, sondern die Anzahl der zu spielenden Level. Die Level, die tatsächlich gespielt werden, werden zufällig ausgewählt. Jedes davon wird zweimal gespielt, das zweite Mal mit getauschten Rollen. Damit ist die ausgewählte Anzahl immer gerade.
Im Schlacht-Modus können die Spieler über Ersatzmännchen verfügen, die durch sitzende Männchen dargestellt werden. Der grüne Spieler kann mit der Backspace-Taste durch seine Männchen wechseln. Der blaue Spieler wechselt mit der TAB-Taste. Ein Figurwechsel kann nur durchgeführt werden, wenn sich die Spielfigur auf einem leeren Feld befindet, also z. B. nicht in einer Passage.
Zunächst einmal bekommt jeder Spieler für jeden getroffenen Gegner, Diamanten und Laserkanonen einen Punkt. Diamanten und Laserkanonen werden jedoch nur dann für einen Spieler gezählt, wenn sie als direkte Folge aus einer Spieleraktion getroffen werden. Wenn ein Spieler also einen Spiegel dreht oder schiebt und dadurch der Laserstrahl auf einen Diamanten trifft, dann erhält dieser Spieler den Punkt. Nicht gezählt werden dagegen automatische Spiegeldrehungen: wird der Diamant getroffen, weil sich ein automatischer Spiegel (selbst) gedreht hat, erhält niemand den Punkt.
Getroffene Gegner (das aktive Männchen oder ein Ersatzmännchen) werden immer gezählt, egal warum sie getroffen wurden. Auch wenn ein Spieler selbst in den Laserstrahl läuft, erhällt sein Gegner dafür einen Punkt. Wird ein Spieler komplett vernichtet, dann gibt es für seinen Gegner noch einmal 10 Bonuspunkte.
Des weiteren wird am Ende eines jeden Levels überprüft, wer in diesem Level die meisten Gegner, die meisten Diamanten bzw. die meisten Laserkanonen getroffen hat. Diesem Spieler wird in der jeweligen Kategorie ein "Erfolg" gewertet. Für jede Kategorie werden gesonderte Bonuspunkte berechnet: Der Spieler mit den meisten Erfolgen bekommt das Quadrat der Erfolgs-Differenz gutgeschrieben. Hat beispielsweise der grüne Spieler 5 Diamanten-Erfolge und der blaue Spieler 4, dann erhält der grüne Spieler einen Bonuspunkt. Hätte dagegen grün 5 Diamanten-Erfolge und blau nur 2, gäbe das 9 Bonuspunkte. Diese Punktzahl wird nach jedem Level neu berechnet. Dadurch kann es auch vorkommen, dass die Zahl der Bonuspunkte im Laufe des Spieles wieder sinkt.
Der Editor wird in der Konsole mit dem Parameter -e
aufgerufen (also z. B. unter Windows mit laser304.exe -e
) oder alternativ über das Script editor.sh
(Linux) bzw. editor.bat
(Windows). Im sich öffnenden Programmfenster kann dann der Name des Levelsets ausgewählt werden, das editiert werden soll. Sie können auch ein neues Level anlegen.
In einem neu angelegten Set werden Sie zuerst zur Einstellung der Optionen weitergeleitet. Geben Sie der Reihe nach den Autor, die Release-Nummer, die Levelart und einen Kommentar ein. Die Levelart ist dabei besonders wichtig, da sie entscheidet, welche Spielermännchen eingesetzt werden können. Um die Optionen später wieder zu bearbeiten, drücken Sie die Taste o
.
Mit der Taste h
rufen Sie einen Hilfebildschirm auf, der die wichtigsten Tastaturbefehle kurz zusammenfasst.
Nach der Auswahl eines Levelsets landen Sie in einer Übersicht über die vorhandenen Level. Mit einem Linksklick auf ein Level wird dieses geöffnet und kann bearbeitet werden. Ein Rechtsklick markiert ein Level bzw. wählt diese Markierung wieder ab.
Wurde ein Level markiert, dann kann dieses mit den Pfeiltasten links/rechts im Set verschoben werden, oder Sie können es mit der Taste k
löschen. Bei beiden Operationen werden nur die Zeiger auf die Level verschoben; insbesondere werden die Level noch nicht physisch gelöscht. Sie sollten daher am Ende noch mit r
eine Reorganisation durchführen, bei der alle Level neu in der aktuellen Reihenfolge gespeichert werden.
Um ein neues Level anzulegen, drücken Sie n
. Sie können auch ein bestehendes Level laden, bearbeiten und dann unter der nächsten freien Nummer speichern.
In der Levelansicht speichert die Taste s
das aktuelle Level unter einer wählbaren Nummer. Diese kann höchstens um 1 größer sein als das bisher höchste Level; ansonsten wird die Speicherung nicht durchgeführt. Aus wie vielen Leveln das Set bisher besteht, können Sie am Fenstertitel ablesen.
Um ein Level zu laden, ohne dazu die Set-Übersicht aufzurufen, verwenden Sie die Taste l
. Auch hier kann das Laden nur durchgeführt werden, wenn eine existierende Nummer eingegeben wird.
Wenn Sie Level zwischen zwei verschiedenen Sets austauschen wollen, können Sie es mit e
exportieren und mit i
wieder importieren. Das Level wird mit der Endung .export
gespeichert und befindet sich wie die Levelsets im Ordner level
.
Mit der Taste m
können Sie ein Level verschieben. Geben Sie zuerst das zu verschiebende Level ein und anschließend die Stelle, an die es verschoben werden soll. Alle dazwischen liegenden Level werden entsprechend weiter gerückt. Mit k
können Sie ein Level wieder aus dem Set löschen. Nach diesen Operationen sollten Sie am Ende noch mit r
eine Reorganisation durchführen.
Das Editieren eines Levels erfolgt weitgehend über die Maustaste. Wählen Sie in den beiden oberen Leisten den Spiegel, Stein o. ä. aus, den Sie verwenden wollen (er wird dann von einem roten Kasten umrahmt), und zeichnen Sie diesen dann an die gewünschte Stelle des Spielfeldes. Mit den Pfeiltasten können Sie sich übrigens ebenfalls durch die oberen Leisen bewegen.
Wenn Sie eine komplette rechteckige Fläche mit dem ausgewählten Stein füllen wollen, können Sie dazu die mittlere Maustaste verwenden. Klicken Sie auf eine Ecke des zu füllenden Rechtecks und bewegen Sie dann die Maus mit gedrückter Taste zur entgegengesetzten Ecke. Beim Loslassen wird das Reckteck gefüllt.
Die für das Level verfügbare Zeit stellen Sie mit den Tasten + und - ein. Allerdings sind diese Tasten doppelt belegt; sehen Sie dazu das nächste Kapitel "Automatisch drehende Spiegel".
Einige Objekte können "automatisiert" werden: dies sind sämtliche drehbaren Spiegel (mit Punkt in der Mitte), drehbare Steine (grau mit Durchlässigkeit in eine Richtung), Löcher und leere Felder. Klicken Sie das gewünschte Objekt mit der rechten Maustaste an. Rechts oben, wo sonst die Levelzeit steht, erscheint nun die Anzeige "Drehung". Mit den Tasten + und - können Sie die Drehdauer erhöhen – ein doppelt so hoher Wert bedeutet, dass es doppelt so lange dauert, bis das Objekt gedreht wird. Eine Drehung mit dem Wert 1 dauert dabei ein klein wenig länger als das Männchen benötigt, um ein Feld zurückzulegen. Dieses Verhältnis ist nicht abhängig von der Spielgeschwindigkeit.
Automatisierte Löcher oder Leerfelder ergeben Löcher, die sich selbst öffnen und schließen. Sie verhalten sich im geöffneten Zustand wie normale Löcher, d. h. sie können durch die verschiebbaren Steine verschlossen werden.
Steine, die als automatisiert gekennzeichnet wurden, werden mit einem kleinen gelben T gekennzeichnet. Um die Automatisierung wieder zu löschen, können Sie den Stein erneut rechtsklicken und die Drehung auf 0 heruntersetzen, oder Sie überschreiben den Stein durch einen anderen.
Der Einbau von Infosteinen ist ein wenig aufwändiger. Zunächst können Sie dem Info-Stein eine Nummer zuweisen, indem Sie ihn mit der rechten Maustaste anklicken und mit + und - die Zahl ändern. Es wird auch hier die Bezeichnung "Drehung" eingeblendet, es handelt sich aber um die frei vergebbare Stein-Nummer. Legen Sie dann eine Textdatei mit demselben Namen wie Ihr Levelset an (z. B. für das Levelset "meinlevel.lev" die Textdatei "meinlevel.lev.txt"). In jede Zeile der Datei kommen drei Einträge: zuerst die Levelnummer, dann die vorhin vergebene Stein-Nummer und zuletzt der Text, der als Information eingeblendet werden soll.
Mehrzeiliger Text wird durch die Zeichenfolge \n getrennt. Maximal sind fünf Zeilen möglich. Benütigen Sie einen längeren Text, dann können Sie mehrere Einträge mit derselben Level- und Stin-Nummer vornehmen, die dann nacheinander angezeigt werden.
Weitere Fehler, ob programmier- oder rechtschreibtechnisch, bleiben geistiges Eigentum des Programmierers und müssen schnellstmöglich zurückgegeben werden.
Version 1:
Originalversion für den ATARI ST, programmiert im letzten Jahrtausend (so um 1994); ursprünglich unter OMIKRON-BASIC geschrieben, später auch auf GFA-BASIC. Das Spielprinzip entsprach dem der aktuellen Einzelspieler-Version, es gab jedoch keine automatischen Bewegungen (selbstdrehende Spiegel, Impulssteine, Animation ...)
Version 2.0:
Neuprogrammierung für den PC unter QBASIC.
Version 2.1:
Wegen der wesentlich höheren Rechenleistung konnten selbstdrehende Spiegel eingeführt werden. Ebenso neu waren die Löcher, die Spiegel und Männchen verschlucken konnten, aber durch Steine gestopft wurden. Die Grafik musste dagegen leiden – trotz Zuwachs von 14 Farben war die Grafik schwächer als in Version 1.
Als neues Spielprinzip gab es das Partnerspiel (zwei Spieler versuchen, ein Level gemeinsam zu lösen) und den Schlachtmodus (zwei Spieler treten gegeneinander an). Beide Modi wurden mangels Testpersonen nie intensiv vorangetrieben.
Version 2.2:
Erste Portierung auf FreeBASIC, Version 0.16 (ab Februar 2007) sowie die Aufstockung auf 30 Einzelspieler-Level. Aufgrund der Programmgröße war das Spiel zwar anschliessend lauffähig, aber nicht fehlerfrei. Da auch die portierte Version unter fbc 0.17 nicht mehr compilierbar war, wurde diese Version ziemlich rasch
eingestellt.
Version 3.00:
Komplette Neuprogrammierung unter FreeBASIC, Version 0.17 und 0.18. Wegen erneutem Geschwindigkeitszuwachs im Vergleich zu QBASIC konnten die Bewegungen ein wenig animiert werden. Auch die grafische Darstellung erlebte wieder einen starken Aufwind. Version 3.00 besitzt alle Spielelemente der Vorgängerversion, abgesehen vom
Partner- und Schlachtmodus. Außerdem gibt es mit dem Impulsstein eine weitere Steinart in der LASER-Familie.
Mit Version 3.00 wurde die Einbindung mehrerer Levelsets vereinfacht. Deswegen kamen zu den bisherigen 30 Leveln keine neuen mehr hinzu, sondern stattdessen ein neues Levelset mit 14 Einzelspieler-Leveln.
Version 3.01:
Um die bisherige Programmierung endlich einmal öffentlichkeitstauglich zu machen, wurde das Spiel so weit wie möglich von Fehlern bereinigt und auf die Schnelle ein paar Soundeffekte eingefügt. Außerdem wird das Spiel nun (zum erstenmal in der gesamten Versionsgeschichte) von einer Hintergrundmusik umrahmt. Die eingebaute Spielanleitung wurde fertiggestellt und das Spiel um 6 Level aufgestockt.
Version 3.02:
Behebung diverser Programmfehler; die Spielsteuerung und die Laserberechnung wurden überarbeitet. Der Editor speichert nun endlich fehlerfrei und kann für den "Produktiveinsatz" empfohlen werden.
Nachdem endlich alle bekannten Programmfehler behoben waren (dieser Stand war schon bald nicht mehr aktuell ...), konnten die Löcher in Angriff genommen werden. Sie funktionieren jetzt wie geplant: sie verschlingen Spiegel und werden durch Steine gestopft.
Nach einer Erweiterung um 5 Level besteht das Spiel aus einem Levelset mit 30 und einem Levelset aus 25 Level.
Version 3.03:
Umstieg auf das BASS-Soundsystem und endgültige Rückkehr zum BMP-Format. Zwei hartnäckige Bugs konnten endlich behoben werden. Außerdem gibt es ein neues Set bestehend aus 8 Einstiegsleveln sowie einen Info-Stein, der Hinweise für das Level geben kann.
Version 3.04:
Behebung eines weiteren Bug sowie zweier grafischer Unsauberkeiten. Das Partnerspiel und der Schlacht-Modus wurden endlich wieder eingeführt, befinden sich jedoch noch in der Testphase.
Der Editor wurde weiter ausgebaut und konfortabler gestaltet. Unter anderem kann erhält der Benutzer einen Überblick über die vorhandenen Level (wie zuletzt in Versionsreihe 2), womit z. B. die Auswahl und das Verschieben der Level vereinfacht wird.
Das Spiel besteht zu diesem Zeitpunkt aus einem Einführungs-Set mit 9 Leveln, zwei Einzelspieler-Sets mit je 30 Leveln, einem Partner-Set mit 12 Leveln und einem Schlacht-Set mit 5 Leveln. Ein weiteres Einzelspieler-Set ist gerade am Entstehen.