Zitat Zitat von Col-Chi Beitrag anzeigen
Ich freue mich, den 100. Post in diesem Thread schreiben zu dürfen
Ich bewundere es, wie fleißig und konsequent Du an Deinem Projekt arbeitest, Schotti,
Und auch die wöchentlichen Aktualisierungen, das kostet ja auch wieder Zeit.
Ich hoffe Du hast den Ehrgeiz und die Motivation, es bis zum Ende durchzuziehen.
Bis dahin erstmal gute Besserung
Danke für deinen Kommentar, das ist das bleifreie Benzin in meinem Motivationsmotor! Die wöchentlichen Updates helfen mir sehr, mich zu strukturieren und kleine Teilabschnitte zu beenden. Das ist goldwert und kann es nur jedem empfehlen! Das Spiel werde ich definitiv zu Ende bastelt, macht euch da keine Sorge! In diesem Spiel steckt schon zuviel Herzblut drin und ich habe noch unzählige Ideen und Konzepte, die mir viel Freude beim einbauen machen werden!

UPDATE: RADIO? EXIT!

Hallo Atelier!

Mir geht es inzwischen wieder sehr gut und ich habe in der kleinen Zwangspause viel neue Kraft, Inspiration und Motivation getankt. Doch genug des Vorgeplänkels, ab ins Update!

Das Kernstück diese Woche war die Radiostation KPFfm samt Sendemast als neue Location. Bevor ich ins Detail gehe, hier das passende gif (mit scrollendem Background! Wooohoo):



Ich habe mir folgende Kriterien für eine Location in SANTRIA! auferlegt:


  • Die Location muss die Infrastruktur von Pine Falls um eine wichtige Funktion ergänzen/bereichern (Memo an mich: Die Wohnhäuser nicht vernachlässigen!)
  • Die Location muss in die "World Fantasy" passen, also nicht negativ herausstechen in der Spielwelt, aber trotzdem die typische Santria-Quirkyness ausstrahlen
  • Die Location muss beim ersten Blick sofort "klick" machen und seinen Zweck offenbaren
  • Die Location muss einen hohen Grad an Individualität aufweisen. Ich möchte nicht wie im 08/15 JRPG ein Gebäudesprite verwenden und lediglich einzelne Schilder für INN, Schmied und Shop dranklatschen


Nach diesem Credo arbeite ich die Worldmap Stück für Stück runter und baue neue Ideen ein. Den bisherigen Stand aus dem Mapeditor habe ich hier mitgebracht:



Die grünen Bereiche der Map sind zu 100% durchgeplant und abgeschlossen. Das wirkt nach weniger als es eigentlich ist, da ich diverse Bereiche auf der Map habe, die an sich fertig sind, aber noch nicht zuende dekoriert oder die alten Gebäudesprites noch nicht zu 100% aufpoliert. Ich habe mir vorgenommen, jedes Update eine neue Location vorzustellen und das Worldmap-Bild anzupassen, damit ihr den Progress der Worldmap live mitverfolgen könnt. Ich arbeite parallel an der Worldmap und an den Features, damit ich einen gesunden Mix aus Pixelart und Coden habe und nicht verrückt dabei werde. Wenn beides fertig ist, werde ich die Geschichte durchplanen und die unzähligen Dialoge und Quest schreiben und einfügen.

Als kleinen Abschluss eine kleine Funktion, die ich letztens eingebaut habe: Das Zurückkehren ins Hauptmenü über das Gedrückthalten der ESC-Taste, schaut selber:




Ich war es müde, dass ich nicht ins Hauptmenü zurückkehren konnte, ohne das Spiel zu beenden und neuzustarten. Längst überfällig! Wie genau sieht der kleine Code aus?

Create-Event:
Code:
/// Initiate 
exit_akt = 0;
exit_max = 100;
Der Code, der einmal abgespielt wird, wenn das Objekt in den Raum gesetzt wird. Ich erkläre der Engine, dass ich zwei neue Variablen brauche, die initiiert werden sollen, exit_akt und exit_max. Was sie genau bedeuten, ergibt sich aus den nächsten Code-Blöcken:

