Niedawno stworzyłem podstawowy klon Space Invaders, w C ++, używając frameworka Allegro 5. Po zakończeniu zdałem sobie sprawę, że mam około 10 duszków i bibliotek DLL o wartości 13 MB; niektórzy gracze nie mieli nawet bibliotek DLL mingW, co czyniło grę bardzo zagmatwaną.
Jak spakować wszystkie zasoby w taki sposób, że mogę łatwo dodawać i usuwać dane z mojej gry oraz zmniejszyć rozmiar zasobów, umieszczając je w jednym miejscu? Używam bloków kodu.
zziplib
do przechowywania wszystkich moich zwykłych zasobów w pliku zip, a następnie załadowania ich do mojej gry przez niestandardowy potok zawartości silnika. Zasadniczo szukasz na początku sposobu na załadowanie plików z pliku zip do pamięci, aby móc z nich korzystać w grze. Jeśli chodzi o biblioteki DLL, jest to dość trudne, ponieważ zwykle muszą znajdować się w tym samym katalogu co plik wykonywalny lub katalogWindows
lubSystem32
katalog, który NIE jest zalecany! Co powiesz na archiwum SFX do wyodrębnieniaTEMP
i uruchomienia z niego?Odpowiedzi:
Wygląda na to, że stoją przed nami dwa wyzwania: dystrybucja i pakowanie zasobów.
Dystrybucja
Spakuj całą aplikację do katalogów według własnego uznania, a następnie umieść katalog najwyższego poziomu w pliku .zip. Rozpowszechnij ten plik .zip. Gdy użytkownicy rozpakują zip, będą mieli folder ze wszystkim, czego potrzebują, gotowi do uruchomienia gry.
Jak umieszczasz swoje pliki?
Zwykle robię coś takiego:
Pakowanie aktywów
Możesz użyć pewnego rodzaju biblioteki kompresji (zlib, lzo), aby skompresować wszystkie zasoby gry (powyższy katalog res \) do jednego pliku. Następnie musisz użyć tej samej biblioteki kompresji, aby wyodrębnić zawartość zasobów w czasie rzeczywistym, aby załadować zasoby do gry.
Co się wtedy stanie, gdy chcesz załatać swoje aktywa? Następnie musisz albo: skompilować zupełnie nowy plik zasobów i rozesłać go użytkownikom (aby w gruncie rzeczy ponownie pobierali to, co już mają, plus garść dodatków), albo musisz zbudować aktualizator (inny program do obsługi ) i poradzić sobie z tym, że coś może pójść nie tak, a plik aktywów zostanie uszkodzony ...
Szczerze mówiąc, nie jest to wcale trywialne, aby działało i nie widzę korzyści w twojej sytuacji. Prosty katalog powinien wystarczyć do enkapsulacji 10 duszków i dużo łatwiej jest dodawać i łatać rzeczy: wystarczy pobrać je do odpowiedniego katalogu i gotowe.
Budowanie instalatora
Zakłada się, że celujesz w system Windows ... kiedy już będziesz mieć powyższą wersję, możesz pracować nad zbudowaniem instalatora dla swojej gry. Za wszelką cenę unikałbym metod ClickOnce obsługiwanych przez Visual Studio. To nie jest typowy instalator systemu Windows i ma własny zestaw dziwactw.
Spójrz na to pytanie StackOverflow - zawiera zestaw pomocnych łączy do pakietów instalatora, których możesz użyć. Obecnie wiele osób lubi WiX . Nigdy sam tego nie użyłem. Ponadto popularne są zarówno AdvancedInstaller, jak i InnoSetup .
źródło
Możliwe, że możesz połączyć statycznie niektóre biblioteki zamiast dołączać biblioteki dll. Jeśli i jak różni się dla każdej biblioteki.
źródło
Możesz użyć oprogramowania takiego jak Enigma, aby spakować swoje pliki i zapisać je w jednym pliku .dat. Musisz zmienić folder swojego programu uruchamiającego.
źródło