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: 45022
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: 89

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) 5937 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: 89

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) 5915 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: 12749

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:
Laufen (in km):
2020: 1.236,5
2021: 1.489,4
2022: 1.850,4
2023: 1.620,3
2024: 292,1

Schwimmen (in km):
2024: 16,05

Beitrag » 9. Sep 2020 22:26 #80

Benutzeravatar
diceman
Beiträge: 89

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: 89

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: 89

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: 45022
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: 89

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: 89

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: 89

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: 45022
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: 89

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: 89

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.

Beitrag » 4. Nov 2020 12:50 #90

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

UPDATE:
Ich war unzufrieden mit der Performance des Star Spawns im Spiel. Die Knockback-Ability ist cool und funktioniert, ist aber spielmechanisch zu antiklimaktisch für ein Boss-Monster. Also back to the drawing board ... jetzt, also ein paar Wochen später, kann der Star Spawn Tentakel beschwören! Tentakel sind effektiv Monster, können sich nicht bewegen, geben keinen Loot, und greifen nur an, wenn der Spieler neben ihnen steht. Tentakel sind nicht besonders stark, aber sie haben jeweils einen Saving Roll, wenn gecheckt wird, ob Waffe (bei Spielerangriff) oder Schild (bei Monsterangriff) zerbrechen. Und sie können überall auf der Map spawnen! Ursprünglich hatte jeder Star Spawn auf einer Map eine Chance nach jedem Spieler-Move ein Tentakel zu beschwören, das war jedoch unmöglich zu balancen, denn wenn sich nur ein Boss auf der Map befand, war die Ability vernachlässigbar, bei 3 Sternengezüchten dagegen wurde die Map regelrecht geflutet. Also habe ich es gestreamlined, daß, solange sich mindestens ein Star Spawn auf der Map befindet, eine baseline Chance von 4.5% besteht, daß ein Tentakel beschworen wird. Und obligatorisch kommt jedesmal, wenn die Map neu betreten wird, ein neues Tentakel hinzu.
Jetzt ist es ein echtes Erfolgerlebnis, wenn man den/die Boss/e endlich gefunden und gelegt hat! :hoch:

Clipboard51.png

Bug der Woche:
Manchmal wurden Dhole-Monster unsichtbar, nachdem sie sich ein- und wieder ausgebuddelt hatten; ebenso einige Monster, nachdem sie lokale Teleporter nutzten. Schuld war die Animations-Routine, die bei jedem Aufruf checkt, ob das Monster für den Spieler überhaupt sichtbar ist, und so entscheidet, ob sie eine Animation abspielt oder skippt. Einige Animationen haben zwei obligatorische Phasen, z.B. Ein- und Ausbuddeln und Raus- und Rein-Teleportieren. Wenn jetzt ein Monster nach solch einer Exit-Animation an einen Teil der Map teleportiert wurde, der außerhalb des Sichtfeldes lag, wurde der zweite Teil der Animation übersprungen und das Monster blieb unsichtbar - spielerisch nicht relevant, aber natürlich extrem irritierend. War der Übeltäter einmal gefunden war der Fix trivial: einfach zum Ende der Animationsroutine springen, anstatt zurück zum Requester, so daß Standard-Werte der Display-Parameter wieder hergestellt werden konnten.


To-Do-Liste:
- Ein weiteres Monster designen für die momentan brachliegende Knockback-Ability .
- Den initialen Monster-Pool definieren und gemäß Scaling-Routine für jede Map kontinuierlich erweitern - selbstverständlich bekommt man zu Beginn des Spiels KEINEN Boss zu Gesicht. :ugly:
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 5. Nov 2020 01:05 #91

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

UPDATE:
Abschließend hier das wirklich allerallerletzte Monster, welches ursprünglich nicht geplant war, aber aufgrund des Reworks vom Star Spawns hatte ich Design Space übrig, der genutzt werden wollte. Dies war ausschließlich kreative Arbeit, da der Code für die entsprechende Ability bereits implementiert war.

