Autor Wątek: Virtual File System  (Przeczytany 6176 razy)

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 01:12:57
Dlaczego odradzacie jedno archiwum? Nie rozumiem. Argumenty prosze ;)

Offline Mr. Spam

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

Offline spax

  • Użytkownik

# Kwiecień 14, 2007, 01:15:52
Wydajność?

;D

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 15:14:27
Wydajność?

;D
To od kiedy tylko w grach MMO liczy sie wydajnosc? Jakies nowe teorie widac powstaly odkad zaczelam zajmoawc sie gamedevem

Offline dRaiser

  • Użytkownik
    • dRaiser's helloworld

# Kwiecień 14, 2007, 15:40:17
Wydajność?

;D
To od kiedy tylko w grach MMO liczy sie wydajnosc? Jakies nowe teorie widac powstaly odkad zaczelam zajmoawc sie gamedevem

W każdej grze ważna jest wydajność/optymalizacja :). W końcu MMO to nie tylko kontakty klient-serwer, ale "otoczka" grym czyli engine itd klienta, który musi być bądź co bądź sprawny i szybki. A takie jedno wielkie archiwum to dla mnie osobiście jeden wielki, zaśmiecony burdel ;>.

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 15:43:55
A takie jedno wielkie archiwum to dla mnie osobiście jeden wielki, zaśmiecony burdel ;>.
Jak masz problem to napisz do Carmacka, ze jego Doom 3 to jeden wielki zasmiecony burdel.

Offline dRaiser

  • Użytkownik
    • dRaiser's helloworld

# Kwiecień 14, 2007, 16:21:00
Jak masz problem to napisz do Carmacka, ze jego Doom 3 to jeden wielki zasmiecony burdel.

A w czym DOOM 3 jest lepszy od wszystkich innych gier, że nie wolno go oceniać pod kontekstem przejrzystości? Takie duże archiwum, jak to było mówione, utrudnia i spowalnia korzystanie z danych. Dlatego sensownie jest po prostu dzielić dane na mniejsze zbiory.

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Kwiecień 14, 2007, 16:30:50
A takie jedno wielkie archiwum to dla mnie osobiście jeden wielki, zaśmiecony burdel ;>.
Jak masz problem to napisz do Carmacka, ze jego Doom 3 to jeden wielki zasmiecony burdel.
dRaiser, tu należałoby dodać zastrzeżenie, że poza etapem projektowania w tym pliku coś modyfikujemy. Tylko dzięki uniemożliwieniu modyfikacji Doom 3 nie jest zaśmieconym burdelem :) . W tym przypadku jeden plik zapewne nawet przyspiesza działanie - dam sobie palec uciąć, że wewnątrz dane są posortowane w jak najwydajniejszy sposób.

Jeśli już koniecznie chcesz zabezpieczenie danych w MMO, może pomyśl o najprostszym - czyli sprawdzaniu sumy kontrolnej otwieranego pliku z tą na serwerze oraz kilku archiwach obsługiwanych przez VFS? Suma kontrolna jest jeszcze lepszym niż szyfrowanie zabezpieczeniem poprawności pliku - w końcu szyfr łatwo złamać, a uzyskanie tej samej sumy i zachowanie poprawności pliku graniczy z niemożliwością nawet przy stosowaniu tak prostych algorytmów jak MD5. Poza tym więcej plików oznacza łatwiejszą aktualizację - wtedy np. pliki świata gry aktualizujesz podmieniając plik z informacjami o świecie, bez żadnego kombinowania z odczytem/zapisem. Ponadto dobry VFS pozwalać powinien na używanie zarówno luźnych plików, jak i archiwum (przykład: VFS w Infinity Engine, gdzie pierwszeństwo w użyciu mają pliki z katalogu override, a dopiero potem archiwa gry) - do zagwarantowania poprawności wystarczy suma kontrolna.
Odnoszę dziwne wrażenie że na potrzeby gry chcesz duplikować któryś z istniejących dyskowych systemów plików + dodać szyfrowanie. Jeśli możesz ograniczyć się do windows, może prostszym rozwiązaniem będzie katalog szyfrowany NTFS? :)

Offline novo

  • Użytkownik
    • my devblog

# Kwiecień 14, 2007, 17:08:29
Mozesz tez to obejsc :). Tworzysz sobie VFS, ktory w trakcie gry do archiwow ma dostep read-only. Wszystkie pliki z serwera sciagasz w dodatkowych archiwach(ew trzymasz luzno) i przy zamykaniu gry(albo otwieraniu) po prostu laczysz sobie archiwa w jedno(lub wstawiasz te luzne pliki). Co prawda wydluza to start/zamykanie gry, ale wtedy zawsze bedzie to jedno archiwum(no i nie musisz sie tak strasznie martwic o wydajnosc bo nie musisz modyfikowac archiwum w real-time).

Pozatym pamietaj, ze najczesciej najwiecej miejsca zajmuja takie rzeczy jak tekstury, modele itd. Sama czesc logiczna czyli skrypty configi itp to najczesciej pliki textowe i mysle ze nie bedzie ich wiecej jak pare mega. Mozesz sobie np stworzyc 2 archiwa, jedno read-only ktore zawiera wszystkie dane ktorych zmieniac nie bedziesz(czyli wlasnie te wielkie pliki) + oddzielne archiwum z konfigami i skryptami ktore mozesz modyfikowac w czasie dzialania. Dzieki temu mozesz modyfikowac gameplay w czasie gry(dociagnac z serwa nowe skrypty do AI, nowe questy). Jeszcze lepiej byloby gdyby moglo byc kilka archiwow statycznych, wtedy np nowa lokacje mozesz przeslac jako 2 paczki: modele + logika. W Q3 przy sciaganiu nowych map, byly one wlasnie pakowane w oddzielnych plikach pk3. Jezeli bardzo chcesz, mozesz pozniej to laczyc z tym co juz jest, ale nie wiem czy jest to niezbedne.

To tylko takie moje przemyslenia. Sam VFS'a nie pisalem, bo nie jest mi na razie potrzebny :)

Pozdr.
novo.

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 17:21:29
Nadal nikt nie musnął nawet o odp. na pytanie nr. 3;

Offline Charibo

  • Redaktor

# Kwiecień 14, 2007, 17:31:38
zrob jak uwazasz - a jeszcze lepiej przepusc sobie obie wersje przez profiler

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 18:05:10
Bo pytanie jest tak oczywiste, że aż głupio odpowiadać ...
Chyba to forum wlasnie po to jest zeby pytac i odpowiadac wiec jakbys mogla/mogl sie nie wymadrzac tylko odpowiadac to by bylo milo.

Offline dRaiser

  • Użytkownik
    • dRaiser's helloworld

# Kwiecień 14, 2007, 19:20:31
Bo pytanie jest tak oczywiste, że aż głupio odpowiadać ...
Chyba to forum wlasnie po to jest zeby pytac i odpowiadac wiec jakbys mogla/mogl sie nie wymadrzac tylko odpowiadac to by bylo milo.

Mylisz się. To forum nie służy do zadawania pytań "dlaczego to mi nie działa/jak to zrobić", ale do ciekawych dyskusji na ciekawe tematy, ewentualnie do roztrząsania jakichś rzeczy, o których ciężko znaleźć informacje. Ty natomiast sprawiasz wrażenie, że za wszelką cenę chcesz udowodnić, że masz rację atakując użytkowników i powtarzając w kółko to samo.

3) robic obsluge VFSa w oddzielnym watku niz gre czy lepiej w tym samym?

Co do tego pytania - obsługa VFS w tym samym wątku co gra chyba by miała znaczenie dla wydajności? A jeśli chcesz to zrobić jednowątkowo, to najlepiej wszystkie potrzebne dane rozładować np podczas wczytywania programu/mapy.

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 19:26:44
Co do tego pytania - obsługa VFS w tym samym wątku co gra chyba by miała znaczenie dla wydajności?
Dlaczego tak uwazasz?

Offline dRaiser

  • Użytkownik
    • dRaiser's helloworld

# Kwiecień 14, 2007, 19:35:40
Co do tego pytania - obsługa VFS w tym samym wątku co gra chyba by miała znaczenie dla wydajności?
Dlaczego tak uwazasz?

Każde otwarcie pliku/grzebanie w nim to operacja wymagająca odwoływań do strumienia, a każdy taki strumień potrzebuje części pamięci dla siebie - co sprawia, że ładowanie co jeden obieg jakichś plików nie jest najkorzystniejszym rozwiązaniem IMHO :).

Edit: st3tc - no ;).
« Ostatnia zmiana: Kwiecień 14, 2007, 19:37:51 wysłana przez dRaiser »

Offline Anusia2007

  • Użytkownik

# Kwiecień 14, 2007, 19:42:36
Ale przeciez nie odczytywala bym odrazu calych plikow z pamieci (i nie zapisywala) tylko po pare bajtow w kazdym obrocie petli glownej gry - tak, zeby nie bylo przerw w plynnosci aplikacji. Wydaje mi sie, ze na to samo wyjdzie jesli utworze osobny watek (przeciez to tylko watek nie proces, proces aplikacji i tak bedzie musial dzielic czas pomiedzy oba watki).

//EDIT
W dodatku jesli w  jednym watku kaze odczytac mu caly plik powiedzmy o wielkosci 10MB, a w drugim bedzie sie toczyla normalna rozgrywka to FPS w tej rozgrywce moze spac nawet o polowe. A plik zaladuje sie powiedzmy po 1-2 sekundach. A jesli bede miala wszystko w jednym watku moge odczytywac po pare bajtow w kazdym obrocie petli i plik odczytam powiedzmy w 10 sekund (zalozmy, ze w tej sytuacji musze dostac te dane dopiero po 10 sekundach) ale nie bedzie znacznego spadku FPS.
« Ostatnia zmiana: Kwiecień 14, 2007, 19:46:28 wysłana przez Anusia2007 »