Jak można zbudować VFS
Wirtualny system plików (ang. Virtual File System) Rzecz która występuje prawie przy każdej grze. A przy silniku jest to wręcz element obowiązkowy. VFS jest to najprościej mówiąc system przechowywania danych zoptymalizowany pod względem ich odczytu.
Dlaczego używać wirtualnego skoro mamy do dyspozycji zwykły FS? Powodów jest kilka
- Dane są zabezpieczone przed przypadkowym zmodyfikowaniem, co zapewnia stabilność
- Można użyć różnych algorytmów kompresujących
- Instalacja dużej liczby małych plików na zwykłym FS trwa dłużej niż w przypadku jednego wielkiego
Chciałbym w tej notce przedstawić sposób w jaki napisałem swój własny VFS do mojego silnika Omikron2.

Widzimy tutaj nagłówek zawierający podstawowe dane np. wersja archiwum, liczbę plików czy offsety. Tablica plików to rekordy o stałym rozmiarze zawierające hash nazwy, rozmiar, offset pliku w sektorze danych itp. Dane właściwe to pliki (skompresowane albo nie) upakowane w jeden ciąg danych, w tej samej kolejności co rekordy w tablicy plików.
No i tajemnicza końcówka o nazwie Tablica nazw. Co to takiego? No więc projektując VFS postanowiłem nazwy (a raczej pełne ścieżki) plików upakować na samiutkim końcu. Powodem takiego posunięcia był fakt, że nazwy plików potrzebne są tylko w jednym momencie -Gdy chcemy to archiwum rozpakować do normalnego FS. W innych przypadkach jak dostęp do poszczególnych plików wystarczy nam hash jego nazwy a do tego właściwa nazwa nie jest nam potrzebna.
To działanie znacząco uprosiło strukturę VFS i przyspieszyło jego wczytywanie. Bo wystarczy za jednym zamachem wczytać tablice plików z archiwum do pamięci aby mieć pełną informacje o danych się tam znajdujących.
Jacek Złydach, TeMPOraL said,
wrzesień 26, 2007 @ 22:50
Firma Blizzard Entertainment podobnie stworzyła swój format MPQ (używany od czasów Warcrafta II i StarCraft’a). Tablica plików miała ustalony przy tworzeniu archiwum rozmiar (przynajmniej tak było w StarCraft’owym MPQ) i także używała hashy. Blizzard jednak postanowił początkowo nie umieszczać w archiwum żadnych informacji o nazwie plików (nie było sekcji, którą Ty nazwałeś ‘Tablica nazw’). Później dopiero przyjęło się umownie, że archiwum MPQ może zawierać plik o nazwie “(listfile)”, w którym linia pod linią zapisane są nazwy wszystkich plików mogących znajdować się w archiwum.
Do korzyści ze stosowania VFS dodałbym jeszcze to, że
1) pliki są bardziej zorganizowane (można podzielić na różne paczki, np. GUI, konkretne etapy, etc.)
2) dużo łatwiej tworzy się patch’e, plug-in’y i modyfikacje, gdy wystarczy umieścić tylko spakowane archiwum z potrzebnymi plikami w odpowiednim katalogu
I tu zaczyna się największy potencjał VFS-u - możliwość ‘przeźroczystego’ patch’owania plików. Jeśli VFS najpierw szuka pliku w archiwum ‘patcha’ a potem w archiwum ‘oryginalnym’, to można łatwo i bezboleśnie dokonywać poprawek w plikach z danymi.
Pozdrawiam
PS. Dobrze, że znów piszesz :).
cc balance transfer said,
styczeń 28, 2008 @ 11:53
I’ve been using credit cards for quite a while already and I’ve built a good credit history. But I feel that I do not enjoy all the opportunities of my credit card, using it for offline purchases only. There are lots of web sites where you can buy things with credit cards and it saves your time and effort. But, is it secure to buy online? If yes, I’m going to apply for card at
Excellent Credit Card
enversdotprer said,
czerwiec 1, 2008 @ 00:52
Hello, my friend!
Please, don’t hate me, I just want to earn some money
See you!
Buy phentermine here!