Roguelike-Diary (WIP ...)

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von diceman »

Dankeschön. :)
Ich bin sehr streng, was die Nutzung der Farbpalette angeht, die ich mir gebastelt habe; sämtliche grafischen Elemente im Spiel (Texte, Rahmen, etc.) beziehen sich auf diese Palette (ich habe alle 21 Farbtöne als Konstanten eingelesen). So kann besser eine gewisse Stimmung erzeugen, und die Präsentation wirkt aus einem Guss:

Bild

Es sind insgesamt 4 Tilesets geplant; einmal den "Palast von Hades" (das Default-Set, welches momentan zu sehen ist), ein Overworld-Set ("The Asphodel Meadows"), ein Gewölbe/Keller/Krypta-Tileset, und natürlich den "Tartarus" (die Unterwelt). Damit werde ich mich aber erst später beschäftigen; Tiles, die ich in den folgenden Wochen und Monaten designen werde, gehören alle zum Palast-Set.



Update ...

********** VIDEO **********
Roguelike Diary 22: Atmosphere and Exploration


Auf jeder Dungeon-Ebene kann man Leuchtfeuer finden; jedes Leuchtfeuer, welches man entzündet, vergrößert den Lichtradius. Das ist ein schönes immersives Metagame, da man bei Betreten jeder Ebene zunächst im Dunkeln steht, und erst nach und nach durch Erforschen der Umgebung "Licht ins Dunkle" kommt. Der Lichtradius beeinflusst auch den Automapping-Radius, welcher im Fog of War bereits erforschtes Gebiet als Umriss anzeigt. Im fertigen Spiel ist geplant, abhängig von der "Welt", in der man sich gerade befindet, einen bestimmten initialen Lichtradius zu definieren, eine Mindestmenge an Leuchtfeuern, sowie eine (variable) Obergrenze. So dunkel wie im Video wird anfangs es nur im "Tartarus" sein, und man wird auch nur in den "Asphodel Meadows" in der Lage sein, seinen Lichtradius aufs Maximum zu steigern. Der Tartarus ist das gefährliche Endgame; wenn man den einmal betreten hat, kann man nicht mehr zurück in den Palast, und jede weitere Ebene führt einen tiefer hinab, auf der Suche nach Persephone. Und um den Tartarus zu betreten, muß man zunächst ausreichend Gold sammeln um den Fährmann zu bezahlen, damit er einen sicher absetzt.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Roguelike-Diary (WIP ...)

Beitrag von Mijikai »

diceman hat geschrieben:...
Auf jeder Dungeon-Ebene kann man Leuchtfeuer finden; jedes Leuchtfeuer, welches man entzündet, vergrößert den Lichtradius. Das ist ein schönes immersives Metagame, da man bei Betreten jeder Ebene zunächst im Dunkeln steht, und erst nach und nach durch Erforschen der Umgebung "Licht ins Dunkle" kommt. ...
:allright:
Anmerkung: Noch besser würde es mir gefallen wenn die Feuerstellen auch selbst die Karte erhellen.
Auch cool wäre eine Fackel die der Spieler tragen kann (bestimmt schon geplant).
Wenn diese ausgerüstet wird kann dann z.B. kein Schild mehr getragen werden.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von diceman »

Ja, das mit den Feuerstellen kann man optimieren ... technisch ist das kein Problem, meine Bresenham-Routine ist maximal modular aufgebaut, die kann alles und mit jedem. Die Sache ist halt die, wie gut das aussieht, da ich nicht mit dynamischem Licht in 3D-Umgebung hantiere, sondern mit Taschenspielertricks arbeite. :wink: Ich probiere nachher mal was aus. :)

Fackeln hatte ich in der Tat bereits in der Version, die noch unter Blitzbasic lief. So etwas in der Art wie du vorgeschlagen hast, also daß man sich für ein Offhand-Item entscheiden muß, Schild oder Fackel. Eventuell könnte man Fackeln auch mit Stats ausstatten, so daß man diese im Notfall als rudimentäre Waffe benutzen kann (dann aber schneller ausgeht); ein Licht-Spell für magiebewanderte Charaktere wäre alternativ denkbar ... Design-Space gibt es wahrlich genug. Andererseits möchte ich das Gameplay mit den Leuchtfeuern nicht zu zu sehr unterwandern (es macht tatsächlich großen Spaß, die Leuchtfeuer zu entdecken, und es ist jedesmal ein Erfolgserlebnis, wieder eines zu entzünden, und der Nutzen stellt sich auch rasch ein, ist zudem ein permanenter Vorteil, den man dadurch gewinnt), also wenn ich Fackeln implementiere, dann nicht als inflationäre Items, die man stackweise hordet, sondern eher als rar gesäte Support-Items, die kleinen temporären Statboost geben, z.B +3 auf Lichtradius, der dann nach und nach abnimmt, während die Fackel runterbrennt.
Außerdem experimentiere ich mit einer Mechanik, die ich zufällig entdeckt habe, und auch zunächst als Bug dokumentiert wurde - und zwar kann man, wenn man eine Fernkampfwaffe ausgerüstet hat und die Maus über den Fog of War bewegt, auch Monster anvisieren, die sich außerhalb des Sichtradius befinden (sofern sich diese innerhalb der Reichweite aufhalten und auch nicht blockiert werden); ich hatte dann die Idee, daß man das prima zum Feature umfunktionieren könnte, also man Schüsse ins Blaue abgeben kann. Man sieht, daß da was ist, man bekommt auch das Treffer-Feedback, aber auf was genau man da geschossen hat, das ist nicht immer gleich auf den ersten Blick klar, bzw. eröffnet das weiteren Design-Space, wie zum Beispiel einen Skill, der einen detaillierte Informationen über Ziele im Fog of War gibt. Und genau aus dem Grund hätte ich zwar Lust auf Fackeln, würde diese aber nicht derart mächtig und unverzichtbar designen, wie vielleicht üblich in anderen RPGs.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von diceman »

