Spielereien vom diceman

Heißer Scheiß von übermorgen oder liebenswerte Goldies von vorvorgestern: Alles willkommen!
Antworten
Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Mo 27. Jul 2020, 22:53

Clipboard04.jpg

UPDATE:
Immer noch kein Spieler-Sprite, aber die magischen Türen sind jetzt voll funktional; sie waren das wesentliche Rätsel-Element in "Kalawaum": durch die beiden Türen links im Bild (Magenta mit dem roten Kreis) kann nur der Spieler hindurch, keine Monster. Man muß sie auch nicht erst öffnen, sie ist quasi immer offen.
Die schwarze Tür rechts im Bild, mit dem Magenta-Dreieck, verhält sich konrär: durch sie kann der Spieler nicht hindurch, aber die Monster. Wenn jetzt der Spieler eines der beiden Pentagramm-Tiles betritt, kehren sich alle magischen Türen ins Gegenteil um.
Magische Türen haben kein randomisiertes Element: man kann im Editor gezielt beide Subtypen auswählen und platzieren.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Di 28. Jul 2020, 20:33

Habe mich jetzt doch entschieden, die Fenstergröße nicht komplett frei zu skalieren, sondern mit einem Faktor von 16 (=tileSize), da die Sprites mit dem #Raw-Tag (ohne Interpolation) "resized" werden (ansonsten würde die Farb-Index basierte Maskierung flöten gehen).
- Nachteil: das Fenster wird kleiner
- Vorteil: die Grafiken wirken "cleaner" und schöner (Nicht, daß ich mich für einen großen Künstler hielte ... :lol: ).
Später, in der Polish-Phase überlege ich eh, die Ansicht mit einem mobilen Viewport zu realisieren, dann würde man nur einen quadratischen Ausschnitt um den Spieler herum sehen, welcher mit der Bewegung mitwandert. Da wäre dann die Größe der Tiles GAR KEIN issue mehr, und man könnte ohne weiteres auf eine 50x50 oder 100x100 Ausdehnung der dungeonMap() gehen, da eh nur der Bereich um den Spieler herum gezeichnet wird. Macht zudem atmosphärisch was her, und würde dem Exploration-Aspekt des Spiels zugute kommen.
Entsprechenden Code habe ich natürlich vorliegen, will aber momentan streng vertikal entwickeln. Um Details kümmere ich mich später.

WEITERE UPDATES:
- Es gibt jetzt Geheimtüren: durch die kann nur der Spieler hindurch, Monstern bleibt der Eintritt verwehrt. Man kann sie an einem vagen Riss im Mauerwerk erkennen, ein bißchen genauer muß man aber schon hinsehen.
Na, wer entdeckt den geheimen Durchgang? :think:

Clipboard05.jpg
[+] Spoiler
Clipboard06.jpg
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
Yuki
Beiträge: 10257
Registriert: Di 8. Mai 2012, 02:21

Re: Spielereien vom diceman

Beitrag von Yuki » Di 28. Jul 2020, 20:41

Ober räääächts xD.

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Di 28. Jul 2020, 20:46

:clap: :clap: :clap: :mrgreen:
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Mi 29. Jul 2020, 22:42

Clipboard07.jpg

UPDATE:
- Item()-Klasse mit Subtyp "Key" initialisiert
- 3 verschiedene Schlüssel können platziert werden
- reguläre Türen existieren sowohl in geschlossener, als auch geöffneter Variante
- Schlüssel können im Play-Mode aufgesammelt werden
- Die aktuelle Anzahl jeden Schlüsseltyps wird im Inventar-Bereich angezeigt
- Abgeschlossene Türen können aufgeschlossen werden.
- Offene Türen werden beim Verlassen des Tiles abgeschlossen, sofern man den zugehörigen Schlüssel im Inventar trägt
- Lock_KeyConfig() - Feature im Editor

Das war ein bißchen mehr Arbeit, bis alles so funktionierte wie ich es mir vorgestellt habe. :geek:
Der Clou beim originalen "Kalawaum" war, daß zwar alle Türen und Schlüssel fix platziert wurden, aber welcher Schlüssel zu welcher Tür passte, wurde zu Beginn jeder Session neu ausgewürfelt. Die essentielle fiese Schikane war, daß wenn man eine offene Tür durchschritt, deren Schlüssel man im Inventar trug, diese Tür beim Verlassen des Tiles abgeschlossen wurde und der zugehörige Schlüssel verloren ging (immerhin war es erlaubt, Items abzulegen). Dementsprechend mußten die Maps designt sein, daß stets verschiedene Wege zur Wahl standen, den Dungeon zu navigieren - wenn man es ungeschickt anstellte, konnte es aber passieren, daß man sich unwiderruflich eingeschlossen hatte, bzw. der Weg nach vorne versperrt blieb. Da blieb einem nichts anderes übrig, als ein neues Spiel zu starten; "Kalawaum" war da ziemlich gnadenlos.
Hier werde ich mir jedoch erlauben, eine optionale Möglichkeit einzubauen, mit einem ausgerüsteten Schild oder einer Waffe jede beliebige Tür auch mit Gewalt zu öffnen - mit dem Risiko, daß entsprechendes Item zerstört wird, bzw. das Öffnen abhängig von Stärke des Items auch fehlschlagen kann. Soviel Roguelike muß sein!

