Dans GM6-7-8, t'as les sources et données du projet pack dans le .exe, pas en clair, mais presque (y a juste une étape de cryptage, mais ensuite tout est en clair).
Dans GMS, le moteur de scripting est une machine virtuelle.
C-a-d que GM ne stocke plus le code source en tant que tel, mais il le transforme/compîle en bytecode (appelé VmAsm sous GMS).
Cela permet d’interpréter le code de manière beaucoup plus rapide (d’où les différences de perfs de l'ordre de 2 ou 3 quand tu passes de GM8 a GMS).
Donc quand tu compile un projet, ton code change, et tous les commentaires sont wipés, ainsi que d'autres données moins importantes.
Dans le data.win, section CODE, tu pourras voir le VmAsm.
Exemple:
Exploiter le bytecode en tant que tel n'est pas vraiment possible en des temps raisonnables.
La première étape pour faire du reverse engineering (c-a-d, reconstituer le code de base en partant du bytecode) sera de désassembler le bytecode en VmAsm clair.
L'exemple ci dessus désassemblé:
- Code:
-
0x00000000: fbff05c0bb0100a0 push.v -5 0xa000 seed (0x1bb)
0x00000008: 000006c0de050000 push.s
0x0000000c: de050000
0x00000010: 00005603 conv.s.v
0x00000014: 020002da call.i 0 get_save_filename
0x0000001c: f9ff5541e00500a0 pop.v.v -7 0xa000 _file (0x5e0)
0x00000024: f9ff05c0e00500a0 push.v -7 0xa000 _file (0x5e0)
0x0000002c: 000006c0f5000000 push.s
0x00000030: f5000000
0x00000034: 00005614 sne.s.v
0x00000038: 060000b9 bf
0x0000003c: f9ff05c0e00500a0 push.v -7 0xa000 _file (0x5e0)
0x00000044: 010002da call.i 0 screen_save
0x0000004c: 0000059f popz
Avec pas mal de théorie en mathématique côté informatique théorique, tu peux assez rapidement transformer ça en code GML tout a fait valide, et très proche de celui d'origine, de manière totalement automatisée.
Le soucis c'est que la ça deviens un peu plus compliqué a mettre en œuvre.
Perso j'avais essayé vite fait pour aider un pote a récup son projet mais j'ai jamais eu le temps de finir, mon jeu me prend trop de temps a côté...
En tout cas c'est tout a fait possible (comparé a ce que disent les créateurs même de GMS...) de décompiler un projet.
Au niveau des ressources c'est bien plus simple a extraire.
Elles ne sont pas cryptées (tout le data.win est en clair, c'est juste que le bytecode n'est pas vraiment exploitable en tant que tel), mais juste pack en binaire.
L'outil que j'avais commencé permet juste de reconstruire le dossier des sprites pour le moment.
Mais si ça t’intéresse envoie moi ton projet je verrais si ça marche avec.