Ich steh total auf solche Dev-Einblicke! Da kann gerne mehr von kommen!
Kannst du noch ein paar vertiefende Worte drüber verlieren, wie aus dem Paint-Leveleditor die fertige Spielwelt wird? Ich finde den Prozess super spannend. Die Raumhöhe wird wahrscheinlich bei jedem Tile gleich sein, oder?
ab sofort ist am Wochenende immer Dungeon Sound Devlog! Versprochen
Dungeon Sounds hatte in der ersten Fassung noch ein großes Problem - Heute geht es um Sound!
Das Spiel arbeitet natürlich mit 3d Sound, dieser ist aber bisher nur sehr einfach gehalten: Der Zuhöhrer ( Spieler ) empfängt die Soundquellen in der Umgebung, wobei die Lautstärke abhängig von der Distanz ist. Ganz davon abgesehen, dass wir natürlich mit einem sehr stark vereinfachten System von Akustik arbeiten ( Es gibt keine Reflektion oder andere Effekte ), hat dieses System in keinster Weise die Umgebung mit einbezogen. Betrachtet man folgenden Fall, wird das Problem schnell deutlich:
(Der Kreis kennzeichnet die Soundreichweite des Gegners, das Ohr ist der spieler)
Geräusche gehen durch alle Objekte, was gerade bei Wänden zu problemen führen kann. Dadurch können Gegner gehört werden, die unter Umständen noch sehr weit von einem weg sind. Das ist problematisch, weil es in Dungeon Sounds vorrangig um Musik und Geräusche geht, also muss vor allem dieser Apsekt gut funktionieren.
Als Lösung besitzt nun jeder Charakter eine Hörreichweite die sich effektiv am Spielgitter orientiert. Jedes Mal, wenn ein Charakter sein Feld wechselt, wird der abgedeckte Bereich seines Gehörs neu berechnet:
Die Zahl beschreibt wie viele Felder die Reichweite noch machen kann und verteilt sich demnach immer weiter auf die angrenzenden Felder. Je niedriger die Zahl, desto leiser ist ein Geräusch auf diesem Feld zu hören.
Wenn der Gegner nun ein Geräusch macht, wäre dies nicht vom Gehör des Spielers abgedeckt und daher nicht zu hören.
Der Vorteil dieses Systems ist, dass die abgedeckte Reichweite nur neu berechnet werden muss, wenn der Charakter sein Feld verlässt. Nachteilig ist allerdings, dass es in diesem System keine Lautstärke gibt: entweder etwas ist in Hörreichweite, oder nicht. die Lautstärke der Geräuschsquelle beeinflusst nicht das Gehör, dessen Reichweite ja gleich bleibt. Das ist aber okay, weil Dungeon Sounds in dieser Richtung kein Gameplay vorsieht.
Natürlich ist dises System streng genommen nicht richtig:
Das Bild zeigt,dass die Ausbreitung über die Felder in diesem Falle eher die Form eines Vierecks, als die eines Kreises annimmt. Falsch ja, aber da Dungeon Sounds überwiegend in engen Gängen spielt und alle Charaktere ständig in Bewegung sind, ein Effekt der vom Spieler nicht wahrgenommen werden wird.
Und ich hab Schotti nicht vergessen, nächstes wochenende bekommst du einen ausführlicheren Post!
Yeah, ein neuer Devlog! Das sieht nach einer klassischen Pathfinding-Lösung aus, die euer Akustik-Problem super löst! Ich denke auch, dass der Wegfall der Geräuschlautstärke vernachlässigbar ist. Mit welcher Frequenz stoßen eure Gegner gefährliche Geräusche von sich?
Zitat von csg
[...]
Und ich hab Schotti nicht vergessen, nächstes wochenende bekommst du einen ausführlicheren Post!
Ich hab gehört, das Spiel soll voll den guten Soundtrack haben, mit schönen Grafiken und toller Programmierung, hab ich gehört!
Mal ein Angebot von mir an dich, csg: Ich würde, falls gewünscht, nochmal über die Songs drüber gehen und etwas anpassen, besonders Lautstärke-technisch, weil da einiges ja irgendwie lauter ist als anderes Zeug. Und natürlich würde ich den Soundtrack erweitern, wenn die Notwendigkeit dazu besteht
[ ] Ja
[ ] Nein
[ ] Vielleicht
[ ] Nur knutschen
Mit welcher Frequenz stoßen eure Gegner gefährliche Geräusche von sich?
...
Gegner machen sich fast ununterbrochen bemerkbar - genau wie der Spieler geben sie Musik von sich!
Zitat von V-King
Mal ein Angebot von mir an dich, csg: Ich würde, falls gewünscht, nochmal über die Songs drüber gehen und etwas anpassen, besonders Lautstärke-technisch, weil da einiges ja irgendwie lauter ist als anderes Zeug. Und natürlich würde ich den Soundtrack erweitern, wenn die Notwendigkeit dazu besteht
...
[X] Ja
! Wir arbeiten grad noch an der Technik, den Graphiken und auch ganz allgemein noch an ein paar verrückten Ideen, die uns so gekommen sind. Aber wenn du Lust hast, würden wir uns natürlich freuen wenn du noch mit im Boot bist!
Ich melde mich dann bei dir!
Also ich freue mich immer mehr auf das Spiel!
Die Sounds klingen schon mal sehr gut und ich bin gespannt, was es noch alles an Songs geben wird ^^
Vor allem gefällt mir auch diese Grafik, die man so nicht oft sieht.
Wann können wir in etwa mit einer Demo oder einer VV rechnen?
(Sry, falls ich hier eine Frage stelle, die es schon zu hauf gab.)
Wann können wir in etwa mit einer Demo oder einer VV rechnen?
(Sry, falls ich hier eine Frage stelle, die es schon zu hauf gab.)
...
Im Startpost gibt es noch Versteckt eine Verlinkung auf die noch ziemlich klunkige Version vom Indie Game Maker Contest damals, falls du die Pferde gar nicht mehr halten kannst.
Heute erzähle ich von einem neuen Spielfeature, das ich das erste mal in Dark Souls gesehen habe. Seitdem wollte ich es schon immer mal kopieren, endlich ist der Tag gekommen! Ähnlich wie in der Vorlage kann man nun in Dungeon Sounds die Phantome anderer Spieler sehen, die an den gleichen stellen vorbeigekommen sind und den Dungeon erkunden. Man sieht sie aber nicht nur, man hört sogar die Lieder, die sie gespielt haben als entferntes Echo.
Diese mysteriösen Phantome erscheinen im Spiel leuchtend blau und verblassen, wenn man ihnen zu nahe kommt.
Nun ein wenig zur technischen Lösung des ganzen:
Das Spiel logt ab sofort die eigenen Daten ( Position und gespielte Noten ) der letzten 60 Sekunden als ein Segment. Ist dies voll, werden die gesammelten Daten gebündelt und an einen Server geschickt. Jedes Segment wird einem Spielquadranten, die eine Reichweite von 10x10 Feldern haben, zugeordnet.
Nun schickt das Spiel jede 2 Minuten eine Anfrage an den Server, ob in dem aktuellen Quadranten des Spieles denn nicht mal ein Spieler vorbei gekommen ist. Wenn dem so ist, schickt der Server das entsprechende Segment des Spielers ( 60 Sekunden! ) zurück zum Spieler und zeigt sie an.
Wir sind nach wie vor dabei die Atmosphäre im Spiel zu verdichten, also gibt es ab sofort: Kerzen!
Wer sich noch an den Post über unser Mappingsystem erinnert, dem fällt sicher auf: Einzelne Kerzen zu platzieren ist gar nicht mal so einfach! Da wir Objekte eigentlich nur auf einem Tile-Raster mittels Skriptbefehl aufstellen können war uns schnell klar, dass wir so nicht weiterkommen. Unsere Vorstellung war, ganze Räume mit Kerzen zu schmücken und so die Stimmung deutlich zu erhöhen.
wie sind wir also vorgegangen? Ich präsentiere, Kerzentexturen:
Ähnlich wie wir unseren Dungeon mittels einer Textur speichern, verfahren wir mit den Kerzen. Jeder graue Punkt erzeugt eine Kerze im Spiel, wobei die Helligkeit des Pixels bestimmt, wie hoch die entsprechende Kerze platziert wird.
Die Kerzentextur ist quasi eine detailreichere Variante der Dungeonkarte und wird im Spiel einfach über diese drauf gelegt. Im Bild sieht man gut, wie die Textur ( die in diesem Fall eine Fläche von 3x3 Dungeontiles abdeckt) in das Spiel integriert wird. Durch die höhere Auflösung können so genauer die Kerzen plaziert werden. In einer Kerzentextur wird ein Feld mit 20x20 pixel beschrieben, theoretisch könnten also 400 Kerzen paziert werden.
Die Größe der Kerzentextur ist übrigens variabel, muss nur jeweils durch 20 teilbar sein. eine Kerzentextur kann also ein einzelnes Feld, oder einen ganzen Raum abdecken!
Ein Kerzenareal wird dynamisch mittels einer Skriptzeile eingebunden:
Parametererklärung: path Pfad zur Kerzentextur maxheight Höhenmodifikator - er bestimmt, wie hoch eine Kerze maximal plaziert werden kann. Die tatsächliche Höhe wird interpoliert von Schwarz (0) bis Weiß (Höhenmodifikator). candleType Kerzentyp. Wir haben sowohl Weiße (0), als auch rote (1) Kerzen. position Position des Areals auf der Dungeonkarte id Id des Objektes, um es später anzusprechen und zu modifizieren.
Großartig! damit ist alles erklärt!
Nein halt, vielleicht ist dem ein oder anderen aufgefallen, dass die Kerzentextur noch eine weitere Information speichert. Die Farbe, die eine Kerze umgibt, legt fest, wie spät sie entzündet wird.
Mittels des skriptbefehls
Ist es möglich die Kerzen per Skript zu aktivieren. Dies war uns wichtig für Cutscenes oder wenn Räume betreten werden! Die Kerzen werden zeitversetzt aktiviert, je nach Farbwert, der sie umgibt: Die roten Bereiche werden später aktiviert, als die grünen. Durch saubere Verläufe in der Textur können schöne Effekte erzeugt werden, hier ein letztes Beispiel:
Ich finde es sehr beeindruckend, wir ihr mit eurem "Paint"-Leveleditor angefangen habt und diesen nach und nach durch weitere Funktionen erweitert! Die Kerzentextur ist ein schönes Beispiel, wieviele verschiedene Informationen man über Farben in einem Bild codieren kann. Danke für den Einblick!
Die Kerzen sind ein atmosphärischer Zusatz und werten das Gruftfeeling sehr auf! Habt ihr mal über herabtropfendes Wasser nachgedacht mit passendem Platschgeräusch? Das ist doch ein schöner Dungeonsound!
Wird es eigentlich auch eine größere bzw. tiefgehende Story geben? Bisher sieht es nicht danach aus, aber falls dem doch so sein sollte, kämt ihr bei eurem musikalischen Fokus mMn kaum an eigenen Leitmotiven für wichtige Charaktere vorbei (s. z.B. Chrono Trigger, Terranigma).
Mir würde das jedenfalls sehr gefallen.
Aphonia heroica: Unvermögen eines Helden, eigene Dialoge zu generieren. Prominente Fälle: Link (Legend of Zelda), Crono (Chrono Trigger), Edel (Hell Gates 2)
Pi = 2! ...zumindest in 1D...
Kutte benutzt Dinkelplätzchen. - Es ist sehr effektiv!