Als zusätzliches QoL-Feature für den Editor habe ich die Option eingebaut, eine bestimmte Schlüssel/Key-Konfiguration für Testzwecke zu "locken". Das funktioniert jedoch nur, wenn man das Spiel aus dem Editor heraus startet - bei einem regulären Spielstart wird die Konfiguration ausgewürfelt und bleibt für die jeweilige Session fix.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Fr 31. Jul 2020, 21:55

Clipboard08.jpg

UPDATE:

Der Teil der Editor-Programmierung, vor dem es mir am meisten gegraust hat, ist geschafft! :geek: :geek: :geek:
Jetzt ist es möglich, alle Felder mittels simpler Point&Click-Interaktion mit anderen Feldern zu verlinken, in dem man zunächst eine Source-Koordinate setzt, und anschließend eine Target-Koordinate; sobald beide Koordinaten gesetzt sind, wird ein Link-Actor() "erschaffen". Eine Target-Koordinate kann sich auch auf einer anderen Map befinden - so kann man später im Spiel zwischen Maps hin- und hergehen (in dem man z.B. Link-Actors() auf Türen platziert), oder Teleporter kreieren (ein dafür passendes Tile existiert ebenfalls).

Bewegt man im Editor die Maus auf ein solches Link-Tile, wird ein roter Faden zur Partner-Koordinate gezogen - befindet sich diese auf einer anderen Map, zieht der Faden stattdessen in die untere rechte oder linke Ecke, je nachdem ob sich das Partner-Tile auf einer Map vor oder hinter der aktuellen befindet. Die genauen Koordinaten werden ebenfalls angezeigt.
Ein Rechts-Klick auf entweder Source- oder Target-Koordinate im Link-Mode löscht den zugehörige Link-Akteur.

Das war eine relativ komplexe Angelegenheit, da mit einer solchen Mechanik Tür&Tor für NullPointer()-Exceptions geöffnet werden, welche alle abgefangen und gefixt werden müssen. Einige besondere Edge-Cases, Interaktion der Link-Akteure mit anderen Actors(), mußten ich ebenfalls berücksichtigen.

Sind Source und Target-Koordinate übrigens gleich, bekommt man eine Teleport-Trap! Diese kann auch von Monstern genutzt werden: bewegt man sich auf ein solches Tile, wird man auf ein zufälliges freies Tile irgendwo in der aktuellen Map teleportiert.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
H3LLXIII
Beiträge: 831
Registriert: Mo 14. Jan 2013, 13:24
Wohnort: Würzburg
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von H3LLXIII » Fr 31. Jul 2020, 22:53

Deine Ausführungen zu den einzelnen Schritten sind echt interessant. Sehr spannnend, mal so einen Einblick zu bekommen.
Mein Blog über Filme, Reisen und allerlei anderen Zeitvertreib

https://frankonianzombie.wordpress.com

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Sa 1. Aug 2020, 06:03

Clipboard09.png

Wie findet ihr meinen Schnabel-Doktor? :shifty:
Habe mich für ein Dark Fantasy-Szenario mit Lovecraft-Monstern entschieden, da passt so ein Charakter ganz gut, habe ich mir gedacht. Komme auch mit der 16x16 Pixel-Art mittlerweile ganz gut zurecht. Die Sprites werden auf 32x32 hochskaliert - später dann, mit mobilem Viewport, gehe ich wahrscheinlich auf 48x48 hoch.

Auch die Editor UI is soweit fertig ...
Speichern, laden, Actor-Subtypen browsen, Maps adden und löschen, editieren, Tile-Verlinkung, Testen, etc. das funktioniert mittlerweile alles wie am Schnürchen. Es fehlen nur noch einige Tile-Subtypen, wie zum Beispiel Säulen, Schreine, Waffen, Steintafeln mit Innschriften und Schilde. Generell kann man sagen, daß jetzt der Fun-Part des Projektes beginnt! :thumbup:

Clipboard10.png
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » So 2. Aug 2020, 23:33

