Die Gemäuer von Kalawaum: Wer kennt es?

Alle Spiele, egal ob am PC, auf der Konsole oder dem Handheld werden hier diskutiert.

Beitrag » 28. Aug 2020 18:01 #76

Benutzeravatar
The Gravedagokck
Wiesenchronist
Moderator
Beiträge: 42429
Kontaktdaten:

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von The Gravedagokck »

Wow, es geht voran. Hast du eigentlich mal überlegt, die PC Games, Gamestar oder so zu kontaktieren mit deinem Projekt? Ist ja "legal", da du ja ein Spiel remakest, dessen "Innereien" sogar (hier) zur Verfügung gestellt wurden. Vielleicht hat ja ein Schreiberling Interesse und der Runkel liest es dann vielleicht ja auch eher. :)
Got to be who you are in this world
Never walk out on your own story
But if you ever need me again
You know that I'll be, I'll be around.

Beitrag » 5. Sep 2020 10:33 #77

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Woah, es ist total viel passiert in den letzten Tagen ... :kaffee:
Zuviel, um das hier zu bloggen. :uff: Stattdessen gibts ein kleines Video mit Gameplay-Eindrücken:

https://www.youtube.com/watch?v=_nyXHeW8Zoc

Die Wasser-Tiles habe ich komplett rausgeschmissen. Das tat mir weh, weil ich da unter anderem eine schöne 2-Phasen-Animation zu gebastelt habe. :ugly: Aber es war die beste Entscheidung - es passte design-mäßig nicht in das Setting, und die geplanten Gameplay-Tweaks haben überhaupt nicht funkioniert. Weniger ist mehr.

Das Sanity-System ist derzeit ohne Konsequenzen. Da bin ich zu Zeit dran - was ich mir ursprünglich ausgedacht habe, funktioniert auch nicht, habe jetzt aber eine coole Idee, die ich derzeit implementiere und teste. Und wenn das nicht funktioniert, schmeiße ich es auch raus. :uff:
Dann gibts noch ein neues Monster, den Ghoul - von allen Grafiken, die ich bislang designt habe, gefällt er mir bislang am Besten:

Clipboard40.png
Clipboard40.png (337 Bytes) 552 mal betrachtet
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 8. Sep 2020 18:27 #78

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

UPDATE:

- Das Sanity-System ist fertig - es ist ganz anders geworden als zu Anfang geplant. Es macht das Spiel interessanter anstatt schwerer, ein besonderer Effekt in Zusammenhang mit der Mechanik hat mich 5 Jahre meiner Lebenszeit gekostet (eine 8-Stunden-NonStop-Programmier-Session voller Bugs und WTF-Glitches :autsch: :kaffee: ), war mighty stolz als es vollbracht war, und ich werde es nicht spoilern.

- Außerdem ist jetzt neu, daß die komplette Map am Anfang des Spiels eine zufällige Flip/Rotation-Orientierung bekommt, so muß man sich bei jedem neuen Spielstart neu orientieren muß, was für mehr (visuelle) Abwechslung sorgt.

- Und dann gibts ein neues Monster, die Dhole, mit der meiner Meinung nach bislang coolsten Ability: sie kann sich einbuddeln und in einer deterministischen Konstellation zum Spieler wieder ausbuddeln (sofern das Tile frei ist). Und wenn man eine Dhole auf eine Lochfalle lockt, und es befindet sich mindestens ein weiteres Loch auf der Map, buddelt sie sich dort hin.
Die Dhole macht nicht sonderlich viel Schaden, hat aber den bislang größten Health-Pool. Man kann sie sich vom Leib halten indem man durch geschickte Positionierung ihre Buddel-Fähigkeit exploited, sie wird einen dennoch gnadenlos durchs ganze Level verfolgen.

Clipboard41.png
Clipboard41.png (352 Bytes) 530 mal betrachtet

Und noch ein kleiner Video-Showcase (das Video könnt ihr nach 50 Sekunden abbrechen, danach passiert nichts mehr):


