Skocz do zawartości

Proste zabezpieczenie ładowanych grafik


TO_mek

Rekomendowane odpowiedzi

Witam!

Szukam prostego rozwiązania zabezpieczenia plików graficznych ładowanych dynamicznie w trakcie gry. Szukałem też bardziej zaawansowanych ale wszelkie przykłady dotyczą GM6.1 a od tego czasu sporo się pozmieniało i przykłady w GM8 nie działają.

Najprostsze co przyszło mi do głowy to zmiana rozszerzenia plików *.jpg na jakieś *.dat albo *.res albo cokolwiek innego ale niestety GM nie rozpoznaje ładowanych plików po strukturze pliku tylko standardowo po rozszerzeniu (czyli jest tak samo prymitywny jak sam windows, inne systemy m.in. Amiga OS rozpoznaje pliki po strukturze ale to już odrębny temat). Czyli taki kod:

GML
tlo:=working_directory+"\room\B000.jpg"

background_replace(tlogm, tlo, 0, 1);

 

po zmianie nazwy pliku B000.jpg na B000.dat i kodu na taki:

 

GML
tlo:=working_directory+"\room\B000.dat"

background_replace(tlogm, tlo, 0, 1);

 

nie działa.

Macie jakiś prosty sposób na przynajmniej tak słabe zabezpieczenie ładowanej grafiki? A może coś bardziej złożonego ale nie powodującego opóźnień ładowania.

Odnośnik do komentarza
Udostępnij na innych stronach

 

To znam ale zmyliły mnie komentarze pod artykułem. W międzyczasie przeczytałem go jeszcze raz i akurat to co potrzebuję czyli zmiana nagłówka plików graficznych jest niezależna od wersji GMa bo w ósemce jest tak samo. Właśnie kończę robienie skryptu pasującego do moich potrzeb który koduje i dekoduje pliki "w locie". Ciekawe jaki to będzie miało wpływ na prędkość działania i wczytywania grafiki na starych kompach i netbookach.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli potrzebujesz silniejszego algorytmu zahashuj bitmapę manipulując strukturą (file_bin_*) metodą xor ze zmiennym kluczem. Tylko szybkość nie będzie zbyt imponująca. Może zarzucę przykładem.

Jeśli będziesz miał chwilkę to zarzuć :)

 

Zrobiłem kodowanie i dekodowanie podobnie jak w artykule Ranma_mana ale mam jedno pytanie. Czy jest sposób na to aby nie tworzyć odkodowanego pliku tymczasowego z prawidłowym rozszerzeniem gdzieś na dysku? Czyli inaczej czy można najpierw odczytać "zakodowany" plik do pamięci i operacje zmiany zawartości pierwszych kilku bajtów zrobić bezpośrednio w pamięci a z niej "wgrać" taki odkodowany plik do zasobów (jako background)?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Trochę to śmieszne, ale możesz 39dllem czytać grafiki ze zmienionym nagłówkiem - naprawdę świetnie śmiga, sprawdzone (fakt, że online'owa biblioteka jest do innych rzeczy, ale przynajmniej jest wygodna). Chyba, że GMowe file_bin jest wystarczająco szybkie (bez bicia się przyznam, nie używałem).

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