Spielereien vom diceman

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

Re: Spielereien vom diceman

Beitrag von diceman » Sa 29. Jun 2019, 13:04

Ich mache derzeit große Fortschritte mit meinem Spiel, und hätte mir niemals träumen lassen, daß aus einem Mini-GameJam-Projekt mal was richtig Spielbares wird. :)
Das motiviert; habe in dem Zuge beschlossen, jetzt doch ein Progresssion-System zu implementieren. Die Basis für das Level-Up-System ist in place und kann getestet werden, allerdings hat ein Level-Up (noch) keine Konsequenz, da es (noch) kein Skill- und Stats-System gibt.
Auch in Zukunft wird es keine ausgefeilten Monster-Stats geben, deren Mechaniken und Stärke halte ich baseline, nur der Spieler wird die Möglichkeit haben, sich zu verbessern.
Next in Line ist eine Fernkampf-Waffe, der Blunderbuss, welcher das taktische Aktions-Potential gehörig erweitern wird!

Change-Log v2.99
- Bug in processActorTimer() gefixt (> Abfrage in >= geändert), welcher dafür sorgte, daß sich Monster zu selten bewegt haben
- Monster im Flucht-Modus bewegen sich jede Runde
- Offeneres und abwechslungsreicheres Design beim Erstellen der Maps (mehr Bewegungsfreiheit für den Spieler; manche Tileset, die "Underground Passage", z.B., behalten ihren klaustrophobischen Charakter)
- Ab sofort sind Loops in der Architektur möglich!
- Monster halten beim initialen Spawn einen Sicherheitsradius ein (keine Gegner mehr, die einen direkt beim Betreten der Map vermöbeln)
- Attack/Defense-Anzeige entfernt (aufgeräumteres Design der Sidebar); bei dem simplen Combat-System auch unnötig
- Aufgesammelte Waffen werden nebeneinander angezeigt
- Keine Rum-Anzeige mehr, da nicht mehr relevant für neue fundamentale Gameplay-Änderungen
- Es ist nicht mehr notwendig, eine minimale Anzahl von Rum-Flaschen auf jeder Map einzusammeln!
- Story-Texte an die Gameplay-Änderungen angepasst
- Neue Level-Up-Mechanik (noch ohne Konsequenz): eingesammelte Rum-Flaschen geben XP, ebenso besiegte Gegner (gefährlichere Monster geben mehr)
- Statt des Stage-Index wird ein thematischer Location-Name eingeblendet
- Der Stage-Index wird intern weitergeführt und bleibt relevant für die Berechnung von statischen Punkte-Boni.
- Neben dem Spielername wird der Spielerlevel angezeigt
- In der Highscore-Liste wird ab sofort die aktuelle Versions-Nummer abgespeichert; so kann ich in Zukunft, bei Änderungen des Score-File-Systems, eine Auto-Patch-Funktion implementieren, damit bereits erzielte Highscores bei neuen Releases nicht obsolet werden.


--> Siehe weiter unten für aktuellen Download-Link ...

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

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

Re: Spielereien vom diceman

Beitrag von diceman » Mi 3. Jul 2019, 17:28

Letzter Patch, bevor ein neues Gameplay-veränderndes Element eingeführt wird, der Blunderbuss (Fernkampf-Waffe)!
Viele Tweaks, Grafik- und Sound-spezfische Updates.
Ab sofort liegen alle Sound-Files im .ogg-Format vor, so war es mir möglich, die Paketgröße auf rund ein Zehntel zusammenzuschrumpfen, lol. :D :?

Download v3.01 (Uploadfiles.io)

water.gif