https://www.youtube.com/watch?v=BfTlMwpxxGI
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 9. Sep 2020 10:47 #79

Benutzeravatar
Lord Helmchen
Fuck everyone and Run
Beiträge: 11378

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von Lord Helmchen »

Hab mir die Videos angesehen. Finde deinen Einsatz toll und wie du hier die Fortschritte trackst. :hoch:
Laufchallenge (in km):
2011: 933,7
2012: 1.171,6
2013: 1.157,8
2014: 1.075,9
2015: 1.167,9
2016: 1.173,3
2017: 1.459,3
2018: 793,8
2019: 724,04
2020: 1.066,83

Beitrag » 9. Sep 2020 22:26 #80

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Danke fürs Reinschauen. :)

Heute habe ich Dark Work erledigt ... unliebsame Operationen, für die es kein visuelles oder spielmechanisches Feedback gibt, die aber unverzichtbar sind (und die ich lange vor mir hergeschoben habe), z.B. Menüstruktur und File-Operationen. Bislang konnte man nur aus dem Editor heraus testen, aber im richtigen Spiel müssen weitaus mehr Daten geladen, aktualisiert und bereitgestellt werden, gerade wenn man das Spiel nicht neu initialisiert, sondern eine bestehende Konfiguration lädt; Kopfzerbrechen hat mir die variable Flip/Rotation-Orientierung bereitet, daß die richtig wieder hergestellt wird (und dem Wechsel zwischen Ebenen standhält), da führten einige Links in die Pampa.

Das läuft jetzt rund, die Menüfunktionen sind fertig (allerdings nur strukturell), und man kann fließend zwischen diversen Spielmodi (Spielstand laden, Neues Spiel starten, Editor, aus dem Editor heraus testen) wechseln. Der Spielstand wird automatisch gespeichert, sobald man das Spiel verlässt (und gelöscht, wenn man stirbt, eh klar). An den überall im Spiel verteilten Schreinen kann man gegen einen Obulus für die Großen Alten genau einen permanenten Spielstand anlegen ("Binding Ritual"), an den man wieder zurückteleportiert wird, wenn man stirbt. Diesen kann man so oft wie man will nutzen, und auch mit einem neuen Spielstand überschreiben, solange man ausreichend Crystal Shards (gleichzeitig Währung und Punkte für die Highscore-Liste) besitzt.
Insgesamt kommt man so auf 4 verschiedene Files, die das Spiel verwalten muß - der Endnutzer merkt davon nichs, der kriegt immer den richtigen File-Typen gefiltert:

• .edi-Files: Projekt-Dateien, die man in den Editor laden, ändern und testen kann.
• .cal-Files: Kompilierte Module - die werden geladen, wenn man ein neues Spiel startet. Effektiv eine Kopie der .edi-Files, aber entsprechend getagged, so daß sie nicht editiert werden können.
• .sav-Files: Autosaves, die automatisch angelegt werden, wenn man das Spiel verlässt, so daß man zu einem beliebigen Zeitpunkt das Spiel fortsetzen kann. Dies sind effektiv Kopien der .cal-Files, zuzüglich aller Informationen, wie sich Map und Spiel-Objekte verändert haben.
• .rit-Files: "True Save", also an Schreinen selbst angelegter Spielstand, der nicht beim Verlassen des Spiels überschrieben wird.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 12. Sep 2020 01:44 #81

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Clipboard42.png

UPDATE:

Irgendwie Endspurt-Feeling ... :kaffee:
Es ist aber noch einiges zu tun. Wird wahrscheinlich doch Oktober bis ich mich traue was Spielbares zu präsentieren.

Wieder ein neues Monster fertig, die Leng-Spider (oben zu sehen).
Die war bislang am aufwendigsten zu programmieren - auch das Design ist mir schwergefallen, da man mit 16x16 Bildpunkten ziemlich jonglieren muß, damit man Beine unterscheiden kann. Deswegen auch nur 6 anstatt 8 Beine :ugly: - scary ist sie trotzdem. :uff:
Wann immer eine Spinne spawnt, droppt sie gleichzeitig 1-5 Spinnweben (BellCurve-Roll) in einem festgelegten Radius um sich herum (es gibt dabei keinen Check, ob auf dem entsprechenden Tile bereits ein Netz liegt - initial ein Bug, den ich kurzerhand zum Feature erklärt habe). Diese werden mit Alpha-Value gezeichnet, man muß also genauer hinschauen. Wenn der Spieler in ein Netz läuft, wird er für 3 Runden gestunned, bzw. wenn er in dieser Zeit Schaden erleidet, wir der Stun um 1 Runde verkürzt, also ein Monster kann einen in dieser Zeit maximal 2x treffen. Das gleiche gilt für Monster - wenn man es geschickt anstellt, kann man Monster in Spinnweben locken, um sich entweder einen Fluchtvorsprung zu verschaffen, oder die Gunst der Stunde nutzen um kritischen Schaden auszuteilen.. Die Leng-Spinne selbst ist immun gegen ihre eigenen Netze, klar. Sobald der Stun abgeklungen ist, wird eine 50%-Chance gewürfelt, ob das Netz-Objekt bestehen bleibt, oder gelöscht wird.
Außerdem kann die Spinne einen vergiften - die Mechanik dahinter ist ziemlich unique, ich glaube die gabs so noch in keinem Roguelike: Jeder Treffer hat eine Wahrscheinlichkeit, einen Poison-Stack zu produzieren - jeder Poison-Stack "blockiert" beim Opfer eine zufällige Richtung für die Hitpoint-Regeneration. Es gibt allerdings keine Gegenkontrolle ob die jeweilige Richtung schon blockiert ist - das war ursprünglich so implementiert, war aber fucking op. Maximal 7 Stacks kann der Spieler ansammeln - es bleibt also in jedem Fall eine Richtung frei, in der man wieder Hitpoints regenerieren kann. Und sobald man sein Maximum an Hitpoints zurück hat, werden alle Poison-Stacks geheilt.
Das wirklich coole an der Spinne sind aber tatsächlich die Spinnweben - die geben einen gewaltigen Atmosphäre-Boost, denn meistens sieht man im Spiel schon vorher die Netze und ist dementsprechend auf der Hut, kann sogar effektiv versuchen, der Spinne aus dem Weg zu gehen.

Außerdem das Consumable-System weiter verfeinert - es sind jetzt "echte" Consumables samt Stacks (wie auf dem Screenshot oben zu sehen). Solange man sie bei sich trägt, geben sie einen prozentualen Bonus auf Geistige Gesundheit. Man kann sie jedoch elektiv konsumieren für einen kurzfristen Boost auf die Hitpoint-Regeneration. Also kein Heiltrank, der einen instant aufpäppelt, rumlaufen und auffüllen muß man weiterhin selbst. Ein paar wenige Monster haben die passive Fähigkeit, wenn sie neben einem stehen, einen zusätzlichen Stack "abzusaugen", sobald man ein Consumable konsumiert.

Last but not Least ist der Editor zu einem ziemlich mächtigen und komfortablen Tool herangewachsen. Man kann z.B. zu jedem Level einen "Prelude"-Text verfassen, der einmalig angezeigt wird, wenn man den Level betritt. Und dann habe ich noch eine supercoole Import/Export-Funktion geschrieben auf die ich sehr stolz bin: man kann jetzt einzelne Maps aus Modulen extrahieren, und diese auch seperat wieder importieren (beim Import wird dann die gegenwärtig aktive Map mit den neuen Level-Daten überschrieben):

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

Beitrag » 14. Sep 2020 00:02 #82

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

UPDATE:

