Voici un nouveau tuto pour ceux qui voudrais crée de petit executable (les techniques décrites ci dessous sont généralement utiliser par les meilleur démomakers pour leur 64K).
Deja des mesures générales s'impose (sans toucher au code presque
) :
1 : N'utilisez pas de DLL comme SDL etc... qui bouffe beaucoupde place, utiliser plutôt win32 si vous êtes sous win ou l'env X sous linux, vous gagnerez ainsi beaucoup de place.
2 : Virez les libs dont vous ne vous servez pas !
3 : Compiler en mode release sous visual ce qui optimisera votre code !
4 : Si vous voulez utiliser du son prenez minifmod qui n'as pas besoin de dll. (attention ca ne lit pas tout les formats)
5 : Si vous voulez mettre des images / textures, faîte de la texture procédural et pour les images incluez les en tant que ressource (attention des images pas trop grosse quand même) !
Puis enfin la section code / optimisation manuelle qui vous permetteras de gagnez 10k ( testé avec win32 et opengl ) :
1 : Code :
// Section optimisation de l'exe !
#ifdef NDEBUG
#pragma optimize("gsy",on)
#pragma comment(linker,"/RELEASE")
#ifdef _MERGE_RDATA_
#pragma comment(linker,"/merge:.rdata=.data")
#endif
#pragma comment(linker,"/merge:.text=.data")
#pragma comment(linker,"/merge:.reloc=.data")
#if _MSC_VER >= 1000
#pragma comment(linker,"/FILEALIGN:0x200")
#endif
#endif
#define WIN32_LEAN_AND_MEAN
// Fin de l'optimisation de l'exe.
2 : Pour finir prenez un packer comme UPX (Pingtix à faît une interface pour ce packer regarder ICI !). Je tient juste à dire que UPX n'est pas LE meilleur il en existe un autre qui est pour moi le meilleur vous gagnerez 3k de plus que UPX, il est disponible à cette page et posséde une interface : http://dwing.go.nease.net/download.htm
Vous obtiendrez ainsi un exe de trés petite taille et vous pourrez même faire tout ce que vous voulez en 3D à l'intérieur avec OpenGL (mais vous pouvez l'adapter pour autre chose).
J'ai faît le test avec ma cracktro (pendant le test elle n'avait aucune image integré en ressource car bien sur si vous rajouter une image en tant que ressource vous aurez un petit moin de 5k donc bon) et j'obtien :
En utilisant la premiére partie de cette article (sauf le 5) 32ko ce qui faît deja pas mal car on est en dessous des 64k
.
En utilisant la deuxiéme partie de l'article petit 1 j'obtien 24ko.
En utilisant la derniére partie de l'article (le packer) j'obtien 12ko !!!
Voila un exe avec des scénes 3D et des effets dans 12ko ! Sachez que par contre si vous rajoutez beaucoup d'image en ressource la taille augmentera. Ce qui mange le plus n'est pas les scénes 3D (enfin un peu mais trés leger) mais surtout ce que vous incluerez dedans (son + image + objet 3D importer).
Enfin voila cette technique est assez simple à mettre en oeuvre !
Pour les plus pro si vous voulez gagnez encore plus il vous faut réecrire les fonctions des différentes lib de win32 qui prenne beaucoup de place et ainsi vous pourrez arriver jusqu'a 4ko ou bien même 3ko
. (notes : Farbrausch le groupe phare ont recoder certaine parti de la libC)
PS : Pour mon test la configuration de Visual en link etait la suivante :
J'ai inclu ces 4 libs : opengl32.lib glu32.lib user32.lib gdi32.lib
Les 2 premiéres pour utiliser OpenGL avec son extension et les deux derniéres les libs servant à gérer l'init de la fenêtre !
J'espere que cette article vous aura appris des choses
.
@++
Garzul
Deja des mesures générales s'impose (sans toucher au code presque
1 : N'utilisez pas de DLL comme SDL etc... qui bouffe beaucoupde place, utiliser plutôt win32 si vous êtes sous win ou l'env X sous linux, vous gagnerez ainsi beaucoup de place.
2 : Virez les libs dont vous ne vous servez pas !
3 : Compiler en mode release sous visual ce qui optimisera votre code !
4 : Si vous voulez utiliser du son prenez minifmod qui n'as pas besoin de dll. (attention ca ne lit pas tout les formats)
5 : Si vous voulez mettre des images / textures, faîte de la texture procédural et pour les images incluez les en tant que ressource (attention des images pas trop grosse quand même) !
Puis enfin la section code / optimisation manuelle qui vous permetteras de gagnez 10k ( testé avec win32 et opengl ) :
1 : Code :
// Section optimisation de l'exe !
#ifdef NDEBUG
#pragma optimize("gsy",on)
#pragma comment(linker,"/RELEASE")
#ifdef _MERGE_RDATA_
#pragma comment(linker,"/merge:.rdata=.data")
#endif
#pragma comment(linker,"/merge:.text=.data")
#pragma comment(linker,"/merge:.reloc=.data")
#if _MSC_VER >= 1000
#pragma comment(linker,"/FILEALIGN:0x200")
#endif
#endif
#define WIN32_LEAN_AND_MEAN
// Fin de l'optimisation de l'exe.
2 : Pour finir prenez un packer comme UPX (Pingtix à faît une interface pour ce packer regarder ICI !). Je tient juste à dire que UPX n'est pas LE meilleur il en existe un autre qui est pour moi le meilleur vous gagnerez 3k de plus que UPX, il est disponible à cette page et posséde une interface : http://dwing.go.nease.net/download.htm
Vous obtiendrez ainsi un exe de trés petite taille et vous pourrez même faire tout ce que vous voulez en 3D à l'intérieur avec OpenGL (mais vous pouvez l'adapter pour autre chose).
J'ai faît le test avec ma cracktro (pendant le test elle n'avait aucune image integré en ressource car bien sur si vous rajouter une image en tant que ressource vous aurez un petit moin de 5k donc bon) et j'obtien :
En utilisant la premiére partie de cette article (sauf le 5) 32ko ce qui faît deja pas mal car on est en dessous des 64k
En utilisant la deuxiéme partie de l'article petit 1 j'obtien 24ko.
En utilisant la derniére partie de l'article (le packer) j'obtien 12ko !!!
Voila un exe avec des scénes 3D et des effets dans 12ko ! Sachez que par contre si vous rajoutez beaucoup d'image en ressource la taille augmentera. Ce qui mange le plus n'est pas les scénes 3D (enfin un peu mais trés leger) mais surtout ce que vous incluerez dedans (son + image + objet 3D importer).
Enfin voila cette technique est assez simple à mettre en oeuvre !
Pour les plus pro si vous voulez gagnez encore plus il vous faut réecrire les fonctions des différentes lib de win32 qui prenne beaucoup de place et ainsi vous pourrez arriver jusqu'a 4ko ou bien même 3ko
PS : Pour mon test la configuration de Visual en link etait la suivante :
J'ai inclu ces 4 libs : opengl32.lib glu32.lib user32.lib gdi32.lib
Les 2 premiéres pour utiliser OpenGL avec son extension et les deux derniéres les libs servant à gérer l'init de la fenêtre !
J'espere que cette article vous aura appris des choses
@++
Garzul