Hallo Zusammen
Aktuell arbeite ich an meinem ersten kleinen Spiel im Game Maker. Faireshalber muss ich erwähnen, das der meiste Code aus diversen Examples und Tutorials "zusammengeschnitten" ist, da ich noch nicht wirklich Ahnung von GML habe. Learning by doing...hoffe ich zumindest
Nun zu meinem Problem:
Mein Spiel soll ein sogenannter "Endless Runner" werden. Ich habe also einen Room, in dem der Spieler nur springen kann (y-achse), aber sich entlang der x-achse nicht bewegt. was sich bewegt, sind in zufälliger Reihenfolge enstehende Blöcke(32x32), die bei room_width+64 enstehen, sich mit movex=-4 nach links bewegen und bei x<-32 zerstört werden. Das ganze funktionierte bei einem Room Speed von 60 ganz gut. Ganz seltene leichte FPS Einstürze, was ich aber darauf zurückführe, das ich auf einem Netbook programmiere
Als nächstes wollte ich ein Script einbauen, welches prüft, wo, welcher Block mit anderen Blöcken kontakt hat, und dementsprechend den Sprite des Objektes auf die Frame setzen, die einen grafischen übergang zwischen den Blöcken erzeugt. Dadurch würde es dann stimmiger aussehen. Ich weiß nicht, wie ich das besser erklären kann, Aber wenn ihr das Script seht, weiß der eine oder andere bestimmt, was genau es macht.
Das funktioniert alles soweit ganz gut
ABER
seit ich dieses Script benutze, fällt die Framerate wärend des spielens nach einer gewissen Zeit kontinuierlich.
60...55...52.....48.....44.....34...usw.
Ich könnte ja verstehen, das mein Netbook für das script nicht stark genug ist. Aber das müsste doch die Framerate sofort im Keller sein oder nicht? und nicht erst nach ner gewissen Zeit.
Hoffentlich kann mir bei diesem Problem jemand helfen
Hier mal das Script:
Alles anzeigen
Das Object obj_wall:
Create:
Step:
Outside Room:
Das Controller Object, welches die Blöcke spawned:
Create:
Alles anzeigen
Alarm0:
Alles anzeigen
Wie gesagt, habe ich noch nicht so viel Ahnung von GML, habe aber versucht, das Problem selber zu lösen, da ich den Code weitesgehend verstehe. Aber da obj_wall ja nach dem durchlaufen des Rooms bei x-32 zerstört wird, kann es doch nicht zu einer überlastung der Objekte kommen oder?
Ich verstehe es nicht...
Ich hoffe jemand kann mir bei diesem Problem helfen und bitte daher um eure Hilfe
Danke im vorraus
Aktuell arbeite ich an meinem ersten kleinen Spiel im Game Maker. Faireshalber muss ich erwähnen, das der meiste Code aus diversen Examples und Tutorials "zusammengeschnitten" ist, da ich noch nicht wirklich Ahnung von GML habe. Learning by doing...hoffe ich zumindest
Nun zu meinem Problem:
Mein Spiel soll ein sogenannter "Endless Runner" werden. Ich habe also einen Room, in dem der Spieler nur springen kann (y-achse), aber sich entlang der x-achse nicht bewegt. was sich bewegt, sind in zufälliger Reihenfolge enstehende Blöcke(32x32), die bei room_width+64 enstehen, sich mit movex=-4 nach links bewegen und bei x<-32 zerstört werden. Das ganze funktionierte bei einem Room Speed von 60 ganz gut. Ganz seltene leichte FPS Einstürze, was ich aber darauf zurückführe, das ich auf einem Netbook programmiere
Als nächstes wollte ich ein Script einbauen, welches prüft, wo, welcher Block mit anderen Blöcken kontakt hat, und dementsprechend den Sprite des Objektes auf die Frame setzen, die einen grafischen übergang zwischen den Blöcken erzeugt. Dadurch würde es dann stimmiger aussehen. Ich weiß nicht, wie ich das besser erklären kann, Aber wenn ihr das Script seht, weiß der eine oder andere bestimmt, was genau es macht.
Das funktioniert alles soweit ganz gut
ABER
seit ich dieses Script benutze, fällt die Framerate wärend des spielens nach einer gewissen Zeit kontinuierlich.
60...55...52.....48.....44.....34...usw.
Ich könnte ja verstehen, das mein Netbook für das script nicht stark genug ist. Aber das müsste doch die Framerate sofort im Keller sein oder nicht? und nicht erst nach ner gewissen Zeit.
Hoffentlich kann mir bei diesem Problem jemand helfen
Hier mal das Script:
GML-Quellcode
- dist=argument0
- left=place_meeting(x-dist,y,object_index)
- right=place_meeting(x+dist,y,object_index)
- up=place_meeting(x,y-dist,object_index)
- down=place_meeting(x,y+dist,object_index)
- image_single=image_number;
- if left{image_single=15}
- if right{image_single=13}
- if up{image_single=12}
- if down{image_single=14}
- if up and down{image_single=2}
- if left and right{image_single=3}
- if left and up {image_single=4}
- if left and down {image_single=7}
- if left and up and down{image_single=8}
- if right and up{image_single=5}
- if right and down{image_single=6}
- if right and up and down{image_single=10}
- if right and left and up{image_single=9}
- if right and left and down{image_single=11}
- if left and right and up and down {image_single=1}
- if !left and !right and !up and !down {image_single=0}
Das Object obj_wall:
Create:
Step:
Outside Room:
Das Controller Object, welches die Blöcke spawned:
Create:
GML-Quellcode
Alarm0:
GML-Quellcode
Wie gesagt, habe ich noch nicht so viel Ahnung von GML, habe aber versucht, das Problem selber zu lösen, da ich den Code weitesgehend verstehe. Aber da obj_wall ja nach dem durchlaufen des Rooms bei x-32 zerstört wird, kann es doch nicht zu einer überlastung der Objekte kommen oder?
Ich verstehe es nicht...
Ich hoffe jemand kann mir bei diesem Problem helfen und bitte daher um eure Hilfe
Danke im vorraus
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von GeneticZ ()