Clipboard52.png
Clipboard52.png (10.55 KiB) 5363 mal betrachtet

Der Nether Hound ist ein mittelstarkes Monster mit denselben Stats wie der Nightgaunt, und kann den Spieler zurückstoßen auf eines der drei hinter ihm liegenden Felder (funktioniert auch in diagonaler Richtung!). Der Knockback ist effektiv ein ferngesteuerter Spieler-Move, mit allen zugehörigen Konsequenzen. Also aufpassen beim Angriff, wenn man eine Fallgrube im Rücken hat ... :uff: Pusht einen der Nether Hound dagegen auf ein Feld mit einem Item, wird dieses aufgesammelt, bzw. ausgerüstet.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 5. Nov 2020 16:42 #92

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

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

Beitrag von The Gravedagokck »

Cool, sorry, dass ich derzeit so wenig dazu schreibe, bin etwas gestresst zur Zeit, aber ich verfolge deine Posts weiterhin mit Spannung. :)
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. Nov 2020 18:00 #93

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

Danke, alles okay! :)
Ich schreibe hier primär um mich selbst zu motivieren, und bis jetzt hat das gut funktioniert.
Freue mich natürlich trotzdem über jede Art von Input. :)


Hier nochmal alle Monster in der Übersicht (von oben nach unten):

• Der Spieler (mit Maske, klar!)
• Rat-Thing
• Cultist
• Nether Hound
• Deep One
• Nightgaunt
• Ghoul
• Leng-Spider
• Dhole
• Shoggoth
• Star Spawn
• Tentacle (werden vom Star Spawn beschworen)
• Spectre (wird transparent gezeichnet)


Clipboard53.png
Clipboard53.png (3.22 KiB) 5344 mal betrachtet
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 8. Nov 2020 00:05 #94

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

UPDATE:
• Die Routine fertig gestellt, welche den initialen Monster-Pool definiert und pro Map (über 5 Ebenen lang) kontinuierlich erweitert, bis alle Monster für den Generator bereit stehen. Es gibt etwas Variabilität, aber grundsätzlich will ich einen freundlichen Beginn gestalten und die Monster mit hohen Stats und komplexen Mechaniken allmählich einführen. Und selbstverständlich bekommt man in der Start-Map keinen Boss zu Gesicht ...

• Dies ist erstmal nur der Pool, aus dem der Generator theoretisch schöpfen kann; im nächsten Schritt wird dann für jede Map eine Auswahl von 5 Monstern generiert, mit unterschiedlicher Spawn-Wahrscheinlichkeit ... so bekommt jede Map etwas Charakter.

• Und dann, während ich so in der Lovecraft-Wiki blätterte, fiel mir aufeinmal auf, daß ich gar kein Mi-Go-Monster hatte!!1! :huh: Das geht natürlich gar nicht, also mußte tatsächlich eine weitere Kreatur her - zum Glück fiel es mir hier leicht, eine thematische Ability zu designen, und der entsprechende Code war schnell geschrieben und funktionierte umgehend.

Mi-Gos sind intelligente, Tech-affine Telepathen, und zumindest im "Arkham Horror"-Brettspiel (von dem ich mir einige subtile Cues ausgeliehen habe) sind sie mit Artefakten und Loot konnotiert. Mi-Gos werden häufig als Hybrid aus Insekt und Krebstier beschrieben und haben fledermausähnliche Schwingen, mit denen sie sich durch das Weltall fortbewegen:

Clipboard55.png
Clipboard55.png (452 Bytes) 5325 mal betrachtet

Das soll jetzt wirklich das allerallerallerletzte Monster gewesen sein ... habe, glaube ich, die wichtigsten Archetypen des Mythos vertreten. :hoch:
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 1. Dez 2020 21:16 #95

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