Eine neue Ability für den Nightgaunt, "Evasion" (passt am besten zu dessen Fantasy, daß er schlüpfrig ist a.k.a. gerne wegfliegt).
Evasion kann einmalig mit einer 50% Chance triggern, sobald die Hitpoints unter 66% sinken (dann erst wieder, wenn die Hitpoints wieder über den threshold-Wert gestiegen sind, und erneut unter 66% fallen).
Das Monster beginnt zu fliehen, und zwar nicht im normalen Fluchtmodus, sondern im "forced"-Modus, der auch durch die Fackel erzeugt wird, das heißt das Monster bekommt eine gewisse Anzahl (abhängig vom erzeugten Schaden) fleeSteps zugeteilt, die runterzählen, und erst wenn sie auf Null sind, kehrt das Monster in den normalen #monsterStateChasing zurück. Unterschied zur mit der Fackel erzeugten Flucht: sobald ein Monster mit aktiver Evasion Schaden erleidet, cancelt es sofort den Flucht-Modus.

Und neben vielen weiteren kleinen Bugfixes, Code-Optimierungen und Gameplay-Tweaks gibt es auch ein neues Monster, den Shoggoth:
Der Shoggoth hat die sehr coole Ability, daß er "Dunkelheit hinter sich herzieht". Effektiv bedeutet das, daß er mit jedem Schritt um sich herum den fogOfWar wieder zudeckt. Das kommt besonders cool wenn er flieht, da er dann selbst im fogOfWar verschwindet, und man dabei zusehen kann, wie sich auf bereits aufgedeckten Arealen wieder Dunkelheit ausbreitet, bzw. sich die Dunkelheit nähert, wenn der Shoggoth den Fluchtmodus cancelt:

Clipboard44.png

Das Feuer, welches auf dem Screenshot zu sehen ist (2-phasig animiert!!1!, befindet sich auf jeder Map. Und zwar immer an anderer Stelle (Feuer können ein zufälliges Obstacle-Objekte ersetzen, nicht genutzte Schrein-Locations, oder einzelne Bäume ohne orthogonal angrenzende blocking Tiles.
Man kann es anzünden und erhält so einen größeren Sichtradius, eine Chance auf eine +1 Bonus auf Geistige Gesundheit, außerdem hebt sich der dunkelblaue "Nebel", welche initial beim Betreten einer neuen Map mit Alpha-Value über jedes Tile gezeichnet wird. Man hat keine großen Nachteile wenn man es verpasst, aber es fördert den Entdecker-Drang und man freut sich doch, wenn man es gefunden hat. :)

Außerdem einen Critical-Hit Check implementiert (kann nur für den Spieler triggern, wenn man Schaden in der 95-100% Range der jeweilig ausgerüsteten Waffe erzeugt). Hat keine spielerischen Auswirkungen, aber es gibt einen nicen Screenshake und die bei jedem Schaden erzeugte floatingNumber wird größer und mit "!" gezeichnet.
Fühlt sich gut an. :hoch:
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 21. Sep 2020 16:15 #83

Benutzeravatar
The Gravedagokck
Wiesenchronist
Moderator
Beiträge: 42429
Kontaktdaten:

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von The Gravedagokck »

Klingt alles sehr positiv, tüftelst du gerade an was Großem? Schon eine Woche kein Update mehr. :D
Got to be who you are in this world
Never walk out on your own story
But if you ever need me again
You know that I'll be, I'll be around.

Beitrag » 28. Sep 2020 00:23 #84

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Vielen Dank fürs interessierte Nachfragen! :)

Ich bin weiter dran! Es ist nur so, daß mein Urlaub vorbei ist, und ich wieder meine Freizeit einteilen muß. Ich habe es mir dennoch zur Pflicht gemacht, jeden Tag ein paar Zeilen Code zu schreiben. Ein bißchen Pause habe ich mir dennoch gegönnt, da ich in den vergangenen Wochen derbe viel Meilensteine abgearbeitet habe und ich mich ausgebrannt gefühlt habe

