So I was working on a small Metroid-like game in GameMaker Studio 2. Then one day I thought: what if I wrote a book about how I made it? Maybe I could attach the whole GameMaker Studio 2 source project to the book. It might be useful to others and it might even pay some of my bills (and make me an author as a nice side effect).
And so I decided to write an ebook. I’m aiming for less than 200 pages but as of now I can’t be sure about that. There’s a lot to write about. But there’s one issue with this grandiose plan.
One thing I need to take care of, is the graphics. I took the graphics from another project I bought on the Scirra store (the Construct software developers) because:
I thought I was just going to build a game in GMS2 and release it
I loved this graphics
I asked the authors and they told me the Construct project could be dissected to be re-purposed in GameMaker Studio 2 as long as I didn’t redistribute the graphics in any reusable way.
So it’s still ok to use that graphics for a complete game but it’s not ok for me to redistribute it in a reusable way (i.e. I can’t sell/give away the source code with that graphics). Which is expected, reasonable and correct.
In short, as soon as I will finish the game (using that graphics), I will need to re-make the whole project with either more permissive-licensed assets or with brand new graphics (made specifically for the book project).
I’m inclined to hire an artist and make brand new graphics but we’ll see how it all pans out.
I’ll post more updates soon.
P.S. The doors/hatches graphics I’m using is made by Luis Zuno aka ansimuz. His Warped Caves asset pack can be downloaded for free. Check his Patreon page as well as his Itch.io page. He makes lovely pixels.
I recently got into the (bad) habit of using just one single controller object for my games. It manages everything from input to video. The logic behind this was that the less objects GameMaker has to manage, the less resources it will use.
In principle that’s true. In reality, switching from 5-6 controllers down to 1 doesn’t make any difference at all in terms of performance. We’re not talking about hundreds of objects; we’re talking about 6. I mean… what was I thinking?
So I took a step back and returned to my old (good) habit of having multiple, distinct, autonomous and self-contained controllers. Each concerned only with doing his own thing.
I’ll admit it: the Game controller is still somewhat generic; all the others define their own variables and run their own code independently. Data deals with game data like options and statistics. Video deals with app surface drawing, display resolution managing and view/camera stuff. Audio and Input are pretty self-explanatory too.
Log deals with the log console, but it will soon become Dev. A Development controller that enables development mode actions and tools like a debug console, a log viewer and so on. When a game is released, the Dev controller must be simply removed from the first init room.
The added benefit is that now I can export a single object into any other project, where and when I need it. That’s neat.
The Metroidvania Metroid-like game genre, from a development perspective, is quite complex to master. World and level design, for examples, are core elements of the game along with player abilities and game physics. You cannot plan one without the other. This is because player abilities, powerups and game physics, are the very elements that allow the Player to progress and advance (or backtrack) throughout the levels. This also means that levels must be designed around the player’s abilities, powerups and game physics (among other things).