Kleines Update:
Habe in den letzten Wochen prokrastiniert und mich auf den bislang erreichten Erfolgen ausgeruht. Zwischendurch in den Code geschaut habe ich aber immer mal wieder, und habe angefangen, ein Modul zu erstellen, welches bislang 3 Maps umfasst. In den letzten Tagen war ich aber wieder fleißger, habe am Balancing geschraubt, diverse Mechaniken getweaked, und thematische Texte hinzugefügt. Außerdem wurde die Funktionalität des "World Seeds" erweitert, welcher bei wiederholtem Neustart für subtile Deja-vû Erlebnisse verantwortlich ist. Und wenn man wahnsinng wird, sieht man jetzt alle Monster als Kopie von einem selbst, als "Shadow Twin". :eek:

Bestes neues Feature: wann immer ein Monster auf einem Schlüssel spawnt, wird dieser dem Inventar des Monsters zugefügt, und man erhält ihn erst, wenn man das Monster besiegt hat, bzw. auf eine SpikeTrap lockt (dann wird er gedroppt). Fällt das entsprechende Monster allerdings in ein Loch, ist der Schlüssel verloren (das ist ganz schön fies, aber keine Katastrophe, da der Spieler mit dem gewaltsamen Öffnen von Türen eine Alternative bekommen hat, welche es im Original noch nicht gab).

Ich bin definitiv über den Berg, das Ziel ist in Sicht, und werde noch in dieser Woche den letzten Gameplay-Meilenstein angehen, die Schrein-Effekte!

Einige geplante Features habe ich auf Eis gelegt, und auf "after release" verschoben, da sie lediglich nice-to-have, und nicht relevant fürs Core-Gameplay sind, als da wären:

- ein neues Hebel-Element, mit dem man eine Geheimtür auf einer Map öffnen kann, sobald man alle gefunden hat (prozedural adaptierte Verteilung)
- ein zweites Set von Magic Doors, welche über einen seperaten Trigger gesteuert werden und so diffiziler ausgeklügelte Rätsel-Elemente ermöglichen
- ein interessantes, thematisches Objective

Fürs erste soll ein allgemeines, leicht verständliches Ziel genügen: finde und töte 85% aller Monster ... :uff:

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

Beitrag » 24. Dez 2020 02:03 #96

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

Wollte kurz vor Jahresende nochmal ein Update geben, nicht daß jemand auf den Gedanken käme, ich hätte aufgegeben ... :uff:
Ich befinde mich weiterhin auf der Zielgeraden, da schmeißt man nicht das Handtuch; habe endlich angefangen, die Schrein-Effekte zu designen! Davon gibts eine ganze Hand voll, und die müssen einzeln hardgecodet werden, da jeder Effekt auf einer bestimmten vorhandenen Mechanik aufbaut und diese modifiziert oder sich Parameter für ein entsprechendes Ereignis "ausleiht" - da kann man wenig abstrahieren, von extern einlesen und unifizieren ... ist allerdings mehr Schreib- als Denkarbeit.

Clipboard57.png

Werde mich dann erst wieder im Neuen Jahr melden, bis dahin wünsche ich frohe Festtage, macht das Beste daraus - trotz aller widrigen Umstände können wir für vieles dankbar sein: wir haben Frieden, etwas zu Essen auf dem Tisch und Netflix. So schlecht geht es uns nicht! :)
Guten Rutsch allerseits, und hoffen wir, daß 2021 ein besseres Jahr wird - zumindest in der zweiten Hälfte. :hoch:

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

Beitrag » 24. Dez 2020 11:23 #97

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

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

Beitrag von The Gravedagokck »

Super, dir auch ruhige, entspannte Tage und ich bin gespannt auf den Release. :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 » 27. Jan 2021 15:31 #98

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

KLEINES UPDATE:

Ich habe die Arbeit wieder aufgenommen. :)
Es ist nicht mehr viel zu tun - ein Hinweis darauf ist, daß ich mittlerweile in der Lage bin, immer krasseren Scheiß mit immer weniger Code zu implementieren, da ich den Code soweit abstrahiert habe, daß ich diverse Checks und Mechaniken mit relativ wenig Aufwand "remixen", und so komplett neue Effekte und Mechaniken kreieren kann.
Die kleine Pause hat es mir ermöglicht, einige Gameplay-Aspekte zu überdenken ...



• 8 der insgesamt rund 30 geplanten Schrein-Effekte sind fertiggestellt.

• Bug ausgemerzt, wo im Try-Mode (welcher diverse prozedurale Elemente ausklammert) Items auf Spike-Traps spawnen konnten.

• Neue Monster-Ability #canRage, welche Monstern die Fähigkeit verleiht, kritisch zu treffen (Cultist/Netherhound), der Spieler bekommt allerdings einen visuellen Cue und wenn man aufmerksam ist, kann man den Schaden fast immer komplett vermeiden.

• Neue Monster-Ability #canTeleport für den Netherhound: sobald die Lebenspunkte auf unter 50% sinken, teleportiert sich der Netherhound zu einem zufälligen Punkt der aktuellen Map und hinterlässt ein "instabiles Portal", durch welches der Spieler im nächsten Zug dem Netherhound folgen kann; tut er dies nicht, verschwindet das Portal so oder so nach dem nächsten Zug, und wenn man dem Netherhound erneut begegnet, hat dieser ausreichend Hitpoints generiert, daß er die Fähigkeit erneut nutzen kann. Diese Idee kam mir, nachdem ich einen Monat lang in DAUNTLESS reingeschaut hatte, und dort auf ein Monster getroffen bin, welches frenetisch zwischen Portalen hin und herhüpfte, und man konnte ihm in eine Parallelwelt folgen. Das ist mit einer der coolsten Effekte, die ich bislang implementiert habe, da er mit relativ wenig Aufwand viel Potential für emergent Gameplay bereitstellt (auch im Hinblick auf den Exploration-Appeal), und den Spieler mit einer Entscheidung konfrontiert.
Clipboard58.png
In dem Codeschnipsel oben wird lediglich der Portal-Link kreiert, und ein *pointer auf das entsprechende Element in der Monster-Liste gesetzt ... am Ende des Monster-Zuges wird dann (wenn *pointer <> #Null) die bereits vorhandene Routine checkStep() aufgerufen, welche Potential für einen Teleport-Move erkennt und triggert. Der isUnstable-Tag wird am Ende des Spielerzuges heruntergezählt, und wenn er bei 0 ist (effektiv nach dem nächsten Spielerzug), wird das Portal aus der Liste entfernt.

• Ich habe mich von dem geplanten Feature verabschiedet, "Unique Monsters" zu implementieren, welche sich Abilities von anderen Monstern "ausleihen" können ... schlichtweg weil ich den distinktiven Fuhrpark, den ich aufgebaut habe, nicht verwässern möchte: es ist ein schönes Gefühl, wenn man einem Monster begegnet über das man ausreichend Informationen gesammelt hat, so daß man in etwa abschätzen kann, was einen erwartet. Abgesehen davon sind die Mechaniken nicht komplex genug (wie z.B. bei DIABLO), als daß hier sonderlich viel Mehrwert entsteht, außer daß Monster in ihrer Individualität einbüßen.

• Beim Erstellen einer neuen Session besteht eine 50% Chance, daß eine zufällige offene Schlüsseltür abgeschlossen wird, eine 50% Chance, daß eine zufällige geschlossene Schlüsseltür geöffnet wird, sowie eine 50% Chance, daß eine zufällige Schlüsseltür (egal ob offen oder abgeschlossen) in einen anderen Türtypen vom selben Subtypen umgewandelt wird. Last but not least, eine 50% Chance, daß ein zufälliger Schlüssel auf einen anderen zufälligen Tile der Map verlegt wird. Diese Informationen werden im WorldSeed-File hinterlegt, bleiben also von Session zu Session konstant (solange bis der WorldSeed neu ausgewürfelt wird).
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 30. Jan 2021 22:24 #99

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

UPDATE:

Clipboard59.jpg

Ja, ich muß stark bleiben. Bin aber stolz auf mich, heute war ein produktiver Tag, und, nein, kein neues Monster, sondern jede Menge dringende Baustellen gefixt und einen weiteren großen Schritt in Richtung Fertigstellung gemacht:



• Komplettes Rework der Sanity-Mechanik: Sanity ist jetzt ein fixer Wert und kann nicht mehr gelevelt werden. Es war immer ein problematischer Stat, da er effektiv nicht mit Hitpoints konkurrieren konnte, welche den ausschlaggebenden Faktor in Kämpfen geben. Außerdem war das Scaling ein Alptraum. Sanity hat jetzt den Default-Wert = 7. Consumables, die im Inventar getragen werden, steigern diesen bis auf 13 (=Maximum). Ist man wahnsinnig, ist der Default-Wert = 0 (bzw. 1-6, je nach ausgerüstetem Consumable). Monster haben weiterhin eine fixe Horrorklasse (0-3), welche unter bestimmten Voraussetzungen gegen den Sanity-Wert des Spielers gewürfelt werden und so dafür sorgen, daß der Spieler wahnsinnig werden kann; die Horror-Klasse wird nicht länger angezeigt, viel mehr lernt man mit der Zeit intuitiv, welche Monster einen eher wahnsinnig werden lassen, und wessen Anblick eher zu ertragen ist. Wahnsinnig zu sein ist jetzt ein reines Meta-Game, welches sich durch das ganze Spiel zieht, und es gibt verschiedene Möglichkeiten, damit klar zu kommen. Indem man die Welt erkundet und Feuerstellen anzündet, baut man aber kontinuierlich ein passives Polster auf, welches einen im Laufe des Spielers immer resistenter gegen den Insanity-Effekt werden lässt.



• Bug gefixt, bei dem Feuerstellen auf Geheimgängen spawnen konnten



Covenants (die Zugehörigkeit der Schreine zu einem bestimmten Orden) werden jetzt via HashMap verwaltet ... da jeder Schrein eine covenantID besitzt, kann man diesen als Key nutzen, um das zugehörige Covenant-Objekt herauszusuchen, welches dann alle Informationen geordnet bereitstellt, z.B. die ID des jeweiligen Gottes, welche Effekte möglich sind, welche Wahrscheinlichkeit jeder Effekt hat, etc. Vorher hatte ich das alles mit mehrdimensionalen Arrays verwaltet, das war aber messy af.



• Jeder Covenant kann entweder 2 oder 3 Effekte bereithalten, die Wahrscheinlichkeit für jeden Effekt wird zufällig ausgewürfelt. Effektiv hat jeder Covenant 3 Effekte, aber bei den 2-Effekt-Schreinen hat der letzte Effekt immer die Wahrscheinlichkeit von 0, während die Summe aller Wahrscheinlichkeiten innerhalb eines Covenants immer 100 ergibt. Definiert wird das initial wie folgt:
Clipboard60.png
Für das Auswürfeln eines Effektes hilft mir meine selbstgeschriebene Routine weightedNumbers(), welche gemäß übermittelter Probability-Values einen zufälligen, gewichteten Index zurückgibt:
Clipboard61.png
Clipboard61.png (11.13 KiB) 4968 mal betrachtet
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.

Beitrag » 7. Feb 2021 09:48 #100

Benutzeravatar
diceman
Beiträge: 89

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

Beitrag von diceman »

UPDATE

• 10 von geplanten 29 Schrein-Effekten sind fertiggestellt!

• Alle Lichtquellen (Feuerstellen, Kerzenleuchter, Fackel im Inventar) haben eine 2-phasige Flacker-Animation bekommen. Das hört sich nicht nach viel an, macht aber atmosphärisch einiges her.

• Hits, welche den Gegner töten, haben jetzt immer einen "Crit-Kicker"-Effekt.

• Mein Experiment mit den zufälligen Türen und Schlüsseln habe ich gecancelt ... also daß beim Erstellen eines Dungeons der Generator einen Override triggern konnte, und so fixe Elemente ändern durfte, z.B. Status einer Tür switchen (offen/verschlossen) oder Schlüssel in andere Bereiche der Map verlegen, etc. Einige der Ergebnisse waren schlicht zu wild und frustrierend, als daß man sie einem Gelegenheitsspieler (an welche sich mein Design definitiv richtet) zumuten könnte. Aber auch ohne diesen Effekt hat das Spiel immer noch mehr prozeduralen Content zu bieten, als das Original-KALAWAUM! :)