Die Woche Pause hat in soweit gut getan, daß ich einige Features, die ich implementiert habe, nüchtern überdenken konnte. Zum Beispiel hatte ich dem Ritualdolch und der Sense einen Bleed-Effekt, und der Axt und der Alien Energy Coil einen Stun-Effekt beschert - für den Blunderbuss war sogar ein Knockback-Effekt geplant! Leider ist mir bewusst geworden, daß die Effekte spielerisch nicht funktionierten - wenn sie triggerten, waren sie op, und wenn man sie so rar machte, daß sie nur noch selten in Erscheinung traten, fühlte es sich random und unbefriedigend an. Also habe ich die unvermeidliche Konsequenz gezogen, und den entsprechenden Code auskommentiert. Es tat weh, aber ich glaube es war zum besten (im Original KALAWAUM gab es dergleichen überhaupt nicht). Den kreierten Design Space habe ich jedoch beibehalten, vielleicht fällt mir in ferner Zukunft etwas vernünftiges dazu ein.

Ebenfalls rausgeflogen ist das "Covenant"-System. Die Mechaniken im Spiel sind schlicht nicht komplex genug (was ich im Übrigen als Stärke und Alleinstellungsmerkmal betrachte) um ein brauchbares Fundament für ein solches System abzugeben. Jeder Schrein bleibt aber einem bestimmten Gott gewidmet (und die Götter werden auch - wie im Original-KALAWAUM - in jedem Spiel einen zufällig zugeteilten, konstanten Charakter erhalten), nur kann man keinem Orden mehr beitreten. Was ich beibehalten habe, weil ungemein thematisch, ist die Option, daß man an Schreinen gegen einen Obulus einen permanenten Speicherpunkt anlegen kann (a.k.a. Binding Ritual). Die Kosten dafür erhöhen sich bei jeder Nutzung - die Formel hierzu liefert momentan Der Kleine Gauß (muß zugeben, bin großer Fan des Algorithmus :eek: ).

Clipboard45.png
Clipboard46.png

Was man eventuell in den Screenshots sieht (und im Spiel besser wirkt als auf einem Standbild), ist ein optionaler Retro-Effekt, der sich an- und abschalten, sowie in seiner Intensität regulieren lässt - Scanlines und prozedural generiertes Gauß'sches Rauschen, Fuck Yeah! :D

Ebenfalls neu (und das bleibt auf jedem Fall drinnen): auf jeder Map gibt es jetzt ZWEI Feuerstellen. Eine der beiden funktioniert wie weiter oben im Post beschrieben, die andere erhöht zwar nicht die Sichtweite, gibt aber einen "Sprint"-Credit (und einen thematischen Text). "Sprints" ist eine Mechanik, die ich mir im Original-Kalawaum öfters gewünscht habe: man startet mit einem Credit, und an jeder entsprechenden Feuerstelle, die man freischaltet (eine pro Map), erhält man einen weiteren Credit. Wenn man einen Sprint aktiviert, pausieren alle Monster für eine Runde, und man kann einen Schritt machen (keinen Angriff!), ohne daß sich Monster danach bewegen. Das hört sich nicht nach viel an, kann einem aber oft genug das Leben retten, wenn man sich in eine Ecke manövriert hat, und man genau weiß, daß man einen Treffer kassieren kann ohne zu sterben, aber man zwei Schritte braucht, um wieder aus der Ecke herauszukommen. Beide Feuerstellen werden prozedural generiert, sind also in jedem Spiel an anderen Stellen zu finden, das erhöht den Exploration Appeal gehörig.

Und dann habe ich angefangen, eine Demo-Modul zu erstellen. Das Original-KALAWAUM hatte sicher um die 50-100 Maps (geschätzt, ich habe es nie durchgespielt), ich peile fürs erste um die 10 Maps an. Dann bekommt man einen guten Eindruck, was das Spiel kann und wie es sich anfühlt.

