Zeit-System
In dem Tutorial geht es darum, ein "Zeitsystem" in eure Spiele einzubauen. Ihr könnt die Zeit auf verschiedene Art und Weise „erfahren“ sei es so, als wenn ihr Ingame auf die Uhr schaut oder ob ihr über Tastendruck die Zeit abfragt. Ihr könnt auch selber einstellen, wie schnell eure Zeit ingame verfliegt. Ob ihr es nun nach „Realer“ Zeit macht oder 5 minuten wie ein Tag ist.
Aber seht selbst:
Erstellt ein neues Projekt (so wie ich es immer mache) welches ihr „Testinsel“ oder sonst wie nennt.
Auf dieser „Testinsel“ könnt ihr die ganzen sachen erstmal Testen, bevor ihr sie in euer Spiel einbaut.
Hier ist meine Insel:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/1.jpg[/url])
Ich habe nicht aufs Mapping geachtet, dabei geht’s auf dieser Insel ja nicht ;)
(sieht man aber auch ^^)
Sooo nun überlegen wir mal, was man für eine Zeitanzeige benötigt.
Unser Programm (oder im RPG-Maker fall: „Event“) braucht im Grunde nur Sekunden, Minuten und Stunden. (Für das Grundlegende Event)
Also deklarieren wir erstmal die 3 Variablen:
zeit_sekunden
zeit_minuten
zeit_stunden
Wenn ihr wollt könnt ihr euch natürlich noch Tage, Monate und Jahre hinzufügen.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2.jpg[/url])
So nun brauchen wir unser erstes Common-Event welches wir auf „Parallel-Prozess“ stellen.
Dieses Event nennen wir „Zeitberechnung“ und geben den Switch „Initialisierung“ (so nenne ich meinen „Startswitch“ immer ihr könnt euch natürlich selber aussuchen ab wann eure Zeitrechnung beginnt.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/3.jpg[/url])
So nun müssen wir dem Event klar machen, wie viel „Echtzeit“ EINE deiner Ingame Sekunden entspricht. An dieser Stelle könnt ihr also entscheiden wie lange eine Sekunde Ingame dauert.
Also fügt in das Event folgenden Command hinzu:
WARTEN – (wait)
und sagen dem Programm das wir 30 Frames (eine halbe Sekunde) „warten“ sollen, bevor wir eine Ingame-Sekunde erhöhen.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/4.jpg[/url])
Nun müssen wir dem Programm natürlich auch noch sagen, dass eine „Ingame-Sekunde“ vergangen ist.
Also fügen wir das nächsten Command ein:
Variable ändern – (change variable)
Die zu ändernde Variable ist die von uns angelegte „zeit_sekunden“ und addieren (+) um 1!
(Die 1 steht in diesem Fall für die Sekunde)
So sollte es aussehen:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/5.jpg[/url])
Soweit so gut, der erste schritt zu Zeit wäre getan. Gratulation! ;)
Denken wir doch mal nach, wie viele Sekunden hat denn eine Minute?
60 Riiiiiichtig :D
Also müssen wir dem Programm folgendes sagen:
Wenn 60 Sekunden vergangen sind, dann ist 1 Minute vergangen, und die Sekunden fangen wieder von 0 an.
Und das machen wir nun:
Bedingung – (In englisch hieß es glaube ich If - / else oder so ;) )
Hier stellen wir die Variable ein, die die Minute auslöst. Also die Variable zeit_sekunden.
Den Operator stellen wir auf „Größer-Gleich“ ( >= ) und die Konstante auf 60.
(Der „Ansonstenfall“ muss nicht aktiviert sein! Habs auf dem Bild vergessen auszustellen xD)
([url]http://i578.photobucket.com/albums/ss224/Neoxit/6.jpg[/url])
Ein bisschen übersichtlicher heißt es nun: Wenn zeit_sekunden größer oder gleich 60 ist, dann...
und das dann fügen wir nun ein!
Variable ändern (change variable)
Und addieren (+) den Wert zeit_minuten um 1.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/7.jpg[/url])
Wer nun schlau ist, wird sich fragen: „Die Sekunden laufen doch immer noch weiter, und dank des Größer-Gleich Operator wird die Minute doch ebenfalls mit jeder Sekunde erhöht.“
Richtig gedacht! Deshalb müssen wir nun die Sekunden wieder auf 0 Setzen damit die Sekunden wieder von vorne anfang kann.
Variable ändern (change variable)
und setzten den Wert zeit_sekunden gleich (=) 0.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/8.jpg[/url])
So im großen und ganzen sind wir fertig. Für JEDE weitere Zeiteinheit können wir die gesamte „Bedingung“ Kopieren und in dieses Event einfügen also:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/9.jpg[/url])
([url]http://i578.photobucket.com/albums/ss224/Neoxit/10.jpg[/url])
Nun ändert ihr noch die Werte alle ab.
Beim zweiten erhöht ihr also sobald 60 Minuten vergangen sind die Stunde um 1 und setzt die Minuten zurück auf 0.
Und beim dritten setzt ihr sobald 24!! (da der Tag ja nur 24 Stunden hat) Stunden vergangen sind auf 0. Wenn ihr dies noch auf Tage erweitern wollt erhöht ihr den Wert „Tage“ um 1. Dieser ist in diesem Tutorial nicht vorhanden.
So sollte es dann aussehen:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/11.jpg[/url])
Sooooo! Nun sind wir doch gespannt ob es alles so geklappt hat wie beschrieben.
Wir erstellen auf der „Testinsel“ ein Event um die Zeit abzufragen. In meinem Fall habe ich ein Schild hingesetzt.
Nennt es Uhr oder Uhrzeitschild oder wie auch immer. Setzt die Priorität auf „Genau wie Spieler“ und die Aktivierung auf „Bestätigungstaste“.
Nun geben wir noch eine Textnachricht aus die angezeigt werden soll wenn wir auf das Schild klicken. Und Schreiben rein:
Es ist derzeit:
\v[0003]:\v[0002]:\v[0001] Uhr!
So wie es auf dem Bild steht.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/12.jpg[/url])
Wundert euch an dieser Stelle bitte nicht über dieses „Yen“ Zeichen. (Das Y mit den strichen duch)
Da ich die Deutsche DLL nutze ist dies ein Anzeigefehler und das „Y“ entspricht bei mir dem Backslash „\“. Also für alle anderen gilt: Nutzt den Backslash!
Noch eben die Erklärung wofür „\v[0003]“ z.b. Steht: Wenn ihr dies so eintragt wird an dieser Stelle im Text die Variable angezeigt die in der Datenbank auf platz 0003 steht. In unserem Fall die Stunden. ( \v steht für \Variable und [XXXX] für den Index der Variable) ;)
So nun müsst ihr mit irgend einem Event nur noch den (in meinem Fall Initialisierungs-switch) anschmeissen. Das der Timer Prozess funktioniert.
Wollen wir doch mal Testen!
([url]http://i578.photobucket.com/albums/ss224/Neoxit/13.jpg[/url])
Schaut gut aus! ;) Ihr könnt natürlich auch die Sekunden komplett rausnehmen. Dann ändert ihr im Common-Event einfach den wert nach dem „Wait“ befehl auf zeit_minuten. Dann vergeht alles in allem etwas schneller ;)
In meinem nächsten Tutorial werde ich euch den Tag und Nacht Zyklus erklären, den man mit Hilfe unseres eben gemachten Zeitanzeige-Systems ganz einfach umsetzen kann.
Bis dahin Ceeya soon ;) Euer Neoxit aka Maik ;)
P.s.: Dies war mein aller erstes im Leben geschriebenes Tutorial und ich wünsche mir von euch gewisses Feedback ;)
Danke an alle ;)
Tag-/Nacht Zyklus
So hier ist mein versprochener zweiter Teil des Tutorials in dem es darum geht, einen Tag und Nacht Zyklus in das Spiel zu implementieren der auf unserem (im ersten Teil des Tutorials) entwickelten Zeit-System basiert.
Fangen wir an!
Also wir werden nun folgendes machen:
Wir werden ein zweites Common-Event erstellen in dem erneut überprüft wird welche Zeit wir haben und demnach die Screentönung ändern. Wir benötigen also insgesamt 5 Bedingungsabfragen, die wie folgt aussehen:
Wenn zeit_stunde = 0 dann färbe den Screen Dunkelblau (Nacht)
Wenn zeit_stunde = 5 dann färbe den Screen Orange (Morgengrauen)
Wenn zeit_stunde = 8 dann färbe den Screen Weiß (Tag)
Wenn zeit_stunde = 16 dann färbe den Screen Rötlich (Abenddämmerung)
Wenn zeit_stunde = 20 dann färbe den Screen Dunkelblau (Nacht)
Im Grunde ganz einfach oder? Ist es auch wenn man bereits unser zuvor entwickeltes Zeiten-System hat.
Also erstellen wir unser Common-Event welches wir „Tag/Nacht“ nennen.
Stellen es auf Parallel Prozess und nehmen als Aktivierungsswitch ebenfalls unseren Initialisierer.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_1.jpg[/url])
Fangen wir doch sofort an die Bedingung einzufügen das der Bildschirm Dunkelblau gefärbt werden soll wenn zeit_stunde == 0 (also 0 Uhr (Nachts halt ^^)) beträgt.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_2.jpg[/url])
Nun soll sich natürlich der Screen auch färben sobald die Uhr 0 anzeigt.
In dem Fall Dunkelblau. Wir nehmen also Folgende Werte: -255,-255,-50,0
Diese stehen für:
Rot: -255
Grün: -255
Blau: -50
Grau: 0
Und nehmen ein Fade (Übergang der Farbe) von 3 Sekunden also 180 Frames.
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_3.jpg[/url])
Im Grunde haben wir das Grundgerüst schon wieder fertig!
Nur noch (wie oben bereits genannt) 4 weitere Kopien vom bisherigen anfertigen:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_4.jpg[/url])
Die neuen Werte für die verschiedenen Tageszeiten abändern:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_5.jpg[/url])
Und Voilâ! Euer Tag/Nacht System ist fertig!
Testet es doch einfach mal indem ihr im Common-Event „Zeitberechnung“ statt die Sekunden hoch zu zählen, direkt die Minuten hoch zählen zu lassen und diese auf ca. 5 Frames zu setzen.
Hier nochmal zur schnellen Erklärung:
VORHER:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_6.jpg[/url])
NACHER:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_7.jpg[/url])
Soooo dann wollen wir es doch einmal Testen oder nicht?
So sollte es dann aussehen:
Nacht zwischen 20:00 und 5:00 Uhr:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_8.jpg[/url])
Morgengrauen zwischen 5:00 und 8:00 Uhr:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_9.jpg[/url])
Tag zwischen 8:00 und 15:00 Uhr:
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_10.jpg[/url])
Abenddämmerung zwischen 15:00 und 20:00
([url]http://i578.photobucket.com/albums/ss224/Neoxit/2_11.jpg[/url])
Schaut nun nicht so Atemberaubend aus weil die Farben nicht allzu optimal waren die ich genutzt habe. Aber damit könnt ihr ja ein bisschen rumspielen bis ihr die Farben-Tönungen gefunden habt, die in euer Spiel passen.
Genau so könnt ihr natürlich auch noch die Zeiten anpassen, wann genau gefaded werden soll.
Das war es auch dann schon wieder von mir. Ich hoffe nach wie vor das es euch gut gefallen hat und das es leicht verständlich war.
Im nächsten Tutorial wird es von mir wohl eine Eventprogrammierung geben, wo ihr einen Beliebigen Baum fällen könnt, entsprechendes Holz bekommt und vllt schweife ich noch so weit aus das ich einen „Baum Fällen“-Skill einbaue, welcher bestimmt wie viel Holz und welche Art von Holz ihr abbauen könnt. Und wenn ich dann noch Zeit habe, werde ich auch wieder auf unser Zeit-System zurück greifen und auch Tage berechnen lassen, so dass die gefällten Bäume auch wieder Nachwachsen.
Wenn ich hier auf viel Feedback treffe, das ihr ein solches Tutorial gerne sehen wollt, dann werde ich es weitaus größer ausfallen lassen.
Und wenn nicht, dann werde ich es beim simplen Bäume fällen und Holz bekommen belassen ;)
Bis dahin wünsche ich euch viel Spaß mit den Tutorial!
Euer Neoxit aka Maik ;)