Ich möchte euch heute ein kleines Tutorial vorstellen, in dem ihr die Grundlagen für ein Zeit-System vermittelt bekommt. Im Prinzip ist es ganz einfach:
Ihr setzt eine Variable, die von 0 bis 59 hochzählt, danach wechselt sie zu 0 und eine Minute wird hinzugefügt. Das kann man dann bis auf Tage, Wochen, Monate, Jahre ausbauen. Auch ein (halb) Flüssiger Übergang ist in diesem Tutorial enthalten: ab 20 Uhr wird der Alphawert für ein Rectangle, das über den Bildschirm gedrawt wird erhöht, bis er 0.7 (oder einen anderen Wert) erreicht hat. ab 4 Uhr wird dieser wieder abgezogen. von 20 - 6 Uhr ist Nacht.
soweit zur Theorie, nun zur Praxis
Als aller erstes müssen wir ein Objekt erstellen. nennen wir es einfach "Controller" denn es kontrolliert die Werte. Als Depth stellt ihr am besten -2 ein, da dieser Controller über allen anderen Objekten gedrawt werden soll.
Definiert die folgenden Variablen im
-Event
soweit so gut, nun habt ihr alle wichtigen Variablen definiert. Nun kommt das Herzstück unserer Zeit-Engine: die Zähler (oder so). Also weiter im Step Event:
Spoiler anzeigen
Alles anzeigen
Das wars eigentlich auch schon mit dem Technischen. Jetzt kommt nurnoch ein wenig gedrawe:
Spoiler anzeigen
fertig? nein noch nicht! jetzt kommt ein weiterer wichtiger Teil, sicherlich wollt ihr ja Auch ein bisschen Dunkelheit haben
wir erstellen ein neues Objekt, name ist irrelevant, also lasst eurer Fantasie freien lauf
die Depth auf -1
Event vom neu erstellten Objekt
das Exampel:
zeit.rar
Nachtrag vom 28.11.2014:
Aufgrund einer Anfrage bezüglich dynamischer Lichtquellen
Spoiler anzeigen
habe ich ein weiteres, kleines Exampel angefertigt, dass Surfaces für dynamische Lichtquellen nutzt.
Spoiler anzeigen
Ihr setzt eine Variable, die von 0 bis 59 hochzählt, danach wechselt sie zu 0 und eine Minute wird hinzugefügt. Das kann man dann bis auf Tage, Wochen, Monate, Jahre ausbauen. Auch ein (halb) Flüssiger Übergang ist in diesem Tutorial enthalten: ab 20 Uhr wird der Alphawert für ein Rectangle, das über den Bildschirm gedrawt wird erhöht, bis er 0.7 (oder einen anderen Wert) erreicht hat. ab 4 Uhr wird dieser wieder abgezogen. von 20 - 6 Uhr ist Nacht.
soweit zur Theorie, nun zur Praxis
Als aller erstes müssen wir ein Objekt erstellen. nennen wir es einfach "Controller" denn es kontrolliert die Werte. Als Depth stellt ihr am besten -2 ein, da dieser Controller über allen anderen Objekten gedrawt werden soll.
Definiert die folgenden Variablen im

soweit so gut, nun habt ihr alle wichtigen Variablen definiert. Nun kommt das Herzstück unserer Zeit-Engine: die Zähler (oder so). Also weiter im Step Event:

GML-Quellcode
- //Wie viele Sekunden werden pro step hinzugefügt?
- seconds += 10;
- if (seconds >= 59.99){ // sobald die Sekunden mehr oder exakt 59,99 sind, wird eine Minute hinzugefügt. Sekunden werden wieder auf 0 gesetzt
- minutes += 10;
- seconds = 0;
- }
- if minutes >= 59.99{ // sobald die Minuten mehr oder exakt 59,99 sind, wird eine Stunde hinzugefügt. Minuten werden wieder auf 0 gesetzt
- hours += 1;
- minutes = 0;
- }
- if hours >= 23.99{ // sobald die Stunden mehr oder exakt 23,99 sind, wird ein Tag hinzugefügt. Stunden werden wieder auf 0 gesetzt
- days += 1;
- hours = 0;
- }
- // von 20 bis 6 Uhr ist Nacht
- if (hours == 20){
- global.night = 1;
- }
- if (hours == 6){
- global.night = 0;
- }
- if (hours >= 20 && addme=1) {
- global.nightalpha+=0.01;
- }
- if (global.nightalpha >= 0.7){
- addme = 0;
- }
- if (hours >= 4 && hours <= 6 && addme == 0){
- global.nightalpha-=0.01;
- }
- if (global.nightalpha <= 0){
- addme = 1;
- }
Das wars eigentlich auch schon mit dem Technischen. Jetzt kommt nurnoch ein wenig gedrawe:

GML-Quellcode
- draw_set_color(c_white)
- draw_set_alpha(1)
- draw_text(0,0,'seconds: ' +string(seconds))
- draw_text(0,16,'minutes: ' +string(minutes))
- draw_text(0,32,'hours: ' +string(hours))
- draw_text(0,48,'days: ' +string(days))
- draw_text(0,62,'nightalpha= ' +string(global.nightalpha))
- draw_text(320,240,'Zeit: ' +string(hours) +string(':') +string(minutes) +string(':') +string(seconds))
- draw_text(320,256,'Nacht: ' +string(global.night))
fertig? nein noch nicht! jetzt kommt ein weiterer wichtiger Teil, sicherlich wollt ihr ja Auch ein bisschen Dunkelheit haben

wir erstellen ein neues Objekt, name ist irrelevant, also lasst eurer Fantasie freien lauf


das Exampel:
zeit.rar
Nachtrag vom 28.11.2014:
Aufgrund einer Anfrage bezüglich dynamischer Lichtquellen
LifeGpDA schrieb:
Hi Domis4, und die anderen Game Maker freunde!
Dieses Day Night system habe ich in meinem Spiel eingebaut, funktioniert auch super, bis auf ein problem, die lichtquellen und die taschenlampe wird auch verdunkelt! Und es klappst irgendwie nicht dieses zu umgehen!
Das liegt vor allem daran das der schwarze Rechteck über die ganze spielwelt gezeichnet wird und die lichtquellen liegen auch darunter und werden mit verdunkelt. Hier der code für die taschenlampe:
Creat:
Step:
Die taschenlampe hat sehr gut funktioniert als ich den draw_clear_alpha(c_black, 0.89); code angewendet habe damit es dunkel wird.
Ich brauche eine lösung für das problem. Entweder in Tag und Nacht modus, anstatt global.nightalpha=0 den draw_clear_alpha(c_black, 0.89); anzuwenden. Oder die taschenlampe anders zu machen.
Kann man irgendwie den
Komplett rausnehmen und den draw_clear_alpha code für die verdunckelung verwenden?
Bitte um Rat!
habe ich ein weiteres, kleines Exampel angefertigt, dass Surfaces für dynamische Lichtquellen nutzt.
domis4 schrieb:
Hallo,
damit wirst du nicht sonderlich weit kommen. Am einfachsten geht das mit Surfaces.
Hab' mich zwar lang nicht mehr damit beschäftigt, ein kleines Example ist allerdings doch entstanden:
zeit surface.zip
Für weitere Fragen bezüglich Surfaces, empfehle ich dir hier einen neuen Thread zu erstellen.
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von domis4 ()