Step-Event:
Code:
/// COUNTING DAT EXITS

if (keyboard_check(vk_escape)){
    exit_akt = exit_akt+1.75;
} else {
    exit_akt = 0;
}

if (exit_akt > 110){
    game_restart();
}
Dieser Code wird jeden Frame runtergespielt. Jeden Frame wird überprüft, ob die ESC-Taste gedrückt wurde. Wenn ja, dann steigt exit_akt um 1.75. Da das Spiel auf 30 fps gecappt ist, ist es also knapp 50 pro Sekunde. Wenn die ESC-Taste aber nicht gedrückt wird, fällt der Wert sofort wieder auf 0. Sollte der Wert über 110 liegen, wird das Spiel über game_restart(); restartet und das Spiel ist wieder im Hauptmenü. Warum 110 und nicht exit_max? Das wird verständlich durch den nächsten Abschnitt:

Draw_Event:
Code:
/// DRAW 

if (keyboard_check(vk_escape)){

    draw_sprite(spr_icon_exit, 0, view_xview[0]+10, view_yview[0]+190);
    draw_sprite_part(spr_icon_exit, 1, 0, 0, sprite_get_width(spr_icon_exit)/exit_max*exit_akt, sprite_get_height(spr_icon_exit), view_xview[0]+10, view_yview[0]+190);

}
Solange die ESC-Taste gedrückt ist, wird der Exit-Icon auf den Bildschirm gezaubert. Der Exit-Icon besteht aus zwei Bildern, Bild 1 ist der Icon mit blauen Hintergrund und Bild 2 ist der Icon mit grünen Hintergrund. Mit der ersten Codezeile wird das blaue Bild permanent dargestellt, in der zweiten Zeile wird das grüne Bild PROZENTUAL gezeichnet über die draw_sprite_part-Funktion, und zwar über das blaue Bild. Die Höhe des grünen Icons bleibt gleich, die Breite des Icons wird aber über folgenden Ausdruck vorgegeben:

Code:
sprite_get_width(spr_icon_exit)/exit_max*exit_akt
Was genau heißt das? Der Sprite ist z.B. 100 Pixel breit. Ich könnte der Engine sagen: zeichne bitte 100 Pixel des Icons, und damit das vollständige Icon. Da es umständlich ist, den genauen Wert nachzuschauen, kann auch einfach sprite_get_width(bild) genutzt werden, um die genaue Pixelanzahl der Iconbreite auszuspucken. Ich möchte aber nicht das gesamte grüne Bild über das blaue Zeichnen sondern nur soviel, wie ich vom Gamerestart entfernt bin. Was zählt die Entfernung vom Gamestart? exit_akt! Ich erkläre der Engine, dass ein Wert von 100 einer 100% Auffüllung entspricht (exit_max = 100 im Create-Event) und kann dann durch exit_akt DURCH exit_max MAL der maximal möglichen Pixelbreite eine akkurate Breite, die dargestellt werden soll, errechnen. Es ist zwar einfachste Prozentrechnung, ich bringe aber mal ein Beispiel, falls ich es nicht gut genug erklärt habe:

Sagen wir, der Exit-Prozess ist zu 50% abgeschlossen. exit_akt ist damit 50 und exit_max bleibt fest bei 100. Es wäre dann 50/100 * Iconbreite = 0.5*Iconbreite, die dargestellt werden, bei 100 Pixel also 50 Pixel!

Warum restartet das Spiel aber bei exit_akt = 110 und nicht beim Wert von exit_max? Nun, ich finde, es sieht schöner aus, wenn das Spiel erst kurz nach vollständiger Darstellung des grünen Bildes restartet. Ohne diese Zeitverzögerung sieht das ein wenig absturzmäßig aus!

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