Skocz do zawartości
TO_mek

[HTML5] working_directory

Rekomendowane odpowiedzi

Witam!

Czy w HTML5 working_directory działa? Sama ścieżka prowadzi do tej HTML5 folder name (domyslnie html5game) ale przy próbie odczytu zawarości katalogu przeglądarki przechodzą w stan zamrożenia ;)

GML
var _newfile;

_newfile = file_find_first( working_directory + "\sciezka\*.*", 0 );

do

{

/*

show_message(_newfile);

*/

_newfile = file_find_next();

} until ( _newfile == "" )

 

Potrzebuje załadować z katalogu po stronie serwera wszystkie pliki obrazków, które będą co jakiś czas dokładane na serwer.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Też miałem ten problem. O wiele mniej jest problemów gdy przestanie się używać working_directory.

GML
file_find_first("sciezka\*.*", 0 );

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W HTML5 nie ma systemu plików na komputerze tak btw.. Przeglądarka (bo to ona sandboxuje grę) daje jedynie dostęp do tzw. Local Storage gdzie można zapisywać wartości klucz=wartość podobnie jak z cookies, ale w większej ilości. GM:S zapisiuje w ten sposób pliki INI (nazwapliku=hashowana_wartość) a wszystkie inne sposoby odczytu niestety mogą nie działać (wynika to ze specyfikacji W3C, HTML5 i JavaScript).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
W HTML5 nie ma systemu plików na komputerze tak btw. Przeglądarka (bo to ona sandboxuje grę) daje jedynie dostęp do tzw. Local Storage gdzie można zapisywać wartości klucz=wartość podobnie jak z cookies, ale w większej ilości. GM:S zapisiuje w ten sposób pliki INI (nazwapliku=hashowana_wartość) a wszystkie inne sposoby odczytu niestety mogą nie działać (wynika to ze specyfikacji W3C, HTML5 i JavaScript).

 

Ale mnie interesuje odczyt po stronie serwera. Chcę aby ładować pliki np. sprajtów czy backgroundów dynamicznie z katalogu na serwerze na którym będzie gra. Do tego katalogu będą dodawane aktualizacje obrazków po ftp i chciałbym aby gra odczytywała najpierw nazwy tych plików z danego katalogu na serwerze a następnie je kolejno ładowała i wyświetlała.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

sprite_add() i odpowiedni event HTTP. Jest w dokumentacji opisane :) Jeśli chcesz odczyt nazw plików, to również zapytanie HTTP (GET/POST) do serwera niestety i zwracanie danych np. JSONem.

 

EDIT: nie korzystanie z texture pages (atlasów) jest bardzo nieoptymalne i odradzam korzystania z niego, zwłaszcza bez włączonego WebGL.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
sprite_add() i odpowiedni event HTTP. Jest w dokumentacji opisane :) Jeśli chcesz odczyt nazw plików, to również zapytanie HTTP (GET/POST) do serwera niestety i zwracanie danych np. JSONem.

 

EDIT: nie korzystanie z texture pages (atlasów) jest bardzo nieoptymalne i odradzam korzystania z niego, zwłaszcza bez włączonego WebGL.

 

Co do texture pages to niestety gra wymagałaby za każdym razem rekompilacji. Co do ładowania grafik i plików to znalazłem coś takiego:

 

Create

GML
// Load the avatar name (fails on IE)

avatar_name = "<Unknown>";

http_get("http://89.25.186.53/dundee/avatar.txt");

 

// Load the avatar image (fails everywhere)

avatar_image = back_avatar;

avatar_new = background_add("http://89.25.186.53/dundee/avatar.png", false, false);

 

Image Loaded

GML
if ( ds_map_find_value(async_load,"status") < 0)

{

show_message("Error in loading avatar: " + string(ds_map_find_value(async_load,"status")));

exit;

}

avatar_image = avatar_new;

 

HTTP

GML
if ( ds_map_find_value(async_load,"http_status") != 200)

{

show_message("Error in loading name: " + string(ds_map_find_value(async_load,"http_status")));

exit;

}

 

avatar_name = ds_map_find_value(async_load,"result");

 

Jeśli chodzi o grafikę to działa ale co do zaczytywania zawartości z pliku tekstowego to już nie bangla bo przykład jest nieprawidłowy. Rozumiem, że aby odczytać/zapisywać dane z/do pliku musiałbym to zrobić za pomocą parametrów przekazywanych metodami get/post i zatrudnić do tego jeszcze php który mi to wystawi w postaci parametrów czy może GM ma coś dodatkowo wbudowanego?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Bez PHP też dasz radę :) Tu masz przykład jak czytać JSONa. https://gmclan.org/index.php?plik=227 - ale możesz sobie też czytać TXT :)

 

Moment bo kombinuję i w końcu do mnie dotarło, że sam serwer musi generować dane JSON, tak, a zwykłe dodanie do adresu url nazwy pliku txt zawierające dane w formacie JSON (albo innym) nie zadziała? Czyli zawartość pliku muszę wysłać po stronie serwera i odebrać jako parametr (ze znakiem ?) czy jeszcze inaczej?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Możesz jak chcesz :) Możesz wrzucić po prostu plik txt z zawartością JSON i tez spoko.

Możesz nawet zwykły TXT tylko musisz go po stronie GM potem sobie jakoś odczytać, ale w tym evencie dostajesz odpowiedź jako stringa. Proponuję JSON, bo potem za pomocą json_decode() tego stringa w ds_mapę Ci zamieni, a dzięki garbage collectorowi ds_map dodanemu jakiś czas temu, wszystkie podmapy automatycznie są oznaczane przez ds_list_mark_as_xxx i usuwane jak kasujesz nadrzędną.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Możesz jak chcesz :) Możesz wrzucić po prostu plik txt z zawartością JSON i tez spoko.

Możesz nawet zwykły TXT tylko musisz go po stronie GM potem sobie jakoś odczytać, ale w tym evencie dostajesz odpowiedź jako stringa. Proponuję JSON, bo potem za pomocą json_decode() tego stringa w ds_mapę Ci zamieni, a dzięki garbage collectorowi ds_map dodanemu jakiś czas temu, wszystkie podmapy automatycznie są oznaczane przez ds_list_mark_as_xxx i usuwane jak kasujesz nadrzędną.

 

 

Kurcze cały czas miałem ok ale okazuje się, że uruchamiając lokalnie http://127.0.0.1:51268/index.html w statusie było 0 i nie pojawiały się dane natomiast po wrzuceniu na publiczny IP wszystko ładuje się prawidłowo.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×