YoYo Games are expected to use a rewritten runner for Game Maker 9 using knowledge they have gained whilst working on runners for the PSP and iOS. A Game Maker 7 executable decompiler, which also decompiles games made in GM5.3a, 6, 6.1 and instant play versions, was created by a different author and still functions.
Game Maker Exe Decompiler
Hopefully, YoYoGames uses this itself as a motivation for improving the runner. These exploits that the creator of this decompiler hopes to improve in Game Maker should also be viewed by YoYoGames so they can in turn learn themselves. It would better yet if the creator joins YoYoGames as he supposedly knows about the faults of Game Maker.
This latest release is actually an updated version of the original Game Maker 8 decompiler. I would imagine that the decompiler could quickly be rendered useless thanks to the system used by YoYo Games to push out regular updates to GameMaker 8.1 users. Or a more speedy game of cat and mouse could ensue.
Are you aware that sometimes the decompiled games have errors, or some features missing? I had to reconstruct quite a bit of one of my more complicated projects. Is there any way to fix that issue in a future release?
It seems that questions about whether (and if so, to what extent) GameMaker: Studioand GameMaker Studio 2 games can be decompiled are being asked at a constant pace, and yet there arestill no resources to clear up these questions. So I've decided to make a small post on the matter.
Older versions of GameMaker stored game data in a way that remains common to Lua game enginesthese days - that is, all game data was compressed and encrypted, but, in the end, storedwithout substantial post-processing.
And thus, eventually someone had the persistence to reverse-engineer the runtime's binaries,and wrote a tool that would reassemble the data from an executable to a largely-valid source file.Needless to say, such a thing was valuable if you were trying to recover lost work, and a bit ofa disaster if you were working on a game with any online features or didn't anticipate a smallchance of your work being stolen outright.
To protect against that, people then made obfuscators(to one of whichI even contributed some methodology) and tools anti-decompilers(tools specifically subverting the expected executable structure),and things were kind of okay... so long as you were aware of possibilities.
Later on, YYC (YoYoCompiler) was introduced.YYC compiles GML to equivalent C++ code and then through an appropriate C++ compiler(most often, Clang), allowing to take advantageof C++ specific optimizations and to have the game code interface with runtime directly,all for great effect on performance and with some pleasant security implications(more on this later).
At this time, the only tool that offers anything resembling adequate VM decompilationis UndertaleModTool.While it isn't going to make you a project file,it is perfectly suitable for recovering lost scripts(though also see Recovering Lost Work)or making mods for games.
While, ultimately, anything that runs on end user's hardware can be reverse-engineeredat some point, having baseline adequate security (through use of YYC)is a good thing for games where this matters.
You will get the source of .exe game executable of game maker, to the .gmk file, simple so locate the .exe project to desktop, drag the .exe to folder of extracted decompiler, run decompiler and you will get the .gmk file!
Game Maker: Studio's standard version is free, but there will be a watermark at the start of the game, and because some of the functions that Hotline Miami uses were removed in GM:Studio, editing the code will be required to make the game work.
you need the sprites for the weapon. This is the following: sprPAttack____ sprPWalk____ sprEAttack____ sprEWalk____ sprESearch____ and lastly, the actual weapon image itself (this will go into the sprWeapons image, just look at all the other weapons in there for a reference for what kind of thing you want to draw). The index your new image holds in sprWeapons is extremely important. See that little number that says "image whatever" underneath the picture? Make sure you remember that number. This is the way's game of keeping track of what weapon is which, and that 'whatever' is how you'll be primarily working with weapons from now on. Every time you create a new image for a weapon, it'll automatically be added to the end, but make sure to move it to immediately after the last weapon added. For your first weapon, you want to put it after the silenced Uzi, which is image 25. Everything after that is considered by the game to be a 'throwing weapon', which is treated differently. For example, if I want to add an AK-47, I'd draw the sprite for it, and move it till it is image 26, and if I want a 9mm, for example, I'd move its image sprite to right after the AK, so that it's image 27. I'll talk about how to adjust for these later.
On a side note, if you want your weapon to be player-exclusive (ie, something like the drill or the silenced Uzi, you can skip all the enemy sprites. This saves significant time and effort, and allows you to work with 'special' weapons. However, it also restricts the weapons to your player character, so make sure that's what you absolutely intend in terms of gameplay and canon. It wouldn't make much sense if your character was the only one in the entire world who could properly wield a wooden 2x4, for example.
right below the ammo indicator for image_index=25, which would mean that if the game is calling the weapon associated with image 26 (the AK), the global ammo counter for that gun would be 60. Note that this is also for the objWeapon only, which are weapon spawns. The weapons which generate with enemies can have different ammo values, which I'll mention later.
Scroll to the bottom till you get toif image_index=25 objPlayer.sprite_index=sprPWalkSilencedUzi.Immediately after this line, enter a new line and type in the code for the new weapon. Adding the AK, I would inputif image_index=26 objPlayer.sprite_index=sprPWalkAKNow, you want to modify the line that contains the throwing variables. Currently, in my game, I've added both the AK and a handgun, so my script looks likeif image_index=25 objPlayer.sprite_index=sprPWalkSilencedUzi
if image_index>28 objPlayer.sprite_index=sprPWalkThrow objPlayer.throwindex=image_index-28Every time you add a new weapon, you have to increase thatimage_index>28 by 1. This allows the game to differentiate between throwing weapons and standard weapons.scrCurrentWeapon
Scroll down till you find a line that beginsif ammo>0 {From here starts the guns section, and this first line tells the game that when there's an ammo counter displayed on screen, the weapon being held is a gun.
light controls how bright muzzle flash is, or in terms of Hotline Miami, the radius of the flash which the gun adjusts. You can mess around with it but in my personal experience, it doesn't seem to affect much unless you change it to exorbitant amounts, which is pretty much epilepsy: the simulator as if the game itself weren't already seizure-inducing enough.
This morning an update to the GM Decompiler was released, this time with the ability to decompile InstantPlay games and extract GM7 extensions from games. The update also defeats some methods devised for protecting games from the old decompiler (typically using a hex editor to tamper with the PE).
InstantPlay decompiling automatically detects games you have used via InstantPlay, which are stored in a folder under My Documents. Users are presented a list of games detected and the rest is automatic.
Yesterday a complete, cross-platform Game Maker decompiler was released. The tool was authored by several people and published by GearGOD. The Java program takes a Game Maker exe file v5.3A-7.0 and decompiles it to an editable.
For making mods for CL3 you will need gamemaker pro (8.1) Recommended i think gamemaker studio will work but not tested do not use lite version, and the crime life 3 source (.gmk .gm81) to edit files textures etc, use the decompiler to decompile the exe simple drag exe into decompiler open with. finally open source with Game maker on advanced mode maybe confuse on first but u will get hang of edit.
In many game development tools, the code that is bundled along with the executable is simply raw text that the interpreter parses. However some take a bytecode approach like Java, where the source-code is turned into an intermediate form that the virtual machine uses. I think Unity uses this latter approach but I'm not sure.
Off the top of my head all game development tools I can think of that package executables are either based on this approach of a core interpreter/virtual machine and then packaging it with the code, or are libraries that you compile in Visual Studio or whatever.
1.2.2 is made with Game Maker studio which can't be decompiled sadly enough. earlier versions could be decompiled with a simple script (pre 1.2) to find out about possible bugs. but the game maker version was completely re-made so I doubt you'll find much.
anyway. you can use that script by opening a CMD inside of the gamemaker .exe and then running decompile riskofrainwhatever.exe I believe. I'm not exactly sure if it would work. But that's what google came up with for me.
I wonder though, if we managed to get the source and could modify the game, would it be allowed to run the modified version if we only changed which maps we got? It would make runs a lot less tedious and time consuming and more skill based. Even if it weren't allowed, there's not really much anyone can do to prove anything was or wasn't modified in the first place. Maybe Onin can chime in.
No, editing the game to alter the RNG, any of it, is not kosher. For one, it's completely arbitrary, why just the maps, why not also the spaceship spawn location, why not also the amount of chests that spawn, why not also the odds of finding an orange chest...Secondly, you can't guarantee that changing one thing in the game doesn't affect other things unintentionally, no matter what you do about it. 2ff7e9595c
Comments