Skocz do zawartości

Optymalizacja spritów/muzyki


Rekomendowane odpowiedzi

No tak , ale co teraz zrobić aby odtwarzało dźwięk , bo ja zrobiłem w alarmie żeby otworzył dźwięk "map.mp3" to wyskauje error że nie istnieje ten dźwięk .

Jezus przecież ci pisałem! Odwołujesz się do zmiennej do której przypisałeś wczytany dźwięk :|

Odnośnik do komentarza
Udostępnij na innych stronach

Nie , nie optymalizuje , wszytko mnie denerwuje , jak robie zeby byl inny sprite , to zamiast niego i innych dodawanych z zewnątrz nie jest tym co ma być tylko jest pierszym spritem w całym pliku żródłowym .

 

Lepiej by było gdyby ktoś dał przykład z 3 spritami i z 1 midi i byłby spokuj .

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ważne jak duże zasoby, to nie one spowalniają grę, tylko nadmiar operacji dla komputera. Z reguły kod, lub wielka ilość obiektów, które mimo, że są puste, mają jakieś standardowe skrypty dodawane przez GM dla poprawnego ich działania. To, że my nic nie damy obiektowi, nie znaczy, że on nic nie robi.

 

Dodawanie zasobów z zewnątrz pozwoli ci tylko na szybsze ładowanie na starcie, ładowanie zasobów tylko wtedy gdy są potrzebne, a co za tym idzie - zwolnienie pamięci, raczej bardzo rzadko, przyspieszenie działania gry.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ważne jak duże zasoby, to nie one spowalniają grę, tylko nadmiar operacji dla komputera. Z reguły kod, lub wielka ilość obiektów, które mimo, że są puste, mają jakieś standardowe skrypty dodawane przez GM dla poprawnego ich działania. To, że my nic nie damy obiektowi, nie znaczy, że on nic nie robi.

 

Dodawanie zasobów z zewnątrz pozwoli ci tylko na szybsze ładowanie na starcie, ładowanie zasobów tylko wtedy gdy są potrzebne, a co za tym idzie - zwolnienie pamięci, raczej bardzo rzadko, przyspieszenie działania gry.

Ale w jego grze jest ten problem że ładuje się dłużej niż back xD

Odnośnik do komentarza
Udostępnij na innych stronach

Ale w jego grze jest ten problem że ładuje się dłużej niż back xD

A istnieje może taki loadbar który będzie pokazywał stan załadowanych plików z zewnątrz , bo jak już trochę żeczy zoptymalizowałem i włączam grę to na początku prez ok 1 minute cos sie ladowalo , a bylo widac tylko bialy obraz a potem przez 6 sekund gra się tnie a potem już działa płynnie .

Odnośnik do komentarza
Udostępnij na innych stronach

A istnieje może taki loadbar który będzie pokazywał stan załadowanych plików z zewnątrz , bo jak już trochę żeczy zoptymalizowałem i włączam grę to na początku prez ok 1 minute cos sie ladowalo , a bylo widac tylko bialy obraz a potem przez 6 sekund gra się tnie a potem już działa płynnie .

Napisz sobie. Sprawdzaj ile plików już wczytał i rysuj pasek.

Odnośnik do komentarza
Udostępnij na innych stronach

!file_exists("plik.bmp")

{

file = +0

}

else

{

file = +1

sprite_add("plik.bmp" itp.)

}

 

I ma rysować ... (w draw) później dodać mu rysowanie linii

Prędzej by było jakby był jakiś przykład , ale jak nie ma to sobie spróbuje poradzić .

 

Aha , i nie wiem czy to dobrze ale w grze jest ok. 512 fps .

Odnośnik do komentarza
Udostępnij na innych stronach

Stwórz, skrypt sprite_load:

GML
if( file_exists( argument0 ) )

{

sprite_Count += 1;

global.sprites[sprite_Count] = sprite_add( argument0, 0, 0, 0, 0, 1, 0, 0 );

 

return 1;

}

else

{

//możesz dać jakąś wiadomość np show_message( "Brak pliku: " + string( argument0 ) + "." );

return 0;

}

 

skrypt sprite_free:

GML
if( sprite_exists( global.sprites[argument0] ) )

{

sprite_delete( global.sprites[argument0] );

global.sprites[argument0] = 0;

sprite_Count -= 1;

}

 

skrypt sprite_free_all:

 

GML
for( a = 0; a <= sprite_Count; a += 1 )

{

if( sprite_exists( global.sprites[a] ) )

{

sprite_delete( global.sprites[a] );

global.sprites[a] = 0;

}

}

 

sprite_Count = -1;

 

 

I teraz, ładowanie: ( najlepiej użyj timeline )

 

GML
if( sprite_load( "sprite.gif" ) ) loading_Bar += 1;

if( sprite_load( "sprite1.gif" ) ) loading_Bar += 1;

if( sprite_load( "sprite2.gif" ) ) loading_Bar += 1;

//...

 

potem gdy chcesz usunąć jakiegoś sprita z pamięci:

GML
sprite_free( id_sprita ); //np. sprite_free( global.sprites[2] );

 

albo jak chcesz wszystkie te, które załadowałeś:

GML
sprite_free_all();

 

przykładowe rysowanie bara:

 

GML
draw_rectangle_color( 100, 100, 100 + loading_Bar * 2, 110, c_white, c_white, c_white, c_white, 0 );

 

Pokombinuj coś z tym. :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Ale kod nie zpowalnia chyba tak bardzo gry jak duże grafiki ?

A w mojej grze nie jest on zbyt skomplikowany .

 

napisz

 

GML
while (1<10)

{

sleep(1);

}

 

I sprawdź jak szybko działa gra... :P źle napisana pętla jak for while itp. może zwalniać grę i to dużo bardziej niż jakaś tam grafika. Niestety w GM brakuje wielowątkowości. Przydało by się to zwłaszcza do AI i wysyłania danych w grach online, bo cała gra wykonywała by się normalnie, a w przypadku mulenia np. AI po prostu żadziej by się aktualizowało.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...