Il existe plusieurs applications comme Blitz3D ou d'autres types d'outils de construction de jeux qui compilent des scripts ou d'autres données de jeu dans un seul fichier exécutable. Comment font-ils cela?
la source
Il existe plusieurs applications comme Blitz3D ou d'autres types d'outils de construction de jeux qui compilent des scripts ou d'autres données de jeu dans un seul fichier exécutable. Comment font-ils cela?
Différents outils abordent cela de différentes manières, mais la manière dont Blitz3D le fait consiste à envelopper le code et un interpréteur dans un bundle. Ensuite, lorsque vous exécutez l'exe, cela lance l'interpréteur et transmet le code fourni. C'est à peu près la même chose que, par exemple, le fonctionnement de Python lors de l'utilisation de py2exe.
Dans de nombreux outils de développement de jeux, le code fourni avec l'exécutable est simplement du texte brut que l'interpréteur analyse. Cependant, certains adoptent une approche de bytecode comme Java, où le code source est transformé en une forme intermédiaire que la machine virtuelle utilise. Je pense que Unity utilise cette dernière approche mais je ne suis pas sûr.
Du haut de ma tête, tous les outils de développement de jeux que je peux imaginer sont que les exécutables de packages sont basés sur cette approche d'un interpréteur de base / machine virtuelle, puis les empaquettent avec le code, ou sont des bibliothèques que vous compilez dans Visual Studio ou autre.
Le flux de programme, la gestion des variables et autres sont compilés en code machine pur, tandis que les commandes de haut niveau sont implémentées en tant que fonctions de bibliothèque C ++ qui sont appelées à partir de la bibliothèque d'exécution compilée dans chaque exécutable généré par Blitz. Non de la famille Blitz Basic est interprété comme Python.
la source