Zitat Zitat von Stille Beitrag anzeigen
Na huch, du hast ja den Untertitel "ein Earthbound-esques RPG" entfernt, wie kommts? Versuchst du dich bei deiner Spielidee doch nicht so strikt an Earthbound zu halten?
Das Spielgefühl und der Grafikstil von der Mother-Serie sind zwar weiterhin große Inspirationsquellen für SANTRIA!, dennoch möchte ich das Spiel nicht nur in diese Schublade stecken. Mit der Zeit sind sehr verschiedene Einflüsse und Mechaniken in das Spiel eingeflossen, die sich (so meine Hoffnung) in einem einzigartigen und wohlschmeckenden SANTRIA!-Cocktail vereinen.

UPDATE: MYSTERY!

Hallo Atelier! Willkommen zum Update am Sonntag!

Diese Woche habe ich mich mit intensiv mit dem Tileset einer Höhle beschäftigt, die eine wichtige Rolle im Intro des Spiels einnehmen wird. Es handelt sich um die heilige Stätte einer längst vergangenen Hochkultur, die einen wichtigen Teil zum Worldbuilding beitragen wird. Die Architektur ist in seiner Form sehr archaisch/organisch und zeigt in seiner Verarbeitung einen unnatürlich perfektionistischen Minimalismus und Glätte. Sabaku hat mit ihrem Monolith-Design diese Prämisse wunderbar getroffen.

Nach dem Tileset folgte das Polishing: um die Atmosphäre etwas zu heben und etwas Höhlenfeeling reinbringen, habe ich zusätzlich einen Sichtradius eingebaut. Eine Portion Mystery kommt durch die schwebenden Partikel hinzu. Hier das Endergebnis:




Für einen Rundgang durch die Höhle könnt ihr zusätzlich auf den Spoiler klicken (vorsicht, 3 MB-gif!):



Der Sichtradius ist ein sehr einfacher Effekt, den man im Game Maker einbauen kann. Der Schlüssel dabei sind die Surfaces. Der Game Maker zeichnet den Bildschirminhalt nicht direkt auf den Monitor sondern geht über eine sogenannte "Application Surface", auf die alle Objekte projiziert werden. Diese Application Surface kann selber manipuliert werden oder (wie in diesem Fall) mit weiteren Surfaces überlagert werden. Stellt es euch wie verschiedene Layer bei Photoshop vor. Hier ein grober Überblick, wie das als Code aussieht.

Wenn der Spieler die Höhle betritt, wird ein Objekt mit dem Namen "obj_lightning" initiiert. Dabei wird zuerst einmal der Code im Create-Event aufgerufen:

Create Event:
Code:
lightningsurface = surface_create(room_width, room_height);
Dieser Code erschafft eine Surface, auf die wir uns beziehen werden. Sie ist so groß wie die Raumdimensionen der Höhle.

Anschließend folgt der Step-Event, der jeden Frame abgespielt wird:

Step Event:
Code:
// Welche surface wollen wir modifizieren?
surface_set_target(lightningsurface);

// wir zeichnen auf die surface ein schwarzer Rechteck mit einer Transparenz von 20%
draw_set_colour(c_black);
draw_set_alpha(0.8);
draw_rectangle(0, 0, room_width, room_height, false);

// wir substrahieren von dem schwarzen Rechteck einen Kreis, der an den Spieler gebunden ist
draw_set_blend_mode(bm_subtract);
draw_set_colour(c_white);
draw_set_alpha(1);
    
 with (obj_player) {
        draw_circle(x + random_range(-0.5, 0.5), y + random_range(-0.5, 0.5), 120 + random_range(-0.5, 0.5), false);
 }

// wir setzen alles wieder zurück
draw_set_blend_mode(bm_normal);
draw_set_alpha(1);
surface_reset_target();
Was passiert in diesem Code? Zuerst wählen wir die Surface aus, die wir manipulieren wollen über surface_set_target(). Anschließend zeichnen wir ein schwarzes Rechteck mit einer Transparenz von 80%, welches den ganzen Raum bedeckt. Das geschieht über den draw_rectangle()-Befehl. draw_set_colour() ist für die Farbe und draw_set_alpha() für die Transparenz/Alpha-Wert zuständig. Ihr könnt den Effekt des Rechtecks im gif ganz außen sehen.

Anschließend ziehen wir von dem schwarzen Rechteck ein Kreis ab, der unseren Sichtradius darstellt. Dazu müssen wir zuerst den Blendmode wechseln, und zwar in den Substractions-("Abzieh"-)Modus. Das geschieht über draw_set_blend_mode(). Wir beziehen uns mit with(obj_player) auf den Spieler und zeichnen mit draw_circle() den Kreis. Da der Inhalt der Klammer etwas komplizierter ist, hier die genaue Aufschlüsselung:

Die Funktion lautet draw_circle(x, y, r, outline). Als X-Wert nehmen wir den X-Wert des Spielers und variieren den Wert durch Addition/Subtraktion eines kleines Betrags, damit es so aussieht, als wenn das Licht hin und her wander und nicht statisch ist: x + random_range(-0.5, 0.5). Das gleiche gilt für den Y-Wert. Anschließend wird der Radius r abgefragt. Diesen lassen wir auch ein wenig variieren, damit es wie flickern aussieht: 120 + random_range(-0.5, 0.5). 120 ist dabei der Radius in Pixel. Da wir keine Outline beim Kreis haben wollen, wird der Wert auf false gesetzt.

Abschließend setzen wir den blendmode und den Alpha-Wert auf default und geben die Surface wieder frei (surface_reset_target()), da ansonsten alle weiteren Objekte nicht auf die Application Surface sondern direkt auf diese Surface draufgemalt werden und das wollen wir nicht, da unsere Surface über allen anderen Objekten auf der Application Surface liegen soll. TADA! Fertig ist der Lichtradius. Bei meinem Lichtkreis hab ich zusätzlich eine weitere Abstufung eingebaut, damit es keinen zu harten Übergang gibt. Vielleicht baue ich noch 1-2 weitere Abstufungen ein.

Ich hoffe, der kleine Exkurs hat euch einen kleinen Einblick in das Game Maker-Coden gewährt und weckt die Lust nach eigenen Versuchen!

Abschließend gibt es noch ein kleines Update zum Twitter-Experiment:

Ich poste weiterhin mehr oder minder regelmäßig aber mindestens einmal die Woche ein kleines Update auf Twitter und beschränke mich nach wie vor auf die Tags #gamedev #indiedev und #pixelart. Zusätzlich versuche ich den #screenshotsaturday mitzunehmen, um darüber zusätzlich bissl Werbung fürs Spiel zu machen. Der Followeranstieg ist nach wie vor linear, mal schauen wie sich das die nächsten Monate weiterentwickelt



Soviel von mir, ich bin auf eure Meinungen und Kommentare gespannt und ansonsten: Stay tuned und bis nächsten Sonntag!