Aktuelle Zeit: 07.08.2020 20:15

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: 31.07.2020 22:22 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Bild


UPDATE:

Der Teil der Editor-Programmierung, vor dem es mir am meisten gegraust hat, ist geschafft! :coderselixir: :coderselixir: :coderselixir:
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.

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: 02.08.2020 14:42 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Bild

Wie findet ihr meinen Schnabel-Doktor? <)
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. funktioniert mittlerweile 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! :allright:

Bild

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: 02.08.2020 23:38 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Bild

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? :twisted:

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: 05.08.2020 17:48 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Tolles Projekt :allright:

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: 05.08.2020 22:44 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
Bild


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:

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: Gestern 18:11 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
UPDATE:

- Habe eine Möglichkeit gefunden, in allen Verarbeitungs- und Darstellungs-Routinen nur diejenigen Objekte durchzuiterieren, welche in der jeweiligen Map vorhanden sind, ohne dafür die Objekte in eine globale und lokale Liste aufsplitten zu müssen (das würde spätestens, wenn Objekte während des Spiels gelöscht/kreiert werden, extrem messy werden) - der essentielle Trick war, bei Betreten einer neuen Map den stage-Parameter aller Objekte der aktuellen Map auf -1 zu setzen, dann die Liste mit
Code:
SortStructuredList(listName(), #PB_Sort_Ascending, OffsetOf(STRUCTURE\stage), TypeOf(STRUCTURE\stage))
nach Größe des stage-Index zu sortieren, und anschließend alle -1 Paramter zurück auf den Index der aktuellen Map setzen .... Voila, alle Objekte der aktuellen Map befindet sich am Anfang der Liste, und in den jeweiligen Verarbeitungsroutinen kann ich nun, sobald ein stageIndex <> currentMap auftaucht, die ForEach/Next-Schleife vorzeitig canceln. Diesen Schritt muß man einmalig beim Betreten einer neuen Map ausführen, und ich darf ab sofort nicht mehr vergessen, Objekte, die innerhalb des Spiels erzeugt werden, umgehend mit MoveElement() an den Anfang der Liste zu schieben, damit sie sich im gegenwärtigen Verarbeitungskreislauf befinden. /:->
John Carmack wäre wahrscheinlich trotzdem stolz auf mich. :lol:

- Neu sind Wegsteine, die man über einen Text-Button mit einer Inschrift versehen kann - wichtig für Atmosphäre und den Adventure-Charakter des Spiels! Das ging überraschend elegant mit den Gadget-Routinen: ein neues Fenster öffnet sich, in dem man seinen Text schreiben kann, und sobald das Fenster geschlossen wird, werden die ersten 5 Zeilen per GetGadgetItemText() ausgelesen und als String im zugehörigen inscription()-Objekt gespeichert. Editieren geht auch: einfach einen beschriebenen Wegstein mit dem Text-Tool anklicken, und das Bearbeitungs-Fenster öffnet sich wieder. Inschriften sind verlinkt mit den Steinen, also wenn man einen Stein löscht, verschwindet auch die Inschrift.
Und wenn man im Editor mit dem Maus auf einem beschriebenen Wegstein zeigt, wird, falls vorhanden, der zugehörige Text in einer Vorschau eingeblendet.


Bild
Bild

- Was jetzt noch fehlt, ist ein Message-System, mit dem man dem Spieler WÄHREND dem Spiel Informationen und Nachrichten zukommen lassen kann ... die schönsten Wegsteine nutzen nichts, wenn man sie nicht lesen kann ... das geschieht im nächsten Schritt, und dafür muß ich mich auf die Suche nach einem schicken Bitmap-Font machen.

- Habe die Säulen-Grafiken überarbeitet - mit 16x16 Bildpunkten kannst nur soviel anstellen, aber es sieht jetzt besser aus, finde ich. Habe mich bewußt eingeschränkt, da ich so auch als Nicht-Grafik-Profi relativ schnell brauchbare Ergebnisse erziele und es so leichter ist, einen konsistenten Stil aufrechtzuerhalten. Grundsätzlich macht mir der Design-Aspekte, trotz kleiner, bescheidenen Möglichkeiten, sogar Spaß.

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Die Gemäuer von Kalawaum (90s Classic, Rework)
BeitragVerfasst: Heute 00:19 
Offline
Benutzeravatar

Registriert: 06.07.2017 12:24
So langsam tut sich was im Dungeon ...
Das Message-System ist implementiert! :coderselixir:
Ich nutze den tollen Befehl RegisterFont() um Fonts spezifisch für das Projekt initialisieren, ohne daß der Endnutzer diese installieren muß. Sie werden lediglich für die Anwendung "registriert".
Ich habe es maximal modal gecodet - also der Routine createMessage() wird lediglich die entsprechenden Zeilen-Strings mitgeteilt, und aus den übermittelten Daten wird abhängig von Zeilenlänge, Anzahl und gewähltem Schriftfont die korrekte Höhe und Breite der Message-Box ermittelt - sollte sich später der Schriftfont ändern, muß ich an der Routine nichts mehr herumfuckeln - "it just works". Die Message-Box wird zudem "intelligent" platziert: ist der Spieler in der oberen Hälfte des Screens, wird die Box zu seinen Füßen angezeigt, befindet er sich unterhalb der Screen-Mitte, wird sie über ihm angezeigt.


Bild


WEITERE UPDATES:
- Einen letzter Obstacle-Akteur zugefügt: ein Kerzenleuchter.
- Im Editor platzierte Teleport-Traps haben im kompilierten Modul keine absolute Location. Es werden lediglich beim Initialisieren der Map alle vorhandenen Teleport-Traps gezählt, dann werden sie gelöscht, und zufällig neu verteilt. Die einzige Regel ist, daß lediglich in diagonalen Richtungen blockierende- und Special-Tiles angrenzen dürfen (Special = begehbar, mit Effekt; z.B. offene Türen werden auch als Special-Tile gewertet). So bleibt eine 100% Navigation gewährleistet.

_________________
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye