Aktualizacja gier ze zmniejszonym rozmiarem pobieranego pliku

Klikipedia - klikowa encyklopedia
Skocz do: nawigacji, wyszukiwarki
Slimaczek.jpg
Pierwotna wersja tego artykułu pochodzi z 7. numeru Ślimaczka (zobacz oryginalny artykuł).


Autor.jpg
Autorem tego artykułu jest
Fanotherpg

Ostatnio dość popularne stało się mówienie o aktualizacjach własnych aplikacji, zapoczątkowane przez aplikację misieksamgame "Mapa Polskich Klikowców", następnie kurs zetcom'a z 5 numeru Ślimaczka, a potem programik RX'a.. A po co to.. no więc dzięki takiej aktualizacji z Internetu użytkownicy naszych aplikacji mogą pobrać nowe wersje naszych dzieł.

Wymagania

Dlaczego aż 3 rozszerzenia zamiast 1 Nobu HTTP? Artykuł dotyczy aktualizacji wraz ze zmniejszonym rozmiarem plików, który uzyskujemy w bardzo prosty sposób pakując nasz plik do formatu *.zip!!! Jest to wręcz banalne a zarazem genialne bo przy niektórych rodzajach plików zmniejsza się ich pojemność kilkukrotnie (!!) co wpływa na szybkość ich ściągnięcia a zarazem wygodę użytkowania. A plik Start.zip posłuży w tym przykładzie jako aplikacja do której jest aktualizacja.

Do dzieła

A więc zaczynamy naszą przygodę z aktualizacjami:

Najpierw wgrajmy na swój serwer plik o nazwie new.txt a w nim jedynie cyferkę 2 oraz plik new.zip w którym będzie nasza aktualizacja oraz w katalogu gdzie zapiszemy nasz projekt pik act.txt z jedną cyferką 1.

Stwórzmy nowy projekt w TGF'ie i w pierwszym poziomie dajmy rozszerzenia:

  • EZ-nobu.png Nobu HTTP
  • EZ-edit.png 2 edit box'y
  • EZ-string.png text z treścią Jest nowa wersja. Czy chcesz ją teraz pobrać? Wciśnij T jeśli się zgadzasz, wciśnij N jeśli nie chcesz aktualizować

Edit box'y i obiekt Nobu HTTP umieśćmy poza ekranem gry.

Zdarzenia

Stwórzmy 2 grupy: com oraz act

Kod do edytora zdarzeń
N Zdarzenia
1
+ EZ-frames.png Start of level
EZ-special.png Deactive group "com"
EZ-special.png Deactive group "act"
EZ-string.png Erase text

Na początku deaktywujemy 2 grupy, do których zaraz przejdziemy.

2
+ EZ-timer.png Timer equals 00-50
EZ-nobu.png http DownBuf = 1024x1
EZ-nobu.png URL "http://members.lycos.co.uk/rsthp/22/new.txt" => "new.txt"

Kiedy czas wynosi pół sekundy, ustal bufor ściągania na 1024x1 i podaj link do pliku oraz nazwę pod jaką ma być zapisany. Dlaczego pół sekundy a nie na początku poziomu? Czasami podczas Start of level gra się wiesza albo wyświetla pusty poziom więc jest to pewne zabezpieczenie...

3
+ EZ-special.png Only one action when event loops
+ EZ-nobu.png http: Download Complate
EZ-special.png Activate group "com"
EZ-edit.png Edit Box 1 Load file "new.txt"
EZ-edit.png Edit Box 2 Load file "act.txt"

Teraz następuje aktywacja grupy która dokona sprawdzenia czy jest nowa wersja naszego dzieła oraz wczytanie nr wersji z plików tekstowych new.txt (nowa wersja) i act.txt (aktualna wersja).

N Zdarzenia
4
+ EZ-special.png Run this event once
+ EZ-edit.png Edit Value ("Edit Box") > EZ-edit.png Edit Value ("Edit Box 2")
EZ-special.png Activate group "act"
EZ-special.png Deactivate group "com"
EZ-string.png Display paragraph 1 at (250, 150)
5
+ EZ-special.png Run this event once
+ EZ-edit.png Edit Value ("Edit Box") <= EZ-edit.png Edit Value ("Edit Box 2")
EZ-special.png Execute external program Start.exe
EZ-frames.png End game

Tutaj w grupie com mamy do czynienia z porównywaniem wartości w zdarzeniu 4. sprawdzamy czy wartość pobrana z Internetu z pliku new.txt jest większa od wartości w pliku act.txt jeśli tak to przechodzimy do następnej grupy. Za to w zdarzeniu 5. mamy do czynienia z przypadkiem gdy wartość z pliku new.txt jest równa bądź mniejsza od wartości z pliku act.txt wtedy zamykamy aktualizację i uruchamiamy prawidłową aplikację.


N Zdarzenia
6
+ EZ-keyboard.png Uppon pressing T
EZ-frames.png Next level
7
+ EZ-keyboard.png Uppon pressing N
EZ-special.png Execute external program Start.exe
EZ-frames.png End game

Teraz tworzymy drugi poziom a w nim dajemy rozszerzenia Nobu HTTP, Unzip Object oraz File object a także licznik.

Przejdźmy do kodu:

Zdarzenia do etapu z aktualizacją
N Zdarzenia
1
+ EZ-timer.png Timer equals 00-50
EZ-nobu.png http DownBuf = 1024x1
EZ-nobu.png URL "http://members.lycos.co.uk/rsthp/kursy/22/new.zip => "new.zip"

Kiedy czas wynosi pół sekundy ustal bufor ściągania na 1024x1 i podaj link do pliku oraz nazwę pod jaką ma być zapisany.

2
+ EZ-special.png Only one action when event loops
+ EZ-nobu.png Download Complete
EZ-unzip.png Set zip archive to "new.zip"
EZ-unzip.png Set destination directory to ""
EZ-unzip.png Unzip "*.*"

Rozpakowywujemy pliki do katalogu w którym znajduje się aktualizacja (powinna ona się znajdować w katalogu z naszą pracą)

3
+ EZ-special.png Always
EZ-counter.png Set Counter to downper ("NOBU http") / 10

Licznik ile procent zostało pobrane.

4
+ EZ-unzip.png Unzip it, OK?
EZ-special.png Execute external program Start.exe
EZ-frames.png End Game
EZ-file.png Delete the file "act.txt"
EZ-file.png Rename the "new.txt" as "act.txt"
EZ-file.png Delete the file "new.zip"

Jeśli wszystko poszło jak trzeba zamknij aktualizację, uruchom właściwy program, usuń stary numer wersji, zmień nowy numer na aktualny (nazwa pliku txt) oraz usuń ściagnięty plik zip.

Podsumowanie

Jak widać po lekkiej modyfikacji (a dokładniej dodaniu 1[!!!] zdarzenia) możemy zaoszczędzić nieco miejsca i czasu... Jest to moja wersja aktualizacji - wielkie dzięki misieksamgame za pomoc przy połapaniu się w Nobu HTTP oraz Zip/Unzip Objects.