TO DO LISTE:
- die zwei letzten Monster designen
- die Scaling Routine schreiben, welche den Schwierigkeitsgrad für jede Map bestimmt und kontinuierlich erhöht (das wird die letzte große, große Herausforderung bei dem Projekt, die nicht nur Ausdauer, sondern kiloweise Hirnschmalz abverlangt, aber ich habe bereits Ideen gewälzt und Modul-Tests geschrieben und halte euch auf dem Laufen - ich bin da was ganz Coolem auf der Spur ...)
- Effekte für die Schreine implementieren (essentiell, da Feature im Original-KALAWAUM)
- Modul mit einigen Maps fertigstellen, inklusive Tutorial-Map, die einen intuitiv mit den grundlegenden Mechaniken des Spiels vertraut macht)
- Menü designen (Funktionalität der einzelnen Punkte ist implementiert, was fehlt ist das interaktive und grafische Element)
- Sounds inzufügen (Lizenz für die 8-Bit Roguelike Sounds-Bibliothek von Oryx Design Labs liegt vor :hoch: ).
- Testen, testen, testen
- Das Objective designen und coden
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 11. Okt 2020 13:10 #85

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

UPDATE:

Ich weiß jetzt, was damit gemeint ist, wenn Leute sagen, die letzten 5-10% eines Programmier-Projektes sind die schwierigsten. Der Code wird länger, und immer wieder kommt es vor, daß man eine Funktion hinzufügt, und deren Wechselwirkung mit einem anderen Code-Snippet nicht zuende gedacht hat ... dann heißt es, die Fehlerursache finden, und den Code weiter abstrahieren, um potentielle zukünftige Bug-Hives zu minimieren.
Aber ich bin so weit gekommen wie noch nie zuvor, und ich bleibe dran. Keine Quantensprünge mehr, aber Babysteps - ich befinde mich weiter auf der Zielgeraden!
Gestern im Nachtdienst habe ich das vorletzte Monster fertig gecodet und designt, den Star Spawn: Der Star Spawn ist das stärkste Monster im Spiel, und hat einen Knockback-Effekt. Für den Knockback konnte ich die Mechaniken der Switch-Ability des Nightgaunts verwenden: effektiv ist das ein ferngesteuerter Spieler-Move, nach dem der Spieler sofort wieder am Zug ist. Vorteil dieser Vorgehensweise ist, wie schonmal weiter oben erklärt, daß alle Effekte und Mechaniken eines normalen Spielzuges angewendet werden = emergent complexity: wenn der Spieler vor einem Loch steht und das Monster knockt ihn zurück, stürzt er in die Falle. Ebenso kann das Monster den Spieler aber auch auf ein Feld mit einem Item schubsen, welches dann sofort aufgesammelt wird. Oder der Spieler "bumpt" in ein anderes Monster, welches daraufhin aktiviert wird (und das ursprünglich deaktiviert).

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

Beitrag » 13. Okt 2020 20:43 #86

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

UPDATE:

Uuuuunnd das letzte Monster (von zehn insgesamt) ist fertig! :)
Das originale KALAWAUM hatte, glaube ich, acht, und von denen besaß nur der Geist so etwas wie "Persönlichkeit", alle anderen Monster unterschieden sich lediglich in den Base-Stats (Hitpoints und Schadens-Level). Bei mir hat jedes Monster mindestens eine Special-Ability, bzw. einen Trait spendiert bekommen.
Das letzte Monster, der Spectre, verhält sich wie sein Pendant (der Geist) im Original - seine Mechaniken will ich nicht spoilern, da die erste Begegnung mit ihm mit einer Überraschung aufwartet. Sobald man ihn "durchschaut" hat, ist sein Trait aber eher ein Gimmick. Trotzdem ein cooles und thematisches Monster.
Beim Design habe ich mir erlaubt, in Ansätzen den Kultisten zu recyclen ... allerdings wird der Spectre mit Alpha-Map gezeichnet, erscheint also leicht transparent:

Clipboard48.png

Prozedurale Elemente werden nicht länger beim erstmaligen Betreten einer Map berechnet, sondern einmal zu Beginn für ALLE Maps. So kann man sich keine idealen Item/Monster-Konfigurationen mehr "cheesen", indem man einen Speicherstand vor Betreten einer neuen Map anlegt, und dann solange stirbt und respawnt, bis einem die stärkste Waffe quasi vor die Füße gelegt wird. Dabei ist mir aufgefallen, daß das Berechnen einer Map bis zu 250 Millisekunden dauern konnte!
Das hört sich nicht nach viel an, und fällt bei einer einzelnen Map nicht ins Gewicht - bei einem Modul mit 25 Maps müßte man initial allerdings satte 6 Sekunden warten, bis das Spiel komplett initialisiert ist ... das ist zumutbar, aber geht besser, habe ich mir gedacht. Konnte dann auch, nach gründlicher Code-Review und Optimierung, die Zeitspanne auf auf unter 20 ms (pro Map) drücken! :uff: :uff: :kaffee: :hoch:

