Kompilacja EXE czy DLL dla późniejszego patchowania?

0

Witam
pisząc program a dokładniej grę
lepiej ją skompilować po prostu (do EXE) czy rodzielać na DDLki?
Chodzi o to, że gdyby później został wykryty błąd, jak ją spatchować?
Rozumiem, że DLLkę można by poprawić i ją po prostu podmienić (czy tak?) a gdy cała gra jest w EXEku byłoby to raczej niemożliwe.
Czy dobrze rozumuję?

0

Dobrze rozumujesz rozpatrywanie potencjalnego błędu ale nie rozumujesz jak programista. Powinieneś zacząć rozdawać tą grę wtedy, kiedy będziesz absolutnie pewien że nie będzie żadnego błędu albo kiedy się maksymalnie przed nimi zabezpieczysz.

0

Wymiana samych DLL-ek raczej nie wchodzi w grę, no chyba, że idealnie zaprogramujesz interfejs pomiędzy EXE a DLL i nie będziesz zmieniał reguł komunikacji/struktur/danych, ale w większości przypadków i tak zmienisz tyle rzeczy, że i tak będziesz musiał wymienić EXE-ka, poza tym, z punktu widzenia installerów nie robi to żadnej różnicy, czy podmienić EXE czy DLL, no chyba, że te DLL-ki to pluginy, które są dynamicznie ładowane i można je podmienić/uaktualnić w trakcie działania programu, wtedy opłaca się je rozdzielać z myślą o częstych aktualizacjach, a jeśli to biblioteki statycznie linkowane do EXE-ka to robiłbym wszystko w 1 EXEku.

0

Dziękuję bardzo za odpowiedzi.
Mój problem tkwi w tym:
powiedzmy, że EXE zajmuje z 400MB czy tam więcej, wszystko w testach wyszło że działa i jest super.
Po długi użytkowaniu okazało się trzeba coś zmienić w jednej funkcji (jakąś wartość - przyjmijmy ilość zabierania energii przeciwnikowi).
Ciężko wtedy rozpowszechnić na nowo te 400MB (czy więcej) skoro można by podmienić jeden mały plik.
Staram się rozważyć czarny scenariusz gdyby wystąpił jakiś błąd po wydaniu EXEka i na jakiej zasadzie są robione patche, które zajmują raczej max kilka MB.

0

Zauważ że skoro EXE ma więcej niż, powiedzmy, 10 MB to można założyć że to nie kod tyle zajmuje tylko bitmapy itp które masz w resourcach - rozdziel pliki z danymi od plików z kodem, wtedy patchowanie powinno być prostsze - wystarczy podmienienie exe. (Btw. tak czy inaczej nie zachęcam do trzymania wszystkiego w exe - z bibliotek warto korzystać.)

0

Ok, dziękuję to mi nieco rozjaśnia sytuację.
Jednak teraz pojawia się inna wątpliwość. Jeśli mam bitmapy i owszem niech one sobie będą w oddzielnych plikach ale nie chcę by użytkownik końcowy miał do nich dostęp tzn otworzył je sobie np programem do edycji obrazów (Photoshop, Paint etc).
Wkompilowanie ich w EXE załatwia mi sprawę a co w przypadku gdy ich nie połącze z EXEkiem tak jak piszesz?

0

Zakoduj je chociażby szyfrem Cezara, a przy wczytywaniu odkodowuj.

0

No tak ale gdy używam gotowych bibliotek do wczytania obrazu np PNG (biblioteki SDL lub XNA) to np (w przypadku SDL) podaję adres (wskaźnik) do pliku z obrazkiem, a tworzyć na dysku tymczasowy rozkodowany plik raczej nie wchodzi w grę. Chyba, że czegoś nie łapię więc przepraszam za dociekliwość.

0

http://wiki.libsdl.org/moin.cgi/SDL_LoadBMP_RW

Use this function to load a BMP image from a seekable SDL data stream (memory or file).

Returns a pointer to a new SDL_Surface structure

1 użytkowników online, w tym zalogowanych: 0, gości: 1