Change-Log v3.01
- Die Versions-Nummer wurde versehentlich als Float abgespeichert (anstatt als Integer)
- Die Chance, daß die Fackel zerbricht, ist eine Baseline-Wert, abhängig vom Status des Monsters (Roaming/Guard/Flee)
- Wenn man mit Fackel angreift und (*attacker = *player), ist die Chance, ein ausgerüstetes Schutz-Item zu verlieren, halbiert
- Einige Schriftfonts und Farben-Schemas angepasst
- Diverse Grafiken überarbeitet
- Die unbegehbare Umgebung von "Booty-Hill" wird als dichter Wald angezeigt
- "Cutthroat Bay" hat Wasser als Umgebung (jetzt fühlt sich das Tileset wirklich wie eine Insel an)
- Lag bei der Namenseingabe reduziert; das Tippen fühlt sich mehr "responsive" an
- Im Secret-Bereich der "Ancient Crypt" befindet sich immer ein actor(). Welcher actor() das ist, wird nicht überprüft. Es kann der Ausgang sein, ein Monster, ein Schatz, oder ein sonstiges Item. Nur wenn gar kein actor() gefunden wurde, wird zufällig ein Rumflasche/Banane/Dublonen-Item gespawnt, und es besteht eine kleine Chance auf eine Schatztruhe (6:6:6:1)
- Der Start ist nicht mehr zwingend in einer Sackgasse, muß aber weiterhin an ein unbegehbares Feld angrenzen
- Die "Zeichen-Logik" verbessert, was der Spieler auf welchem Tileset sehen kann. z.b. ist es nicht länger möglich, in den Secret-Bereich der "Ancient Crypt" zu gucken, bevor man diesen geöffnet hat. Wasserfelder in "Cutthroat Bay" sieht man dagegen sobald sie ins Field of View rücken (unabhängig davon ob man eine Fackel trägt oder nicht).
- Ambience-Sounds für alle Tilesets hinzugefügt (auf Cutthroat-Bay ist die Lautstärke der Wellen und Möwen abhängig, wie nah man sich am Wasser befindet)
- Das Startfeld kann nicht mehr direkt neben dem Zielfeld spawnen
- Bei der Flaggen-Animation wurde ein Pixel zuviel abgeschnitten :silent:
- Wenn Desktop-Auflösung <= 768 ist, wird keine System-Menüleiste mehr angezeigt (so wird auch bei y = 768 immer noch das vollständige Spielfenster auf den Bildschirm angezeigt)
- Punkte werden grafisch angezeigt und "schweben" davon
- Punktegewinn für Dublonen weiter ent-inflationisiert: vorher [lootCounter*stage], jetzt [(lootCounter-1)+stage]
- Faktor für den Stage-Completion-Bonus von 25 auf 20 reduziert
- Maximale Anzahl der Skulls von 11 auf 10 herabgesetzt (Vorbereitung für das Progression-System)
- verbesserte "Flash"-Effekte bei Level-Up und +Skull
- Audio-Bug behoben: die Hintergrundmusik konnte nach Stage-Abschluss durch drücken der Musik-Toggle-Taste wieder aktiviert werden
- Cell-Increase pro Stage erhöht von [0-6] auf [1-8] (Würfel mit Bell-Curve-Modfikator)
- Lag beim Neuladen von grafischen Assets reduziert, wenn man die Highscore-Liste angesehen hat, und wieder zurück ins Hauptmenü kehrt
- Alle Sound-Files liegen jetzt im .ogg-Format vor
- "Dead Man"-Grafik entfernt (wird jetzt on-the-fly über den RotateSprite()-Befehl erledigt - so bleibt die grafische Darstellung ausgerüsteter Items erhalten)
- Jedes Monster hat ein eigenes "Movement-Scheme", wie oft und gerne es sich bewegt.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

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

Re: Spielereien vom diceman

Beitrag von diceman » Mi 24. Jul 2019, 19:17

Ich habe übrigens nicht das Handtuch geschmissen ... 8-)
Es geht weiter.
Bin momentan dabei, die versprochene Fernkampfwaffe, den Blunderbuss, zu implementieren mit allem was dazugehört, und was emergent complexity angeht, ist das eine kleine Büchse der Pandora die ich da geöffnet habe; ich nutze das aber als Chance, meinen Code weiter zu abstrahieren und fool-proof zu machen.
Und so langsam kristalliert sich ein Konzept beim geplanten RPG-System heraus.
:geek: :ugeek: :shifty:
Bin derzeit total high, bis zum Hals vollgepumpt mit Programmier-Endorphinen.
LANDLUBBER ist das spaßigste Projekt, an dem ich je gearbeitet habe.

Ein paar random Impressionen:

https://i.imgur.com/jBRKfEB.gif
code.jpg
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

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

Re: Spielereien vom diceman

Beitrag von Yuki » Di 30. Jul 2019, 22:52

Finde ich gut, habe ich mal heruntergeladen auch jetzt. Dauert bestimmt was, bis ich es Ausprobiere, aber es ist schon mal da lol. :mrgreen:

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

Re: Spielereien vom diceman

Beitrag von diceman » Di 30. Jul 2019, 22:56

:oops: :oops: :shifty: :thumbup:
Dankeschön.
Erwarte nicht zuviel, es gibt keine zielgerichtete Story, du versuchst halt so lange zu überleben wie möglich und dabei möglichst viele Punkte (Schätze) zu sammeln. Ich habe noch eine kleine Handvoll Ideen, die ich implementieren möchte, die einem mehr Möglichkeiten an die Hand geben, diverse Situationen alternativ anzugehen (wie zum Beispiel der Blunderbuss, an dem ich gerade arbeite), so das man nicht allzu häufig vom RNG gefickt wird - andererseits gehört das bei Roguelikes auch ein bißchen dazu ... :mrgreen:
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Benutzeravatar
Savior
Beiträge: 13790
Registriert: Do 10. Mai 2012, 03:29
Kontaktdaten:

Re: Spielereien vom diceman

Beitrag von Savior » Di 30. Jul 2019, 23:10

Diiice, bin nach wie vor auch interessiert... aber es gibt gerade sooo viiiel zu spielen. :)

Gebe irgendwann nochmal Feedback, versprochen! :oops:

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

Re: Spielereien vom diceman

Beitrag von diceman » Fr 20. Mär 2020, 19:38

Puzzle für die Quarantäne ...
Nachdem ich im letzten Jahr rund 1000 SOKOBAN-Level gelöst habe, habe ich mich hingesetzt und ausprobiert, ob ich selbst in der Lage bin, interessante/schöne/schwere Layouts zu kreieren - herausgekommen ist ein Map-Pack mit 100 Leveln ("ParaBox") und sehr unterschiedlichen Stilen (allerdings durch die Bank streng "klassisches" Box-Pushing, ohne moderne Gameplay-Elemente, wie Teleporter). Bin stolz auf mich, und will euch hier die Früchte meiner Arbeit präsentieren.
Die Level sind grob nach Schwierigkeit/Komplexität sortiert, wobei man dazu sagen muß, daß der Schwierigkeitsgrad bei Sokoban unterschiedlich wahrgenommen wird und sich die großen Meister bis heute über allgemeingültige Richtlinien streiten - manch schweres Design ist ein Klacks, wenn man den entscheidenen Kniff per Zufall früh ausfindig macht, und bei anderen "einfachen" Layouts kann man schonmal stundenlang im Kreis laufen, bis man auf den entscheidenden Move kommt, der das Problem auflöst. Die Level sind zu 100% integer und lösbar - jedes Puzzle, bevor es für die Allgemeinheit freigegeben wird, muß vom Autor einmal durchgespielt werden.
Die ersten 10 Maps sollten schaffbar für jedermann sein, die letzten 6 sind echte Hardcore-Herausforderungen. Dazwischen ist alles vertreten, und natürlich abhängig von eurer Geduld und Muße, ob euch das Spielprinzip überhaupt zusagt und ihr gewillt seid, länger als 5 Minuten an einer Lösung zu knobeln.
Bei mir hat es Anfang 2019 nicht lange gedauert, bis ich in die Abhängigkeit gerutscht bin ... :angel:

https://www.sokobanonline.com/play/comm ... an/parabox

Ihr könnt spielen ohne auf der Website angemeldet zu sein.
Mit den Pfeiltasten bewegt ihr euch, mit "U" (Undo) nehmt ihr Züge zurück und mit "R" (Restart) startet ihr den ganzen Level neu.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

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

Re: Spielereien vom diceman

Beitrag von diceman » Sa 25. Jul 2020, 17:54

Alle Jahre wieder nehme ich wir was größeres vor ... :roll:
Wie unschwer zu erkennen, sind alle meine vorherigen Versuche gescheitert, bzw. ich hab in einigen Fällen selbst das Interesse verloren, in anderen Fällen den scope of things unterschätzt, wollte zu weit hinaus.
Diesmal will ich es (wirklich) kleiner angehen. Und zwar ein Remake von "Die Gemäuer von Kalawaum", ein kleines RPG welches ich hier im Thread bestimmt ein paar Mal erwähnt habe, und welches mir in jugendlichen Jahren auf meinem Atari ST Stunden meiner Lebenszeit abgezwackt hat.
"Kalawaum" hatte sehr reduzierte Mechaniken, und mein erklärtes Hauptziel soll auch bleiben, das Erlebnis so original getreu wie möglich zu rekapitulieren, mit so wenig extra Fluff wie möglich, also die Chancen stehen gut, daß ich da erstmal dran bleibe.
Hier hat übrigens jemand das Spiel für den Commodore PET portiert, :mrgreen: am Anfang des Videos sieht man aber auch das Original vom Atari ST:
[+] Spoiler


Und auf die Plätze, fertig, los:

Clipboard01.jpg
Das sieht noch nach nicht viel aus, aber es ist tatsächlich schon eine ganze Menge passiert:
Zu allererst mußte ich ein paar grundlegende Fragen klären: wie speichere und lese ich die Maps aus, welche Daten sind besser in einem Array aufgehoben, und was verwalte ich als Elemente in einer strukturierten Liste (Objekte)?
Zudem habe ich mich entschlossen, Auflösungs-unabhängig zu arbeiten, das heißt, daß Spiel erkennt die aktuell eingestellte Fensterbreite und -höhe und passt das Spielfenster dementsprechend an; alle Sprite-Dateien werden entsprechend skaliert.

"Kalawaum" ist Modul-basiert: man lädt ein Abenteuer, die Architektur ist fix, aber bestimme Aspekte des Spiels werden bei jedem Neustart randomisiert, was für immensen Wiederspielwert gesorgt hat. Also zum Beispiel waren Waffen und Schilde immer an denselben Orten, aber welche Waffe man letztendlich gefunden hat, war immer anders. Monstertypen, Anzahl und deren Location waren komplett zufällig. Schlüssel und zugehörige Türen waren fix, aber Türarten mit den respektiv zugehörigen Schlüsseln wurden ebenfalls randomisiert (für jedes Tür/Schlüssel-Pärchen wurde 1 von 3 Türarten ausgewürfelt), so war eine grobe Richtung vorgegeben, aber man konnte doch in jedem Spielverlauf andere Bereiche entdecken; ich werde mir erlauben eine optionale Möglichkeit einzubauen, Türen auch via Gewalt zu öffnen. Da geht dann natürlich irgendwas kaputt, oder sonstwas passiert damit es nicht die bevorzugte Methode bleibt, denn im Original konnte man sich allzu häufig in Dead End-Situationen manövrieren, wenn man die Schlüssel nicht in optimal vorgeschriebener Reihenfolge genutzt hat.
Man braucht also einen Editor um Module zu erstellen ...
Damit zusammenhängend kam die nächste Frage: erst Editor programmieren oder das Spiel? Habe mich dann für die dritte Option entschieden: beides gleichzeitig! Und zwar so synergetisch wie möglich, so daß man jederzeit während dem Editieren ins Spiel hüpfen kann um was zu testen, und dann ohne Zeitverlust direkt zurück in den Editor.

FORTSCHRITT BIS JETZT:
- Eine "Sprite-Factory" eingerichtet, die Grafiken initialisiert und in den Speicher lädt
- Man kann im Editor mit der linken Maustaste Wände malen und mit der rechten löschen
- Mit via Hotkey kann man eine Spielerposition an die entsprechende Mausposition setzen
- Man kann Maps speichern und laden
- Man kann ohne Umschweife in den Play-Modus switchen und die Map "spielen", also sich auf freien Feldern mit den NumBlock-Tasten bewegen (8 Richtungen)
- Durch gedrückt halten der Richtungstaste kann man schnell weite Strecken überwinden


Seid sarkastisch, motivierend, indifferent whatever, nur bitte drückt mir die Daumen, daß ich das diesmal durchhalte! :thumbup:
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

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

Re: Spielereien vom diceman

Beitrag von diceman » Sa 25. Jul 2020, 20:57

Clipboard02.jpg

Nächster Meilenstein geschafft (auch wenns immer noch nicht nach viel aussieht): :problem:
Ein Abenteuer in "Die Gemäuer von Kalawaum" bestand nicht nur aus einem Screen, sondern aus vielen verschiedenen Maps, die über Sprungtüren und Teleporter verknüpft waren. In meinem Remake-Projekt ist es jetzt möglich, beliebig viele Maps hinzuzufügen, und auch wieder zu löschen, sowie zwischen den Maps schnell hin und her zu switchen.
Die Grafiken sind alle noch Platzhalter, klar. :geek:
Meine Entscheidung, das Spiel und den Editor synchron zu programmieren, scheint sich auszuzahlen. Man muß sich hier und da mehr Gedanken machen, aber dafür kann ich so auch viel Code sparen, da beide Instanzen aus demselben Pool schöpfen.

FORTSCHRITT BIS JETZT:
- Tile-Matrix im Editor-Modus
- Buttons für den Editor wurden initialisiert: bis jetzt sind nur zwei Buttons (Floor und Walls) aktiv, von denen kann ich aber schnell weitere hinzufügen, wenn jetzt im nächsten Schritt weitere Objekte hinzukommen. Floor und Wall-Tiles sind quasi immer aktiv, damit "malt" man mit rechter, bzw. linker Maustaste die Architektur. Andere Objekte (bis jetzt nur die Startposition für den Spieler) werden via Hotkey an die aktuelle Mausposition eingefügt.
- Mit dem Mausrad kann man von der aktuell aktiven Actor-Klasse Subtypen durchscrollen. Also z.B. verschiedene Tilesets.
- Mit der "F"-Taste (="Fill") kann man eine Map, je nachdem ob Floor oder Wall-Tiles angewählt sind, komplett mit Mauern oder Boden-Tiles füllen.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

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

Re: Spielereien vom diceman

Beitrag von diceman » Mo 27. Jul 2020, 13:32

Clipboard03.jpg

Habe gestern im Nachtdienst gute Fortschritte gemacht ...
Das Projekt wird zunehmend komplexer, aber es kommt auch mehr Struktur in den Code, da ich mir anfange, Gedanken zu machen, wie der Programmablauf später möglichst effizient über die Bühne geht. Also wann ich was initialisieren muß, welche Daten permanent im Speicher gehalten, welche temporär on the fly erstellt werden können, etc.
Den Rest der Nacht habe ich mir mit dem Original "Kalawaum"-Spiel um die Ohren geschlagen ... :shifty: ... eine uralte 16-Bit Applikation, die ich tatsächlich via DOS-Box auf Windows 10 zum Laufen gekriegt habe! :ugeek: 8-)
Man muß die CPU-Ticks weit nach oben schrauben, weil das sonst sehr langsam läuft; und ich hatte ganz vergessen, wie schwer das Spiel doch ist, und wie arg einen die RNG zuweilen fickt - aber auch jetzt, nach über 25 Jahren, zieht einen der simple, aber unkaputtbare Gameplay-Loop gnadenlos in seinen Bann.
Habe es nie komplett durchgespielt. :problem: :problem:

UPDATE:
- Die ersten Sprites erstellt. Die sind sicher noch nicht fix, aber so kriegt man schonmal optisch einen Eindruck, wie das später aussehen kann.
- Im Play-Mode gibt es einen FogOfWar, welcher erst für das richtige Adventure-Feeling sorgt, also daß man Schritt für Schritt seine Umgebung aufdeckt und erforscht.
- Grafische Abwechslung wird im Play-Mode automatisch intialisiert. z.B. die perspektivische Front-Ansicht der Mauer-Tiles existiert so im Editor nicht, die notwendigen Parameter werden automatisch bei Spielstart überprüft und entsprechend überschrieben.
- Standard-Türen sind funktional in den Editor implementiert. Man platziert eine Sorte geschlossener Türen, welche dann später, bei Spielstart, randomisiert werden (3 Varianten). Für diese müssen passende Schlüssel gefunden werden (noch nicht implementiert - die Routine fürs Öffnen der Türen existiert aber bereits).
- Obstacle()-Klasse eingefügt. Bis jetzt existiert nur der "Tree"-Subtype. Von dem existieren 3 Varianten, welche bei Spielstart randomisiert werden. Hat keine spielerische Konsequenz, dient lediglich der optischen Abwechslung.
- FloodFill-Routine optimiert: per Hotkey können jetzt alle beliebigen Base-Tiles (Boden und Mauern) mit anderen beliebigen Subtypen aus der Base-Klasse überschrieben werden.
- fixMap()-Routine gebaut, die beim Speichern die Maps auf kleine Fehler checkt (keine Mauer-Tiles unter Tür-Actors(), keine Floor-Tiles unter Obstacle-Actors(), fehlende Startposition), und wenn sie diese nicht fixen kann, zumindest via MessageRequester darauf hinweist.
"Ja, Junge, da kann man mal sehen, wie schlecht du denken kannst."
• Jean-Luc Picard

Antworten