Und ein zeitgemäßes QoL-Feature habe ich implementiert: wenn man eine Feuerstelle wiederholt besucht, und es befindet sich im Umkreis von (#xMax/8)+(#yMax/8) kein Monster, regenerieren die Hitpoints sofort auf maxValue. Da das Rumlaufen und Regenerieren eine zentrale Mechanik des simplen Kampfsystems darstellt, ist die Abfrage ob Monster in der Nähe sind, unbedingt notwendig - aber ansonsten besteht kein Grund, das eher stupide Auffüllen nach einem Kampf NICHT abzukürzen; dank notwendigen Besuch bei einer Feuerstelle bleibt es immerhin ein thematisch motiviertes Feature (fällt allerdings erst auf höheren Leveln wirklich ins Gewicht, wenn die eigenen Hitpoints auf den Wert 100 und drüber steigen).

--> Nächster Schritt:
Das Coden der Scaling-Routine ... davor graut es mir ein wenig, aber auch diese Herausforderung werde ich irgendwie meistern. ;)
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 14. Okt 2020 15:50 #87

Benutzeravatar
The Gravedagokck
Wiesenchronist
Moderator
Beiträge: 42429
Kontaktdaten:

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von The Gravedagokck »

Super, das sieht ja alles schon sehr weit fortgeschritten aus. Was würdest du sagen, wie viele Stunden hast du schon in das Projekt gesteckt? :D
Got to be who you are in this world
Never walk out on your own story
But if you ever need me again
You know that I'll be, I'll be around.

Beitrag » 15. Okt 2020 11:54 #88

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Stunden zählt man nur, wenn man die verbrachte Zeit hasst ... in diesem Projekt steckt jedoch ausschließlich Liebe. :p
Habe im Juli angefangen - am Anfang habe ich ganz schön durchgepowert, an manchen Tagen habe ich bis zu 10 Stunden non-Stop durchprogrammiert ... jetzt befinde ich mich im Endspurt, und ich lasse es ruhiger angehen, versuche aber jeden Tag mindestens ein paar Zeilen Code zu schreiben. Eigentlich wollte ich bereits im September etwas spielbares hochgeladen haben, aber da kam mir meine Ambition dazwischen, die Monster mit Spezialfähigkeiten auszustatten - das war ein gefährlicher Move, da man so Gefahr läuft, sich zu verzetteln, aber im Endeffekt könnte ich jetzt über das Ergebnis nicht glücklicher sein. Habe natürlich in der Zeit auch viele Mechaniken erfolglos getestet und dann wieder verworfen - sich von liebgewonnenen Ideen zu trennen ist manchmal schmerzhaft, aber unbedingt notwendig.
Vielen Dank für dein Interesse. :)
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 23. Okt 2020 13:06 #89

Benutzeravatar
diceman
Beiträge: 46

Re: Die Gemäuer von Kalawaum: Wer kennt es?

Beitrag von diceman »

Clipboard50.png

UPDATE:
Die Scaling-Routine ist fertig! :uff: :kaffee:
Interessiert jemanden, was die Prozedur da oben leistet? Egal, ich erkläre es trotzdem ...
KALAWAUM hatte ein semi-Open World-Design ... nicht was Mechaniken angeht, sondern die Architektur: die Maps waren untereinander verknüpft, man hatte mehrere Optionen, wo man als nächstes hingehen wollte; in der Praxis gab es dann doch einen mehr- oder weniger optimalen Pfad, da die Bereiche dank Level-Scaling gegated waren ... das originale KALWAUM hat es sich recht einfach gemacht: die Map, welche im Editor als erstes erstellt wurde, hatte den Level 1, die zweite Map Level 2, etc. Der Level-Index ist die Blaupause für den PCG-Generator, wie stark ein Monster auf der jeweiligen Map maximal sein darf (es gibt eine min/max-Range). Das bedeutete zugleich, daß man beim Erstellen eines Moduls mit einem Plan vorgehen mußte, daß es stets einen optimalen Pfad durch den Dungeon gab, und sich der Spieler nicht in einem soft dead end wiederfand, da alle Maps um ihn herum mit Level 30+ Monstern bevölkert waren, die ihn onehitten.
Das geht besser, habe ich mir gedacht.
Eine Möglichkeit, die ich initial erwägt habe, war ein drag and drop-System, wo man das Scaling der Maps frei definieren konnte. Das erwies sich jedoch als clunky und umständlich, also war die nächste Überlegung: warum den ganzen Prozess nicht automatisieren? Im besten Falle mit variabler Komponente, so daß bei jedem Neustart andere Wege offenstehen, aber eben immer ein optimaler Pfad; mit geeigneter Ausrüstung ist es später durchaus möglich, auch höher stufige Gebiete zu erkunden, welche sich abseits der optimalen Route befinden - da der Spieler abhängig von Stärke der besiegten Feinde levelt, reguliert sich das System quasi von selbst; also wenn man es schafft, ein besonders starkes Monster früher zu besiegen, öffnen sich einem neue Pfade, während man so in niedrig-stufigen Gebieten weniger bis gar keine Erfahrung mehr erhält.

Die Antwort auf das Problem lieferte der Prim-Algorithmus, welcher bei der Generierung von perfekten Labyrinthen zum Einsatz kommt, und dessen leicht modifizierte Applikation man oben im Screenshot sehen kann:
Die Map, in welcher sich die Startposition befindet, hat automatisch immer den scalingLevel = 0. Für jede Map ist stets abfragbar, wohin globale Links (Übergange zu anderen Maps) führen. Das sind alle Informationen die man braucht!
Zu Beginn wird ein einziges dummy()-Element kreiert, welches den Index der Start-Map kennt. Außerdem wird der Index der Start-Map auf eine sogennante "closed List" gesetzt, das heißt, die Map wurde abgearbeitet und kann nicht mehr für weitere Zielgebiete ausgewählt werden.
Dann beginnt die Hauptschleife: von allen vorhandenen dummy()-Elementen (zu Beginn 1) wird eines zufällig ausgewählt - der Map-Index wird in die closedList eingetragen, und der scalingLevel auf den aktuellen Schleifen-Index gesetzt (wird in jedem Durchgang um 1 erhöht); anschließend werden sämtliche globale Links der ausgewählten Map ausgelesen, und für jeden targetIndex, welche sich noch nicht auf der closedList befindet, wird ein neues dummy()-Element angelegt,
Aktuell bearbeitetes dummy()-Element löschen, Rinse and Repeat.

Bei jedem Neustart eines Moduls gibt es einen anderen optimalen Pfad (backtracking inklusive), der gelernt werden muß. Und damit man überhaupt effektiv aus Fehlern lernen kann, habe ich einen "World Seed" implementiert: Das ist eine kleine, für das aktuelle Modul personalisierte Datei, welche bei erstmaligen Start angelegt wird, und die zuletzt erstellten Scaling-Informationen (sowie die flip/rotation-Orientierung) speichert, und bei jedem Neustart desselben Moduls das Level-Scaling und die flip/rotation-Orientierung wiederherstellt. So hat man trotz prozedural generierter Elemente bei jedem Neustart ein kleines bißchen Deja Vu, und lernt nach und nach, wie man die Welt am besten navigiert - und wenn man will, kann man im Hauptmenü natürlich ein Häkchen setzen ("reroll World Seed", bzw. händisch die worldSeed-Datei löschen) um ein komplett neues Erlebnis zu generieren. :hoch:
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast