Landlubber (Mini-Roguelike)

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

Re: Landlubbers (Mini-Roguelike)

Beitrag von diceman »

Danke fürs testen. :)
Sei gespannt auf das Update ... die aktuelle Version, welche ich in Arbeit habe, hat nicht mehr viel mit dem Spiel gemeinsam, welches du angespielt hast.
Derren hat geschrieben:Ich habe noch nie so ein Spiel (roguelike) gespielt, von daher weiß ich nicht, ob das einfach so gehört, oder ob das der Sinn ist, aber wenn man schaufelt, muss man wohl mehr als einmal "gegen den Haufen rennen".
:allright:
• Glaube mir, einmal gegen den Haufen rennen reicht ... es gibt einen kurzen Delay für den Schaufel-Sound, so ist es spannender, was man ausgräbt ... wenn du natürlich während dessen andauernd auf die Richtungstaste hämmerst, kann es durchaus passieren, daß du nach dem Ausgraben sofort ins "Loch fällst" und der Level beendet wird. Aber danke für das Feedback ... vielleicht wäre es besser, wenn man während dem Schaufeln einen Fortschrittsbalken angezeigt bekommt, damit sofort klar ist, was da gerade passiert.
Dadurch, dass die Tiles to hochskaliert sind, und der sichtbare Bereich vergleichsweise klein ist (Radius 3), bewegt sich bei jedem Schritt ziemlich viel, was mich irgendwie irritiert hat.
• Die Tile-basierte Fortbewegungsweise ist state of the art bei (klassischen) Roguelikes. Das Gameplay ist strictly turn-based, und Teil der Herausforderung bei meinem Spiel ist die Navigation und das Einprägen der Architektur. Das werde ich nicht ändern. :wink:
Zuletzt geändert von diceman am 21.06.2019 17:53, insgesamt 1-mal geändert.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubbers (Mini-Roguelike)

Beitrag von diceman »

Liebes Tagebuch ...
Ich habe vor kurzem den SortStructuredList()-Befehl kennen und lieben gelernt. :)
Bei meinem Projekt mußte ich mich sehr früh mit der Frage auseinandersetzen, wie ich das regele, wenn sich zwei actors() auf ein und demselben Tile befinden. Zum Beispiel kann sich dort ein Pattern-actor() befinden (üblicherweise Blutspritzer), ein Item, und ein Monster. Damit ich in der draw()-Routine nicht jedesmal umständlich abfragen muß, welcher actor() Priorität beim Zeichnen hat, lasse ich dieses die Listenelemente einfach unter sich selbst regeln ...
Dafür habe ich jedem Element ein Atribut namens actor()\depth gegeben. Dahinter verbirgt sich die Information, in welcher Zeichentiefe sich ein Actor befindet.
Folgende "Tiefen" habe ich initialisiert:

Code: Alles auswählen

#maxDepth = 4
Enumeration
	#patternDepth
	#aboveDepth
	#itemDepth
	#npcDepth
	#playerDepth
EndEnumeration
In der sehr frühen "GameJam"-Version des Spiels habe ich mir eine schmutzige, aber ausreichend effiziente draw-Order aus den Knöcheln gekloppt ... die Lösung war nicht besonders elegant, aber funktionierte. Und bei der geringen Menge an Witzgrafiken fiel der wiederholte Schleifendurchlauf nicht weiter ins Gewicht:

Code: Alles auswählen

For a = 0 To #maxDepth
	ForEach actor()
		If actor()\depth = a
			//drawActorSprite
		EndIf
	Next
Next
Und dann habe ich SortStructuredList() entdeckt ...
Ab sofort muß jede Routine, welche einen actor() erschaffen will, dieses über einen Aufruf der Prozedur spawnActor() erledigen.
Hier ist die Actor-Fabrik! Nur hier dürfen neue Listenelemente erschaffen werden!
Der Prozedur werden die wesentlichen Parameter (Typ/Subtype/Location/Status/Index) mitgeteilt, ein default-Actor wird erschaffen, welcher anschließend in einer Select/Endselect-Routine für seine spezifische Aufgabe "spezialisiert" wird, und am Schluß mit den übergebenen individuellen Parametern "Charakter" bekommt.
Und ganz am Ende genügt ein simples

Code: Alles auswählen

SortStructuredList(actor(),#PB_Sort_Ascending,OffsetOf(ACTOR\depth),TypeOf(ACTOR\depth))
und ich kann in der draw()-Routine mittels einer simplen ForEach ... Next-Schleife alle actor()-Elemente auf einmal in der richtigen Reihenfolge zeichnen!
Wenn ein actor() gelöscht wird, habe ich dafür eine eigene killActor()-Routine eingerichtet, welche alle übrigen Aufgaben erledigt, die dabei anfallen: die Liste muß nicht neu sortiert werden, aber zum Beispiel müssen Kollision upgedated, und diverse fieldMatrix-Arrays, welche ich für schnelle Zwischendurch-Abfragen eingerichtet habe, aktualisiert werden. So habe ich die wesentlichen Aufgaben für meine Logik in zwei seperaten Prozeduren zentralisiert, und wenn mal etwas schief läuft, weiß ich sofort, wo ich gucken muß.
Da beim Speichern und Neuladen die Liste in der aktuellen Reihenfolge abgelegt, und auch so wieder hergestellt wird, entfällt ein neues Sortieren beim Laden eines Speicherstandes.



diceman hat geschrieben:
Derren hat geschrieben:Ich habe noch nie so ein Spiel (roguelike) gespielt, von daher weiß ich nicht, ob das einfach so gehört, oder ob das der Sinn ist, aber wenn man schaufelt, muss man wohl mehr als einmal "gegen den Haufen rennen".
:allright:
• Glaube mir, einmal gegen den Haufen rennen reicht ... es gibt einen kurzen Delay für den Schaufel-Sound, so ist es spannender, was man ausgräbt ... wenn du natürlich während dessen andauernd auf die Richtungstaste hämmerst, kann es durchaus passieren, daß du nach dem Ausgraben sofort ins "Loch fällst" und der Level beendet wird. Aber danke für das Feedback ... vielleicht wäre es besser, wenn man während dem Schaufeln einen Fortschrittsbalken angezeigt bekommt, damit sofort klar ist, was da gerade passiert.
Für diverse Aktionen im Spiel, welche einen kurzen Delay involvieren (meistens aus atmosphärischen Gründen, um z.B. einen Sound voll auszuspielen) habe ich thematische Progress-Bars implementiert, und das gefällt mir derzeit richtig gut. :) Auch beim Buddeln gibt es jetzt einen solchen Fortschrittsbalken.
Also nochmal 1000 Dank fürs Feedback, Derren, ohne deinen Erfahrungsbericht wäre ich nicht auf das Problem aufmerksam geworden! :allright:

Bild
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Landlubbers (Mini-Roguelike)

Beitrag von #NULL »

Tolles Spiel :allright:, sogar mit Musik :D
Ich habe es gerade unter Linux in wine ausprobiert und es scheint gut zu funktionieren.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubbers (Mini-Roguelike)

Beitrag von diceman »

Auch dir vielen lieben Dank fürs Testen ... freut mich sehr, daß es auch unter Linux läuft. :)
Alle Soundeffekte, inklusive der Musik-Loops, habe ich bei freesound.org gefunden. Die Tile-Grafiken sind teils von https://www.kenney.nl/assets (universal license), ich habe aber auch zunehmend Hand angelegt, und mittlerweile designe ich fast alles selbst: 16x16 Tiles, welche im Spiel auf den Faktor 5 hochskaliert werden ... so entsteht ein hübscher Retro-Effekt. Dabei mache ich mir die Arbeit, allen interaktiven Elemente eine subtile Umrandung zu spendieren (wenn ein solches Grafik-File existiert, wird es automatisch erkannt, hinzugeladen, über das Tile gelegt, und neu "gegrabbed").
Eine korrekte Kreditierung aller externen Assets folgt natürlich noch.
Und freue dich auf die neue Version, die ich irgendwann demnächst zum Download bereitstelle, da ist mittlerweile soooooo viel passiert! :D

:lurk: :lurk: :lurk:

Liebes Tagebuch,
Ich habe mir zur Angewohnheit gemacht, wenn ich gewisse Parameter im Code hardcode um Teilaspekte des Spiels zu testen, ich diese anschließend nicht lösche oder ausklammere, sondern stattdessen als optionale Cheats implementiere, die ich am Anfang des Codes bei Bedarf jederzeit neu aktiveren kann (wizardMode). Für solche Cheat-Overrides bietet mir PureBasic die komfortable Option, diese mittels

Code: Alles auswählen

;{  WIZARD-MODE #wizIddqd
...
;}
einzufalten, damit ich meinen Code visuell nicht verunreinige.

Der wizardMode-Bereich am Anfang sieht mittlerweile so aus:

Code: Alles auswählen

Enumeration
	#wizIddqd
	#wizShowMap
	#wizNoSave
	#wizShowMatrix
	#wizGiveWeapon			;#weaponMax+1 = giveAll
	#wizStartHere			;tilesetIndex
	#wizLoseStaminaFast
EndEnumeration
Global Dim wizardMode(6)
wizardMode(#wizIddqd) = #True
;wizardMode(#wizShowMap) = #True
;wizardMode(#wizNoSave) = #True
;wizardMode(#wizShowCollision) = #True
;wizardMode(#wizGiveWeapon) = 5
;wizardMode(#wizStartHere) = 4
wizardMode(#wizLoseStaminaFast) = #True
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubbers (Mini-Roguelike)

Beitrag von diceman »

Zwei wesentliche Gameplay-Veränderungen:

1.)
Wenn die Ausdauer auf 0 fällt, ist man nicht länger tot oder verliert Schädel, stattdessen muß man sich ausruhen und Kräfte sammeln; das hat zur Folge, daß alle bislang besiegten Monster respawnen, +1 neues zufälliges Monster erscheint ... besiegte Monster-Actor-Elemente werden nicht länger aus der Liste gelöscht, sondern werden "verbannt". Dafür wird der Flag actor()\hidden = #True, und die Koordinaten auf 0,0 gesetzt (verbannte Monster können sich nicht bewegen, und der status wird auf den default-Wert zurückgesetzt); so kann man diese jederzeit wieder ins Leben zurückholen. Außerdem hat jeder actor() ein neues Attribut bekommen (actor()\pointsGiven), welches darüber Buch führt, ob ein Monster bereits einmal besiegt wurde - beim zweiten Mal gibt es keine Punkte mehr.
Desweiteren muß man Ballast zurücklassen: man verliert sämtliche Ausrüstungsgegenstände (Waffen, Fackel und Rüstung), und die Hälfte aller bislang gesammelten Punkte (Schätze).
Anschließend wird der Ausdauer-Wert auf einen zufälligen Wert 20-50% gesetzt (mit Gauß'scher Abwärts-Wichtung).

2.) Hält man die Leertaste gedrückt, lässt man ein ausgerüsteten Defense-Item fallen (Haken/Klamotten). So kann man vermeiden, daß diese in einem Kampf zerstört werden, indem man riskiert, ein schwächeres Monster ohne ausgerüsteten Schutz zu besiegen. Der Haken gibt +1 Rettungswurf, die Piratenklamotten +2 Rettungswürfe (diese Boni sind kumulativ).

2.)
Desweiteren kann man mit der Leertaste zwischen gesammelten Waffen wechseln (unbewaffnet, Fackel, Messer, Axt, Säbel). Wenn man mit der Fackel kämpft, kann man das Monster nicht töten, aber es besteht eine Chance, daß dieses in die Flucht geschlagen wird. Fliehende Monster greifen von sich aus seltener an, und fliehen vor dem Spieler. Ein fliehendes Monster muß nach jedem Schritt einen Check würfeln, ob der Flucht-Status wieder aufgehoben wird. Anders als beim normalen Kampf (Erfolg abhängig von der Stärke des Monsters) ist die Chance, ein Monster in die Flucht zu schlagen, immer derselbe baseline-Wert, mit Modifikator ob sich das Monster im guard-Zustand befindet; die Fackel kann beim Kampf zerbrechen (die Chance, ob ein ausgerüsteter Gegenstand zerbricht ist abhängig vom Monster-Zustand: roam/guard/flee).
Monster-Navigation erfolgt über Dijkstra-Maps (2 Maps werden initialisiert, eine normale "search"-Map mit dem Spieler als Zentrum, und eine mit Faktor -1.2 modifizierte "flee"-Map). Monster haben im "Roaming"-Modus eine 55%-Chance eine Dijkstra-Suche auszuführen, im "Flee-Modus" eine 75%-Chance (ansonsten wird ein zufälliger Move ausgeführt). Ein Monster, welches vom "Guard" in den "Roaming"-Modus wechselt, macht immer einen zufälligen Move.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubbers (Mini-Roguelike)

Beitrag von diceman »

Eine nette kleine Funktion, die ich mal vor Urzeiten in BlitzBasic geschrieben habe, die sich prima dafür eignet, in RPGs Events und Loot-Tables auszuwürfeln ...
Die Funktion liefert Zahlen von 0 bis maximal 9 zurück, wobei jeder Zahl ein Wichtungsfaktor zugeordnet werden kann (0 = Zahl erscheint gar nicht).

Zum Beispiel erhält man mit

Code: Alles auswählen

weightedNumber(0,1,0,0,2)
mit 33%er Wahrscheinlichlichkeit eine 1, und mit 66% Wahrscheinlichkeit eine 4.


Code: Alles auswählen

Procedure weightedNumber(n0=0,n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0)
	Define nMax
	Define nDice
	Define nAdd
	Dim chance(10)
	Define a
	
	chance(0) = n0
	chance(1) = n1
	chance(2) = n2
	chance(3) = n3
	chance(4) = n4
	chance(5) = n5
	chance(6) = n6
	chance(7) = n7
	chance(8) = n8
	chance(9) = n9
	
	For a = 0 To 9
		nMax = nMax + chance(a)
	Next
	nDice = Random(nMax,1)
	
	For a = 0 To 9
		nAdd = nAdd + chance(a)
		If nAdd >= nDice 
			ProcedureReturn a
		EndIf
	Next
EndProcedure
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubber (Mini-Roguelike)

Beitrag von diceman »

Es gibt wieder ein Update zum testen ... :)
Einen Change-Log habe ich mir gespart, da wirklich so unglaublich viel verändert wurde gegenüber der letzten Version, daß es mir unmöglich erschien, dieses nachvollziehbar zu dokumentieren.
Dem .zip-File liegt eine "How to Play"-Textdatei dabei, in der alles steht, was man zum Überleben wissen muß.
Es ist kein sonderlich komplexes Spiel, im Großen und Ganzen ist das Gameplay casual und intuitiv.
Die einzigen Tasten, die benötigt werden, sind die Pfeiltasten und die Leertaste; letztere hat zwei Funktionen: man kann sie antippen, dann rüstet man die nächst bessere Waffe aus, oder man kann sie gedrückt halten um ausgerüstete Schutz-Items (Pirate Gear & Hook) fallen zu lassen.
Falls jemand eine 32-Bit-Version benötigt (a.k.a. "das läuft bei mir nicht11!!1"), bitte Bescheid geben. Da kann ich Abhilfe schaffen.

Features:
- Flottes, inutitives Gameplay
- Zufällig generierte Maps
- Tilebasierter grafischer Retro-Stil (16 Farben)
- Sounds & Musik
- Highscore-Liste
- 4 Tilesets
- 8 Items (davon 4 als Waffe ausrüstbar)
- 5 Monster
- Hauptmenü
- 4 Slots für automatisch generierte Savegames


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

Bild
Zuletzt geändert von diceman am 29.06.2019 13:00, insgesamt 1-mal geändert.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubber (Mini-Roguelike)

Beitrag von diceman »

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. :lurk:
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
- Chance minimal gebufft, daß Monster den "Guard"-Status aufgeben
- 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.
- "How to Play"-Textfile an die aktuellen Änderungen angepasst


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

Bild
Zuletzt geändert von diceman am 03.07.2019 17:29, insgesamt 1-mal geändert.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubber (Mini-Roguelike)

Beitrag von diceman »

Das Insel-Tileset fühlt sich jetzt richtig wie eine Insel an. :-)


Bild
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Benutzeravatar
diceman
Beiträge: 347
Registriert: 06.07.2017 12:24
Kontaktdaten:

Re: Landlubber (Mini-Roguelike)

Beitrag von diceman »

Der letzte 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. :freak: :D

Download v3.01 (Uploadfiles.io)



Change-Log v3.01
- Die Versions-Number 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 (thx @Mijkai) 8)
- 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.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
Antworten