• Bislang gab es auf jeder Map zwei Feuerstellen: eine, welche die Umgebung erhellte und einen Lichtradius-Bonus gab, und eine, welche beim Anzünden einen zusätzlichen "Sprint"-Credit gab. Letztere werden jetzt zufällig verteilt, das heißt es ist nicht mehr garantiert, daß auf einer Map eine Feuerstelle vom Typ zwei auftaucht. Die Anzahl der "Sprint"-Feuerstellen wird bei Erststart eines Moduls einmalig ausgewürfelt und als fixer Parameter in der "worldSeed"-Datei hinterlegt, aber auf welchen Maps diese letztendlich auftauchen, wird für jede Session zufällig bestimmt.

• Dem Generator mehr Möglichkeiten eingeräumt, legitime Locations für Feuerstellen zu finden.

• Bug im Editor gefixt: Man kann im FloodFill-Modus auf eine Tür klicken, um Mauern unter allen Türfeldern der aktuellen Map auf den neuen Typ zu setzen ... bislang konnte dieser Schritt nicht rückgängig gemacht werden (anders als gewöhnliche FloodFill-Operationen); das funktioniert jetzt!

• Wenn der Spieler stirbt, spawnt ein Blutfleck unter seinem Grabstein.

• Wenn man zum ersten Mal einen Schrein aktiviert, wird der Fog of War rund um den Schrein aufgedeckt (Feuerstellen funktionieren genauso).