Mijikai hat geschrieben:Anmerkung: Noch besser würde es mir gefallen wenn die Feuerstellen auch selbst die Karte erhellen.
So in etwa? :)

Bild

Ich habe den Effekt bewusst schlicht gehalten und lediglich einen flat falue fall off um das Leuchtfeuer herum kreiert; der Bresenham-Algorithmus verhindert, daß Tiles hinter Hindernissen beleuchtet werden. Auswirkungen aufs Gameplay hat das nicht. Auf etwaige Berechnungen, ob sich Lichtquellen überkreuzen und so den Schein auf bestimmten Tiles verstärken, habe ich verzichtet, das wäre Overkill in meinen Augen, und kann aufgrund der statischen, Tile-basierten Darstellung auch schnell nach hinten losgehen - wenn zuviele Alpha map values miteinander interagieren, wirkts irgendwann nur noch messy.
So ein kleiner Luminiszenz-Effekt ist aber tatsächlich der Atmosphäre zuträglich.

Bild
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Roguelike-Diary (WIP ...)

Beitrag von Mijikai »

diceman hat geschrieben: So in etwa? :)
:allright:

Sieht klasse aus, bringt gleich mehr Realismus :)
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von diceman »

Ich mir gestern ein paar Gedanken gemacht ... und zwar habe ich mir mit sizeOf() einmal die Größe meiner actor-Struktur ausgeben lassen. Stolze 1998 Bytes ist die groß. Die actor-Struktur ist mein primäres Werkzeug, die brauche ich permanent, im Grunde ist alles (grafische Elemente, Monster, Items, etc.) ein actor; ich arbeite ausschließlich mit linked lists.
Ich muß zugeben, ich habe keine Ahnung was diese Größe bedeutet - ist das viel? Zuviel? Gibt es Fallstricke, die ich bei so großen Strukturen beachten muß, und Maßnahmen, die ich eventuell ergreifen sollte? Das Programm läuft ansonsten super-fluffig; letzte Woche ist mir allerdings einmal der Debugger abgestürzt mit der Meldung "The Debugger has quit unexpectedly"; rekapitulieren konnte ich den Fehler nicht. Könnte das ein Hinweis auf einen Stack Overflow sein? Würde mich wundern, da ich keine Rekursion benutze.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
TroaX
Beiträge: 659
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
Wohnort: NRW
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von TroaX »

diceman hat geschrieben:Ich mir gestern ein paar Gedanken gemacht ... und zwar habe ich mir mit sizeOf() einmal die Größe meiner actor-Struktur ausgeben lassen. Stolze 1998 Bytes ist die groß. Die actor-Struktur ist mein primäres Werkzeug, die brauche ich permanent, im Grunde ist alles (grafische Elemente, Monster, Items, etc.) ein actor; ich arbeite ausschließlich mit linked lists.
Ich muß zugeben, ich habe keine Ahnung was diese Größe bedeutet - ist das viel? Zuviel?
Unter 2 KB für eine Struktur ist nun wirklich noch nicht viel. Da brauchste dir eigentlich keine Sorgen machen.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box :lol:
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von diceman »

Okay, danke, das beruhigt mich. Und es läuft ja auch gut. :-)
Ist halt so, daß ich vor diesem Roguelike-Projekt noch nie mit größeren Strukturen gearbeitet habe, das waren meistens so Witzdinger mit maximal 5 Parametern. :D Muß dazu sagen, daß ich, wo ich kann, die Variablentypen so klein wie möglich halte, also mir dreimal überlege, ob das unbedingt eine Integer sein muß, oder ob auch ein Byte ausreicht.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von NicTheQuick »

Wenn du Geschwindigkeit brauchst, nutze immer Integer. Speicherplatz ist heutzutage nun wirklich kein großes Problem mehr. Überlege dir einfach wie viele dieser Strukturen du im Speicher halten musst und multipliziere es mit der Strukturgröße. In ein Megabyte passt deine Struktur ja schon 524 mal rein, also so viele Aktoren kannst du mit 1 MB erstellen. Enthält deine Struktur noch Arrays, LinkedLists oder Maps, wird das allerdings nicht mit SizeOf() angezeigt, die müsstest du extra dazu addieren. In der Struktur haben diese Datentypen lediglich die Größe eines Pointers.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Roguelike-Diary (WIP ...)

Beitrag von RSBasic »

Bezüglich Geschwindigkeit würde ich dir, falls du viele Prozeduraufrufe in der Schleife hast, Macros empfehlen. Macros werden beim Kompilieren aufgelöst (Code wird an die Stellen eingefügt) und ist damit deutlich schneller als viele Prozeduraufrufe. Der einzige (kleine) Nachteil wäre, dass deine Executable-Datei etwas größer wird.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten