In November 2016 I met Denis (@darftey). He’s a pixel artist. One of the best I’ve ever met, actually. We teamed up to develop Fuzeboy.
It shouldn’t come as a surprise that since then, the development of KREN has been put on hold indefinitely.
We’re pushing hard on this mobile platformer game.
There is still no official release date but we’re making progress 24/7 on every front. From music and sound to gameplay mechanics, from platform specific issues to minor graphic details.
Lots of care is being put into making this game as fun as possible. We care about details. We care about story and gameplay. We are in love with this game and we’re making sure everything goes the way we envision.
Stay tuned for more Fuzeboy news in the near future.
This entry marks the first entry of a new Devlog Series.
I’m currently working on a couple of GameMaker projects and I thought it might be useful to document my development process. I’ve been inspired to do so by reading the Loadworld Devlog PT. 2 by @ZackBellGames
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).
A well developed metroidvania game should start with a solid planning phase. One of the first things to figure out is the character movement. I’m not talking about physical variables such as speed, friction and acceleration. I’m talking about figuring out what are the movements we want the Player to be able to execute during the game.
Can the character crouch? If so, should it crouch only when standing still? Can the character crouch in mid air or does it simply aim downward? Is it possible to walk while being in the crouching position?
These are serious design considerations that should be carefully planned and addressed well in advance as they define the feeling of the game. The player will act and react based on what movements are available. It’s the absolute first response to player’s inputs.
Crouching: Metroid Zero Mission vs Axiom Verge.
In both games, you can crouch. But while in Metroid you stay in that position even if you let go of the down key/button, in Axiom Verge you get up as soon as you let go of the key/button.
Also, while in Axiom Verge you can walk while being in the crouching state, you cannot do so in Metroid Zero Mission. Yet if you press the down key again, you morph into a ball.
The mechanics are different and so is the gameplay. Plan carefully what you intend to create and plan it well in advance. If you can, plan it all out even before any test level you might be tempted to sketch.
It will greatly simplify the overall development cycle (i.e. you won’t be rewriting big chunks of core mechanics code again and again, risking to break previous works).
Everything starts with the tiles. If you make tiles your measurement unit, you’re going to be able to simplify the visualization process. I made this kind of reasoning: how many 16px square tiles do I want displayed vertically?
I wanted to be able to show at least 10 tiles. Which then I realized was a pretty low number for a Desktop game. That meant having a vertical resolution of 160px. That was the resolution of Metroid Zero Mission, on a Game Boy Advance. Granted, it looked great even on an emulator, on a Desktop PC… but… did I really want to go with that little number of tiles? Let’s look at how others approached the problem…
Axiom Verge, a more modern desktop platformer, is displaying almost 17 tiles vertically, at a vertical resolution of 270px. So I had to stop and ponder a little. Was it enough? Was it too much?
Too much indeed. Axiom Verge displays gigantic environments around one of the smallest player character I’ve ever seen. The player’s height to screen height ratio is absurd. But it works, for that game.
I wanted to keep a more claustrophobic feeling. Given I didn’t want to mess with tile size, I had to display less tiles. Simply by reducing the resolution.
Metroid Zero Mission has a resolution of 240×160. It’s a 3:2 aspect ratio and it’s not what most computers use today (or even back in the days). In fact the 16:9 aspect ratio is now almost a universal standard. Or at least you can find it in most of the TV sets, desktops and notebooks you see around.
Back to Axiom Verge. It’s 16:9, which is great. But I already chose not to go with a resolution as high as 480×270 because I want less tiles on the screen.
Don’t get me wrong. If you want to be able to display a great number of 16×16 tiles on the screen, 480×270 is a really great option. I would advise you go with that resolution! It’s 1/16th the pixel area of a Full HD monitor. Which means it scales pretty well without pixel interpolation artifacts (you multiply 480 and 270 by 4 and you get the 1920×1080 Full HD resolution).
Next, I looked at the closest 16:9 resolution available with almost the same vertical resolution as the Game Boy Advance: 288×162.
I made a few tests at this resolution and even though I liked it (a lot), it doesn’t scale well. There’s no easy way to scale the 288×162 resolution to perfectly fit a 1920×1080 monitor. That means problems. Also, even though I liked the effect, it really is a little bit ugly. And maybe a little too much claustrophobic, even for my game; there’s barely enough space to fit 10 tiles, vertically. Given my player’s height is a bit more than 2 tiles, it meant huge player (yes, you can draw a different character), really small “field of view” and ugly pixels.
The 384 x 216 Compromise
I finally found the optimal compromise resolution: 384×216. Multiply that by 5 and you get the Full HD resolution. This should avoid pixel interpolation distortions. It also allows me to display 13.5 tiles vertically. This is not that far from the Game Boy Advance look, but it sits nicely between Metroid Zero Mission and Axiom Verge.
I don’t want the player to feel small, inside gigantic environments. I want the players to feel the environment around them. Leaving him/her with little air. But not as little as in Metroid ZM on the GBA. All with a modern 16:9 look.
I found my own resolution with this process and a bit of testing. It might not be the best approach (in fact I’m sure I might have missed some other considerations) but for now it’s working great. Your mileage may vary so I recommend a lot of testing.
My primary objective would be to prototype the game with graphics.
I still don’t know if this is going to be a commercial project or not. Should it become a viable commercial game there could be many options. Here are just some of them
Prototype’s used to get funding. Then…
The artist remains the same, becoming the final game artist. Gets what is due to him/her, plus revenues shares.
The artist changes; prototype art won’t be used; he/she will get no revenues shares but will get what is due to him/her.
Prototype’s not a prototype anymore and is ready to market; no more funding necessary. Artist remains the same so revenue share model apply.
Project gets cancelled. No one gets anything (this should not happen! at all costs!) Artist is free to use his/her art however he/she sees fit.
Project is released as freeware (unlikely). Same as above.
The project is going for the commercial route. It’s now a revenue share work relationship.
Right now I’m unable to test the mechanics, to think about what works and what doesn’t; to imagine the game world. I need to quickly place things in the levels, test them and get an emotional response as to what works and what doesn’t.
That statement is a dramatic exaggeration. But you get the idea.
As of now, everything you see in the image below, except the blocks tilesets, were drawn by me. Ideally, this should change.
Right now I’m working full-time on this project.
I will be trying to help the artist as much as I’m able to, given my limited artistic skills.
The game will have a resolution of 384 x 216.
Player will be more or less 36px tall.
The current game art won’t be used as a basis (thank god!)
Beware: the game videos/images are only there to show collisions and other tech aspect. The overall feeling of the game is going to differ drastically. Think Super Metroid (there, I said it).
This won’t be an action packed game. In fact, when I think about it, I think about words like
If you would like to collaborate, have comments or want to share your thoughts, leave a comment or get in touch via social networks etc.
This post is outdatedThe following (quite naive) ideas and methods have now been replaced. This post was written when I was just starting out with game development (I was learning GameMaker Studio).
Player now has data (like energy, starting_x and starting_y positions, starting direction and so on) and a nice inventory of permanent upgrades. I’ve called it inventory for the sake of it. It’s just an array (it really is) of stuff you can get through the whole game. Permanent stuff. Stuff you can get only once per whole game.
In every room (level) there are a number of different objects (like enemies and items). Most of these items will simply respawn once the Player gets back into the same room. Again and again.
This way it doesn’t matter how many times you killed the enemies in the room. As soon as you exit and re-enter the same room, all those enemies are just there. Again.
This is fine. Almost essential in some situation (believe me, there will be times when you’ll need more enemies to refill your energy or ammo levels).
So what’s with the level specific items? If you already acquired the high-jump ability, you won’t find it again in the level. This is where the inventory comes into play. And this is what I’ve coded today.
By the way I’m not using maps. I’m using simple arrays. I just defined a couple of macros so I can use my global array like it’s a key/value map. I get the added benefit of speed and code autocompletion in GameMaker. The only thing I made sure of, was to initialize the size of the whole array.
In the earlier tech demo, I had positioned a truckload of similar tilesets. Those bluish/greyish square blocks are not hand picked. I did not make that work in the level editor. I got inspired by the Smart Tile Objects tutorial by HeartBeast.
Not relevant anymoreThings changed quite a bit and thought I'm still using the same notebook, I'm now a happy Windows 10 user running GameMaker Studio 2. I use Linux only when compiling via VirtualBox.
I’ll keep this short and sweet.
Whenever I tell people that I have a notebook, they usually reply with something like “and what about your main computer?”.
I do not have a “main computer”. I have just this notebook. Which is running Linux and has no accelerated graphic card available (to tell the truth it’s an integrated Intel HD Graphics 4000).
Yet I’m using GameMaker Studio. How is that even possible? VirtualBox made it possible. I’m running Windows 7 inside Linux via VirtualBox.
Even though I cannot take advantage of all the graphic acceleration stuff (e.g. the awesome graphics in Hyper Light Drifter looks like shit on my notebook; Shovel Knight is unplayable and so on…) I’m able to run my platformer engine with a decent 400 FPS (real). A consistent 60 FPS.
I’m quite happy about it but I just hope I can keep developing with this machine. Fingers crossed.