Skocz do zawartości

Jak zrobić prosty auto-update v2.0


Rekomendowane odpowiedzi

Troche się ogarnąłem i gm też. Więc może tym razem mój auto-update bardziej wam się spodoba.

Sądzę, że v2 jest lepsza i prostsza.

 

Co jest potrzebne:

-Game Maker 8.0 lub nowszy,

-jakąś bibliotekę do pobierania plików np. 39dll.dll

 

Auto-update dla pojedynczego pliku(np. jak twoja gra posiada jeden plik bez jakiś bibliotek, plików .dat itp.)

1.Tworzymy osobny plik game makera i wchodzimy do niego(można go nazwać autoupdate)

2.Dodajemy skrypty od danej biblioteki 39dll.dll lub innej.

3.Tworzymy dwa pliki .ini.

Jeden nazywamy np. config.ini (w nim będzie wersja naszej gry)

Do niego wklejamy:

[Dane]
      Wersja=2,3 - wersja twojej gry. (możesz dać jaką chcesz)

 

Drugi nazywamy update.ini (w nim będą potrzebne dane do aktualizacji)

i do niego wklejamy:

[Update]
       ver=2,4 - nowa wersja gry
      url=http://pho.ugu.pl/gra.exe - link do pliku do pobrania najnowszej wersji.

Zapisujemy ten plik i wrzucamy na jakąś strone( można na gmclan.org lub na jakimś własnym hostingu, ja akurat użyje swojej strony.)

 

 

 

4.Tworzymy object. Do create dodajemy klocek z wpisywaniem kodu i otwieramy go. Do niego wpisujemy.

 

create:

GML
dllinit( "39dll.dll", 1, 1 );

update=download_file("http://uploduj.ugu.pl/update.ini","update.ini"); //pobiera nasz plik update.ini</span>

 

Step:

 

GML
download_file_step( update );

download_file_step( update2 );

 

if (file_exists("update.ini")) //sprawdza czy plik update.ini istnieje.

{

ini_open( 'config.ini' ) //otwiera plik .ini.

myver = ini_read_real('Dane','Wersja',myver); //sprawdza twoją wersje gry.

ini_close() //zamyka plik .ini.

ini_open( 'update.ini' ) //otwiera nasz plik .ini.

ver = ini_read_real( 'Update', 'ver', ver ); //sprawdza jaka jest najnowsza wersja.

url = ini_read_string( 'Update', 'url', url ); //pobiera link najnowszej wersji.

ini_close() //zamyka plik update.ini

if ver>myver //porównuje naszą wersje z najnowszą.

update2=download_file(url,"gra.exe"); /*jeżeli nasza wersja starsza pobiera najnowszą.

Uwaga plik gra.exe można nazwać jak się chce lecz pamiętaj jeżeli chcesz aby aktualizacja była poprawna

i nie było starszej wersji to nazwe gry dawaj zawsze taką samą. Aby nowa wersja zastąpiła starą wersje.*/

 

 

ini_open( 'config.ini' ) //otwiera nasz plik config.ini

myver = ini_write_real( 'Dane','Wersja', ver ); //zmienia wersje gry na najnowszą.

ini_close() //zamyka plik config.ini

}

 

Game End;

GML
file_delete("update.ini"); //usuwa plik update.ini</span></span></span></span></span></span>

 

5. W Global Game Settings (w gm 8.0 nie wiem czy w nowszych też trzeba) trzeba zaznaczyć "Treat unintialized varables as value 0" bo mi bez tego nie działa.

 

Oczywiście że można dodać jakieś paski stanu pobierania czy coś.

Jak robić aktualizacje?

Kiedy skończysz tworzyć swoją gre zapisz do pliku .exe.

Plik wrzuć na serwer (pamiętaj nazwa tego pliku musi mieć taką samą nazwe jak poprzednia aby gra ją wykryła pobrała i zastąpiła.)

Potem przechodzisz do naszego pliku update.ini

w wersji zmieniasz na wyższą np. z 2,4 na 2,5

 

Przykład: https://gmclan.org/up7589_4_Poradnik_1_01.html v1.01 - mała poprawka

 

 

Mam nadzieje, że o niczym nie zapomniałem. Męczyłem się z tym Httpdownloader niestety nic nie wyszło to potem musiałem ogarnąć 39dll.dll troche mi to zajęło.

O błędach proszę mi zgłaszać.

 

 

Dla wielu plików: Jeszcze pracuje jak to ogarnąć. Może ktoś na forum mi pomoże? (bo wiem jak to zrobić ale jest jeden problem)

Odnośnik do komentarza
Udostępnij na innych stronach

Nie poddajesz się - tak trzymaj.

 

Co do pobierania kilku plików to:

1) pakować aktualizację do zipa, pobrać i rozpakować. Bodajże ediepl napisał takiego dll'a (https://forum.gmclan.org/index.php?showtopic=26819)

2) listować pliki na serwerze przez php i wysłać tę listę do klienta który po kolei wszystko pobiera.

 

BTW. Skoro poprzedni auto-updater się nie udał to wywal go z sygny :P

 

@EDIT Jeśli już miałbym się uczepić:

1) liczby po przecinku nie poprzedza się czasem kropką a nie przecinkiem?

2) z tego co wiem w funkcjach ini_read_* trzeci argument to jest domyślna wartość (tzn. zwraca to jeśli nie ma takiego klucza w ini).

Odnośnik do komentarza
Udostępnij na innych stronach

Threef: jutro może coś takiego zrobie przy okazji ulepsze wygląd by to jakoś wyglądało.

Utermiko: dzięki. Coś wykompinuje mam nadzieje, że ediepl się nie obrazi, że użyje jego .dll.

Nie usune ponieważ potem ludzie będą się pytać: ,,a gdzie pierwsza wersja?"

 

@EDIT:

Utermiko:

1.To jest raczej obojentne.

2.Nie wiem co ci powiedzieć ;D

Odnośnik do komentarza
Udostępnij na innych stronach

Ja na szczęście poradziłem sobie z tym sam, i mam swoje skrypty wyexportowane do GML jako mini silnik update. Zrobiłem to trochę zaawansowanie, ale plus leci za opisanie w miarę szczegółowo co i jak. Myślę że dla początkujących to będzie dobry wzór i jak najbardziej 4

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde, robiłem teraz troche ładniejszą wersje aby to jakoś wyglądało niestety coś jest nie teges z kodem.

Zobaczcie: https://gmclan.org/up7589_4_Poradnik_v2_Problem.html

Chodzi o to, że plik update.ini czyli update zaczyna pobierać się dopiero wtedy kiedy zaczyna wchodzić kod update2 czyli gra.exe.

Przez to gra nie chce się zaktualizować.

Odnośnik do komentarza
Udostępnij na innych stronach

1. Nie wiem jaką komendą można sprawdzić czy dany plik istnieje. file_find_first i co dalej?

2.Chodzi o to, że plik update.ini (update) nie zacznie się pobierać zanim nie włączy się alarm[2] troche to dziwne i jakoś tego nie czeje. Przez to, że plik update.ini zaczyna pobierać się dopiero wtedy kiedy już porównuje najnowsżą wersje z naszą nie porówna tego ponieważ plik update.ini nie pobrał się jeszcze i też dlatego nie ma możliwość pobrania pliku gra.exe ze zwględu na to, że nie ma danych. (chyba zrozumiale napisałem :D)

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ę...