Nie przetestowałem, gdyż nie mam GM 8.0 Pro. Jednakże mogę o przykładzie sporo się dowiedzieć patrząc jedynie w kod.
Za dużo niepotrzebnych sprite'ów. Zamiast tego, można było użyć funkcji draw_circle i draw_rectangle, które na pewno zabierają mniej miejsca niż te wielkie prostokąty i koła w zasobach.
Otoczenie lepiej robić na tilesetach z tego samego powodu. Choć nie trzeba.
Obiekt koniectrasy jest niepotrzebny. Lepiej dodać event Other -> End of Path i tam wykonać kod.
global.wyglad mógł być od razu indeksem sprite'a i wtedy kod na ustawianie sprite'a mógł wyglądać tak:
sprite_index = global.wyglad
Wystarczy jeden obiekt "pocisk", w którym dajesz parametry: obrażenia, szybkość i sprite_index. Oszczędność miejsca i, w niektórych przypadkach, obliczeń.
Ustawianie prędkości gry zmienną room_speed odpada. Co, jeśli ktoś ma za słaby komputer i fps nie będzie wchodził powyżej 30?
Obiekty "spawner" to klasa sama w sobie :D
To kilka uwag odnośnie wewnętrznej struktury przykładu. Ponieważ jednak nie mam możliwości sprawdzić, jak przykład wygląda, mogę się jedynie domyślać, że przykład działa jak należy Z tego powodu...
...dam Ci mocną tróję. Ucz się na błędach, które popełniłeś w tym przykładzie, a na pewno Twój kolejny przykład zasłuży ode mnie na czwórkę :P