What I've Learned From Half a Year of Game Dev
Half a Year of Game Dev
This is a dev log about my experience of developing Liment. That's right, it took me 6 months to get this project to where it is now which I'll admit is far too long. But to be fair, those 6 months weren't spent developing all the time. Instead, I worked on Liment in my spare time. Weeks could go by without me working on it at all, which is not a great habit of mine and I plan to address that. That's why I'm writing this post, I want to detail what I've learned, what I've done and what I plan to do with Liment in the coming weeks, so strap in because this is going to be a long one.
As you can probably tell, I am not a full time indie. I make games for fun in my spare time which is partly why it has taken this long to get this project to where it is now. Because I'm not depending on game dev, I've started many games and never finished them, the only one I've actually finished was Haywire, a game jam game. But when I started this project back in January of this year, I fell in love with the idea and I wanted to finish a game for real.
The original idea for Liment was that you swung through a cave avoiding the spikes above and below you. I really liked the idea because I thought it would be a fun way to move as I love momentum based games. I got to coding and the first version I ever saved looked like this:
- This being the first version of Liment, improvements had to be made. Firstly you left clicked on a stalactite to swing from it but you had to keep the left mouse button held down to keep swinging and when you let go, you swung off the rope. This was uncomfortable to play as my finger grew tired and this problem was addressed in the next version.
- The spikes' shapes were made by assigning them different triangles of varying sizes which would be a lot of work to improve upon as I would have to create lots of different sprites so that system was changed in the next version also:
- Right off the bat, you can tell that the generation has changed. Instead of using multiple sprites for different sizes, I just multiplied the width and height of the sprite by a random factor between 1 and 3. This gives a level of variation I wouldn't have been able to create with the old system, but there is one notable drawback. Multiplying the width and height of the sprite means that every pixel of the sprite is bigger. The original sprite is 32x32, this means that the original pixels are enlarged and easy to pick out giving the spikes a jagged appearance.
- Onto the player movement which no longer has you holding down the left mouse button. Instead, you simply left click on a stalactite, swing and click on another. I enjoy this much more than the previous version but there is something missing, you aren't able to release yourself from a rope which is important for a momentum based game. Another new feature is the introduction of a cool-down which is the green circle around the cursor, otherwise you could keep left clicking without consequence. And finally, the last feature added in this version is the ability to pull yourself up the rope by holding the right mouse button. This is for when you are swinging towards the spikes at the bottom and it has stayed mostly unchanged to this day.
To prevent this post from being too long let's skip straight to the fifth version:
- First thing I'll address is the generation. The spikes no longer draw sprites which resolves the jagged issue from before, instead they find out where the three points of the triangle should be and draw a triangle with Gamemaker's built in function. Next you might notice that there's a wavy look to the stalagmites compared to the previous version and that's because I wanted to create even more variation in the generation. Now taller spikes get grouped with each other and slowly shrink or grow from one spike to the next, getting rid of any random spikes jutting out of place.
- Next the player movement has changed, now you can release yourself from your rope mid swing with the space key and you can even "dash" with left click, which is a fast movement in the direction of the mouse. This too has a cool-down which is the blue circle around the mouse. You may also notice there are two green bars around the cursor now. I added this so that the player is more likely to have a rope handy when they need it.
I was happy with my progress as I was focusing on improving the core aspect, the player's movement, but from here I started getting grand ideas of what the game could be. I was suffering from problems with scope.
Problems with Scope
I'm sure a lot of you can relate, you have an idea and start a game without a thought out plan. You have so much motivation you spend hours upon hours making the game in the first few weeks of starting the game. Then one morning, you find yourself without the same drive to finish the game and it's nowhere near completion and was it always this boring? Well that was me in Liment's early days as I just started the game without a clear idea of what the finished game was. This allows your scope to go out of control. "Won't it be cool to have a story mode?", "Maybe there should be bossfights?" and "An upgrade system is a must!" are ideas that flew through my head while I made the next versions of the game which muddled any vision I might've had for the finished game as these are drastic changes that don't work with the style of my game. For example, Mario wouldn't be the same if it had a skill tree. Along with that, it increases your workload for what you thought would be a game that would only take a month to make.
This was the mistake I made and why it has taken this long without finishing it. But, because of this, I feel like I learned my lesson. For my next project after Liment, I won't jump into development with a "cool" idea without making sure it's fun. The best way to do this is to take the core of my game idea and make a quick prototype out of it. For example, Mario's movement in any Super Mario game. After that I will write down a brief description of what I want my game to be when it's finished. For Liment this should be "This is a game where you swing through a cave and you avoid the spikes above and below you as well as the enemies who try to get in your way".
Where Liment is Headed
If you have tried out the current version of Liment and you are interested to see where the project will be heading, I will be working on 3 aspects of the game in the coming weeks. These are the Difficulty Curve, Decoration and User Experience. The Difficulty Curve refers to how I'm going to increase the challenge through each play-through of the game, this will be the increase of speed and when harder enemies are introduced. Next is Decoration, which refers to how I plan to make the game look more visually appealing and add a bit of variety. I've already started work on this and this is all I have to show for it:
Random crystals appear in the standard cave.
After a while you will enter a "Crystal Cavern" where there's an abundance of crystals and glow bugs which light up the dimly lit cavern.
I hope to create more unique areas that'll spice up the look of the game rather than going through the same grey and boring cave. The final category I'm looking to improve is UX or User Experience which I've lumped a lot of stuff together in. These are the standard game features like volume control and button mapping but I also plan to revamp the game's UI as it is bare bones at the moment.
As well as working on the game, I also plan to update the page with new dev logs every week detailing any progress I've made. I also plan to keep the current version of the game up on the page for anyone to download and give critique of it. It still feels weird to do that as I'm uncomfortable about people playing an unfinished game but on the other hand it gives me the chance to receive feedback and suggestions during active development. What are your opinions on this?
Things to Keep in Mind
As promised, I said I would go through some things I've learned as an inexperienced dev.
Firstly, if you're anything like me and you rarely finish games, then you probably haven't encountered any performance issues (this is using Gamemaker Studio by the way). I was shocked to find that my game started to drop frames at one point and I had little to no idea how to fix it. The problem could've been anywhere or everywhere in my code as I coded with little thought of performance. I watched a very helpful video by the FriendlyCosmonaut (video here) and I was able to address the issue but this did take up time I could've spent making the game. All in all, I'm not telling you to go out and optimize the hell out of your game project when it's running perfectly fine but rather you should try to code in ways that'll prevent something like that from happening in the first place by getting familiar with what common mistakes slow down your preferred engine.
Secondly, DON'T. UNDERESTIMATE. THE. POWER. OF. DEADLINES. They're very handy. As a hobbyist, I don't have to worry about deadlines which seems like a good thing on the surface. I could go weeks without working a single bit on my project. Not only does this make it harder to get back into the groove of making games again but I've also wasted valuable time not working on what I love doing. Then I learned the value of a deadline when a Youtuber invited people to send their projects to him to play within the next few days. Those couple of days had me filled with a drive I hadn't felt for quite some time. I ended up with a somewhat playable version of the game (This also happens to be the one uploaded to this page!). For that reason, I've decided to hold myself more accountable and be able to provide somebody with proof that I did something that week which is why I plan to update you on my progress every week.
If you made it this far, thank you for reading my first ever dev log! I'm new to this. If you haven't tried Liment already, I would really appreciate it if you would give it a try. Any feedback or critique would also be great! As well as a general update every Sunday, I'm also willing to do a dev log on certain aspects of the game if anyone is interested. Expect the next update to be Sunday the 11th as I will be participating in the GMTK game jam this Sunday!
Leave a comment
Log in with itch.io to leave a comment.