• Bug gefixt, bei dem Monster, nachdem sie einen Teleporter genutzt haben und weniger als 4 Schritte weit teleportiert wurden, nicht erneut denselben Teleporter betreten wollten. Der Grund war eine AI-Komponente, die dafür sorgt, daß Monster sich stets an ihre 4 zuletzt gemachten Schritte "erinnern" - entsprechende Tiles werden bei der Pfadsuche mit einem abnehmenden Penalty-Value belegt, so können Monster bei größeren Entfernungen weiträumiger nach dem Spieler "suchen". Wenn ein Monster flieht, bzw. aus dem Fluchtmodus zurück in den normalen "Chasing"-Modus wechselt, wird einmal resetSearchPenalty() aufgerufen, damit das Monster in der Lage ist, sofort umzudrehen; dieser Aufruf findet jetzt auch nach Teleportation statt.

• Schilde gebufft.

• Komplettes Hitpoint/Damage Re-Balancing. Auf den kleinsten Nenner runtergebrochen haben Monster zwei Stats: Hitpoints und Schaden. Die Variable healthRange beschreibt, in welchem Prozent-Abschnitt des gegenwärtigen Level-Scalings das Monster seine Hitpoints auswürfeln darf. Schaden ist immer eine prozentuale Range innerhalb der Hitpoint-Range des Monsters, also je gesünder ein Monster (oder der Spieler) ist, umso mehr Schaden kann er austeilen. Das war schon immer so. Jetzt gibt es für Monster nur noch maximal 4 Parameter für jeden Stat (vorher 5). So unterscheiden sich Monster deutlicher voneinander, und ich habe Design-Space für 16 unterschiedliche Gegnertypen (13 sind derzeit im Spiel, einer wird wohl noch kommen).

• Diverse atmosphärische Texte zugefügt.

• Bislang war es so, daß man, wenn man wahnsinnig wurde, alle Monster als "Shadow Twin" (Kopie des Spieler-Sprites) wahrgenommen hat. Das in ein netter thematischer Effekt, andererseits fand ich's schade, daß so über lange Strecken indivduelle Designs unter den Tisch fielen, daher wird jetzt für jedes Monster eine 50% Chance ausgewürfelt, ob es sich "verwandelt".

