Autor Wątek: Kodowanie plików .irr  (Przeczytany 3537 razy)

Offline Kamilus

  • Użytkownik

# Styczeń 23, 2014, 12:24:44
Witam, od dłuższego czasu pragnę wykorzystać Irrlichta do swojej pierwszej gry 3D, ale mam pewien problem. Otóż, Irrlicht ma możliwość wczytywania plików .irr zrobionych np w irrEdit, niby fajnie, ale nie chcę, aby gracz mógł go edytować, czy jest jakiś sposób na zakodowanie go?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xirdus

  • Redaktor

# Styczeń 23, 2014, 16:24:01
Zaszyfruj plik dowolnym algorytmem (choćby głupim xorem), zrób klasę implementującą interfejs irr::io::IReadFile, która będzie wczytywała plik i na bieżąco dekodowała, i przekaż obiekt tej klasy zamiast nazwy pliku do funkcji loadScene().

Offline Kamilus

  • Użytkownik

# Styczeń 23, 2014, 17:35:53
Dzięki za pomoc, napisałem Sobie mały konsolowy programik kodujący

Offline Xender

  • Użytkownik

  • +3
# Styczeń 23, 2014, 18:08:55
ale nie chcę, aby gracz mógł go edytować
Czemu?

I tak bezpiecznej kryptograficznie możliwości nie ma, więc zostaje zabawa w obfuskację, czyli psucie zabawy komuś, kto lubi zaglądać w pliki gry.

Offline Kamilus

  • Użytkownik

# Styczeń 25, 2014, 12:08:02
Dajmy na to, że do gry powstanie MP, gracze będą edytować Sobie pliki map, w rezultacie rozgrywka będzie bezsensu

Offline flexi

  • Użytkownik

  • +1
# Styczeń 25, 2014, 13:04:14
Nie znam sie na Multiplayerach, ale client mogl by wyslac md5/checksum danych mapy do serwera i ten serwer sprawdza czy to ten sam plik jesli nie to wywala brak dostepu czy cos w tym stylu.

Offline Xender

  • Użytkownik

# Styczeń 25, 2014, 13:53:48
Dajmy na to, że do gry powstanie MP, gracze będą edytować Sobie pliki map, w rezultacie rozgrywka będzie bezsensu
Jeśli chodzi o to, że gracz będzie np. usuwał sobie ściany z mapy, żeby widzieć innych graczy, to wystarczy obliczać widoczność na serwerze - jeśli gracz X się poruszył, to nie wysyłać tego ruchu do wsyzstkich pozostałych, tylko do tych, w których polu widzenia jest X.

Ale równie dobrze może być to gra niewarta świeczki.

Z drugiej strony, jeśli gra jest multi, to czemu nie wypuścić edytora map, żeby gracze mogli robić własne?

Offline aphity

  • Użytkownik

# Styczeń 26, 2014, 01:59:01
+1 pan wyżej. W przypadku MP, serwer musi liczyć wszystko sam i być ostateczną instancją. Gracz może zrobić z klientem dosłownie wszystko, więc żadna ochrona po jego stronie z zasady nie będzie w pełni skuteczna. Jeśli gracz usunie sobie ścianę by widzieć czy ktoś za nią nie stoi, to rolą serwera jest sprawdzanie mapy po swojej stronie i nie informowanie klienta o innych postaciach niż te, które wg. niego powinien widzieć. Analogicznie, jeśli gracz postanowi wejść w tę dziurę (gdzie oryginalnie stała ściana), serwer ma obowiązek wykryć tę próbę i odrzucić ten ruch.

Obliczenia po stronie klienta powinny służyć tylko płynności rozgrywki, jednak zawsze nadrzędne jest to co mówi serwer.

Nie znam sie na Multiplayerach, ale client mogl by wyslac md5/checksum danych mapy do serwera i ten serwer sprawdza czy to ten sam plik jesli nie to wywala brak dostepu czy cos w tym stylu.
To nic nie da, wystarczy proste proxy które podmieni checksumę na oryginalną w pakiecie wychodzącym z maszyny gracza.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +2
# Styczeń 26, 2014, 02:08:18
Cytuj
Otóż, Irrlicht ma możliwość wczytywania plików .irr zrobionych np w irrEdit, niby fajnie, ale nie chcę, aby gracz mógł go edytować
I w tym momencie jest to największy problem? :)

Myślę, że najpierw należało by zadbać właśnie o to, żeby graczom się chciało to edytować. ;)