Clipboard11.png
Grafisch und Spielmechanisch hat sich nicht allzuviel geändert, dennoch für mich ein wichtiges Update, in dem unter der Oberfläche viel passiert ist. Bei rund 3000 Zeilen Code ist es z.B. angebracht, aufzuräumen und zu strukturieren. Habe hardgecodeten Mist ausgelagert, abstrahiert und flexibel umformuliert. Zum Beispiel gibt es keine FloorSprites und WallSprites mehr, sondern nur noch BaseSprites (beschrieben durch die #actorBase-Klasse). Die Base-Klasse verfügt über die Subtypen Wall und Floor, welche nur noch virtuell existieren und hauptsächlich dazu da sind, daß ich in Arrays schnell abfragen kann, welche Beschaffenheit ein Floor- oder Wall-Tile hat.

WEITERE UPDATES:
- Langsam kristallisiert sich eine finale Palette mit 16 Farben heraus (ich arbeite mit "Aseprite" und indexierter Palette, so kann ich auch bei Anpassungen stets alle Sprites farblich konsistent halten)
- Die Obstacle-Klasse wurde um den Pillar-Subtypen erweitert.
- Animations-Prozedur initialisiert - die kann zwar bislang nur einen Delay abspielen, muß auch später nicht sonderlich viel leisten, trotzdem gibt es einige Ereignisse (wie z.B. das Fallen in Löcher und Kämpfe), welche Bewegung benötigen um atmosphärisch zu überzeugen.
- Editor-Funktionen weiter verfeinert (z.B. wird jetzt beim Speichern grundsätzlich ein File-Requester geöffnet, wo man seinem .mod-File einen Namen geben kann, und der gewählte Pfad wird in defaultMod$ gespeichert, so können nicht länger versehentlich Daten überschrieben werden, und beim Testen weiß das Programm sofort, welche Daten zu laden sind.
- Es gibt Fallen: Löcher und Speerfallen. Beide sind für Monster wie Spieler tödlich - Speerfallen sind leichter zu erkennen, sind aber, nachdem man ein Monster hineingelockt hat, verschwunden. Löcher sind unendlich tief und schwerer zu erkennen; die Positionen von Fallen bleiben von Spiel zu Spiel fix, hat man also ihre Location verinnerlicht, wird es zunehmend leichter den Dungeon zu navigieren.
- Die Pentagram-Shades haben zwei Zustände, rot und lila (deren Zustand - nicht die magischen Türen! - wird für jeden Shade initial ausgewürfelt). Rote Pentagramme kann NUR der Spieler betreten, auf violette dürfen AUCH Monster, und da Monster und Spieler derselben Klasse angehören, können Monster jetzt auch Pentagram-Schalter betätigen - das ist eine Neuerung gegenüber dem Originalspiel, ein simpler Tweak, aber ich kann mir vorstellen, daß damit einiges an emergent complexity erzeugt wird. :uff:

Wer entdeckt alle Löcher auf dem Screenshot? :think:
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
diceman
Beiträge: 8994
Registriert: Mo 7. Mai 2012, 21:21
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von diceman » Mo 3. Aug 2020, 23:44

Clipboard12.png

UPDATE:

- Nicht allzuviel passiert heute, aber es gibt jetzt Schreine!
Da ich das originale "Kalawaum" niemals durchgespielt habe, weiß ich nicht ob es da überhaupt ein Ziel gab, außer irgendwann zu sterben und dann mit seinem bis dahin gesammelten Gold in die Highschore-Annalen einzugehen ... bei mir jedenfalls wird es ein thematisches Objective geben, und dafür sind die Schreine notwendig; z.B. kann man hier den Großen Alten Blutopfer darbringen und um ihre Gunst bitten ... jede Map muß mindestens zwei Schrein-Objekte besitzen - wenn man mehr platziert (was man machen sollte!), werden für die letztendliche Session 0-2 ausgewürfelt, die anderen werden gelöscht. So kommt Abwechslung in jedes Spiel. Und damit das Objective funktioniert, wird natürlich gewährleistet, daß das dafür notwendige Minimum an Schreinen im gesamten Modul vorhanden ist.
Schreine gabs im originalen "Kalawaum", waren da aber fix platziert, und nicht essentiell fürs Vorwärtskommen, die Möglichkeit, die Götter anzurufen (mit unterschiedlichen Erfolgschancen) gab es dort aber auch.

- Auch neu, Spawn-Traps (die gabs auch im originalen Spiel): Spawn-Traps dürfen im Editor platziert werden, können aber auch zufällig erscheinen. Wenn man auf eine solche Falle tritt, wird ein zufälliges Monster in die aktuelle Map teleportiert, welches dann auch sogleich Jagd auf den Spieler macht. Ich habe die Funktionalität für die Monster-Klasse allgemein ausgebaut - sprich, die lieben Kleinen sind selbst in der Lage, die Spawn-Traps zu betätigen ... :twisted:
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Antworten