• Kosten für Opfergaben an Schreinen erhöhen sich nach Gesetz des Kleinen Gauss (1...3...6...10...), allerdings nur, wenn ein Effekt eintritt. Wenn der jeweilige Große Alte schweigt, erhöhen sich die Kosten nur um +1.

Crystal Shard Loot-Drops gestreamlined: vorher existierte eine dedizierte Loot-Table, da war aber zuwenig Muster und System erkennbar, also droppt jetzt jedes Monster gleich, abhängig vom Level-Scaling der aktuellen Map.

• Bug gefixt, bei dem nicht gespeichert wurde, wenn man das Fenster der Anwendung via "X"-Button geschlossen hat, während eine ingame-Message noch aktiv war.

• Geheimtüren (und Geheimpfade) haben einen kleinen visuellen Cue, auf den man achten muß. Wenn man ein solches Tile jetzt betritt, verschwindet der Cue, also man muß sich ungefähr merken, wo sich die geheimen Durchgänge befinden.

• Einige subtile "Hidden Mechanics" eingebaut für ein besseres "FirstPlay"-Experience.

• Die Monster-Abilitiy #canMoveTwiceInFog entfernt, mit der Rat-Things, solange sie sich im Fog of War befanden, zwei Schritte gehen durften. Der Effekt hatte wenig bis gar keine spielerische Relevanz, war höchstens irritierend. Dafür haben Rat-Things jetzt die #canSteal-Ability bekommen: mit jedem Treffer stehlen sie dem Spieler Crystal Shards und fügen sie dem eigenen Inventory zu. Diese werden gedroppt, sobald man das Monster besiegt ... also aufpassen, daß das Vieh in der Zwischenzeit nicht in ein Loch läuft ... :uff:

Mi-Go können jetzt Löcher UND SpikeTraps ignorieren, dafür wurde die #canHover-Chance erhöht, mit der Mi-Gos im Schwebezustand verharren können (also effektiv eine Bewegung aussetzen). So bleibt die taktische Option, sie abzuhängen.

• Bug gefixt, wo Fragmente des Monster-Sprites nach einer Bewegung in den Fog of War scheinbar zufällig aufblitzten. Kein schlimmer Bug, aber gewurmt hat's mich die ganze Zeit über, und erst jetzt habe ich den Grund gefunden: wenn Monster still stehen, haben sie eine simple Idle-Animation, welche in Intervallen die xMicro/yMicro-Parameter mit zufälligen Werten überschreibt und so das Monster "schaukeln" lässt. Dieser xMicro/yMicro-Parameter wurden erst nach der Bewegung auf Null gesetzt, also konnte es vorkommen, daß ein Monster bei der Bewegung einen minimalen Location-Offset hatte, und so für ein paar Millisekunden hinter dem FogOfWar-Tile hervorlugte, bis seine Bewegung komplett abgeschlossen wurde. Der Fix war natürlich trivial: einfach VOR der Bewegung xMicro/yMicro auf Null setzen. :ugly:

• Größte "sichtbare" Neuerung: ich habe alle Sprites und die ingame Farbpalette auf ein neues Color-Scheme umgestellt ... der Grund dafür war, daß ich meine Palette zu "safe" und langweilig fand, ich hatte Lust, kreativer mit Farben zu spielen, und da kam mir die Psygnosia-Palette (©Arne Niklas Jansson) mit ihrer schlammigen Ästhetik entgegen. Die wenigen grellen Farbakzente habe ich "gemutet" - so wurde zum Beispiel aus Pink ein mattes Rot für Blut. Insbesondere das #wood-Tileset profitiert von der neuen Palette, der ist düsterer und unheimlicher, und das #deep-Tileset wirkt regelrecht creepy.
Clipboard63.png
Clipboard65.png
Clipboard66.png
Spoiler:
Clipboard64.png
Clipboard64.png (3.55 KiB) 4921 mal betrachtet
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: Ahrefs [Bot], Bing [Bot] und 1 Gast