1. Background info
To be honest with you all, I don’t browse TDC frequently, but I’m glad that I did on the 10th of April, as I saw the Spring Fling Gamejam running from the 11th to 13th on the front page. With three games under my belt already (one of which is still deep in development hell), and all of which had taken months or years to make, the idea of creating a decent game within the span of a day or two, or even hours, was very outlandish to me, so I had to give it a shot. The final product that came about didn’t just meet my expectations, it surpassed it. In this article I will be giving you an in-depth look at the development of Springslinger, the game that took me just 9 hours to make.
As the jam’s title suggested, the game had to adhere to the spring theme. At first, I had no idea what I wanted to make that would fit the criteria. I knew that the backdrop had to be related to nature (lush grassland with trees and colorful flowers) if I wanted to stand a chance. “But then, how would one make engaging gameplay out of that?” I asked myself, and then came a stroke of genius: Juxtaposition. It would be absurd for the verdant scenery to be a battlefield for a bloodthirsty, armed-to-the-teeth demon hunter leaving unbridled bloodshed in his wake, but I was afraid that would stray too far from the theme, so I dialed back the idea and ended up with a middle ground: The game was to feature a florist who blasts evil gnomes with her shotgun to protect her lawn. It was a quirky and unexpected concept that I hoped would capture players' attention.
There were three primary inspirations for the game, with the first two being DOOM Eternal and Survival Roguelike games. The former is obvious, with the shotgun and grappling hook combo as a homage to the Doom Slayer’s arguably most iconic weapon, while the latter is somewhat more nuanced. In case you’re not familiar with the survival roguelike genre, it’s a type of game where you fend off against countless enemies within a certain time frame, and over the course of the game, you level up and are able to choose one of many upgrades the game offers you. I planned the game to be similar to that genre, except you have to survive endlessly, turning it into an arcade experience where you compete for the highest kill count and time survived. As for the remaining one, I was actually inspired by my own games, mainly DIAREGNUM: Chrono Hunter. I borrowed many mechanics from this game and challenged myself to streamline them for this project to fit the short development time. These three elements were combined to hopefully craft a game with serviceable replay value.
4. Grappling hook
I’d been intending to feature a grappling hook in one of my games for a very long time now, and this game might be it, as I thought to myself, so it was the very first thing I worked on, even before the shooting mechanism since I already familiarized myself with it. The keyword is ‘botch’. I never tried implementing this mechanic before and only had a rough idea of how to execute it, and it worked better than I’d expected, but not without its flaws. For starters, the chains have no *ties* with the hook itself, so they merely fly towards the hook to create the illusion of a proper chain and hook. Additionally, the hook’s interactions are quite janky at times, but thankfully not game-breaking. Earlier in development, the hook refused to latch onto the gnomes, and I fixed it by having the gnome be placed at the hook’s position whenever it lands. With more time and knowledge, I could have created a more elegant system, but a game jam is all about compromise, so I’m happy with how this mechanic turned out in the final game.
5. Vine boom
In early playtests, the hook added tremendous depth to the game as it helps the player traverse around the map quickly and gives them more option for combat engagements, but it had a major problem: you were helpless after hooking into a horde of gnomes. I applied two solutions to address this, the first of which is making your character invulnerable during the hook. The second one? A wide burst of damage around the player should they decide to shoot while mid-hook which would instantly wipe out all gnomes in your immediate vicinity, and its range could be improved with upgrades which I’ll cover later. The explosion, dubbed ‘Vine boom’, was so satisfying to use that I had to balance it extensively, and now it’s in a very good spot as a viable alternative to gunplay if the player opts to exclusively upgrade the radius.
6. Grace period
Even after this change, something still didn’t feel right. Sometimes you could be flying with your hook and wouldn’t benefit from the brief invulnerability or the ability to cast a vine boom, which prompted me to add the ‘grace period’ feature. Essentially, it makes it so that you retain the benefits from using the hook for a split second after usage, as indicated by your hair color which changes to blonde to indicate said benefits. I think this feature gives players a wider margin of error and is a good quality of life change to this rather janky experience.
I was making a shooter game, so I evidently had to make it feel just right. Though I was capable of implementing a reload and ammo system into the game, I did away with it altogether and gave the player unlimited ammo so as not to kill the game’s pacing, but this came at a price, more on that later. The base rate of fire had to be neither too fast nor too slow, so an interval of 0.75s per shot seemed to hit the spot. In addition to the shooting part, I made all enemy gnomes take a single bullet to kill, and since your shotgun fires 3 of them per shot, each shot could kill at least three of them, and even more once you invested in bullet upgrades. Lastly, I made it so that your bullets have limited range as killing gnomes off-screen doesn’t make for engaging gameplay. All of these elements combined should give the gunplay a snappy feeling and maintain the action on-screen at all times.
8. Enemy spawns
Making the spawn system was as simple as having ‘spawner’ objects fly about the map randomly and periodically spawn a gnome as long as they were off-screen, balancing it was a nightmare. In version 1.0.1 of the game, there were 4 spawners initially, and a new one would appear once every 45 seconds, making the early game rather tricky for less experienced players. This was later changed to 2 initial spawners plus one every 60 seconds instead. Aside from the spawn frequency, there was also the gnomes’ movement speed to address. In the early version, they scaled incredibly fast at a rate of +10% every 2 minutes, which I had to change to 10 minutes one patch later. I tuned the specific numbers so that the gnomes would constantly surround you in sheer quantity, but never be too fast as to rush you down.
9. Progression and upgrades
As mentioned earlier, I borrowed mechanics from my older games, in this case, the level up and upgrade system from Chrono Hunter, and simplified it by reducing the stats you can improve from 5 to 3 and by replacing the currency system with a more straightforward skill point system. The player can either upgrade the 3 stats (bullets, fire rate, and vine boom) evenly or invest in 1 or 2 specific branches to their liking. Gaining experience from gnomes could be seen as a hassle since you had to pick up their flowers instead of receiving exp on kill, so I thought of adding a side objective in the form of big flowers scattered across the map that grant you 25 exp each. I think this system overall gives player agency in how they want to progress in the game and lets them experiment with many different build paths, and as of version 1.0.2, I added the ability to pick a random upgrade if the player can’t make up their mind.
Aside from the grappling hook, ensuring that the basic movement in Springslinger felt just right was crucial to the overall gameplay experience. Compared to my last projects, your speed is rather low in this game to accommodate the sluggish gnomes, but you can still outrun them and ‘leash’ them like a zombie horde. One controversial decision I made is that your character slows down after every shot to keep you from being too overpowered, especially when building max fire rate, which makes it so players have to think before taking a shot instead of letting them hold down the left mouse button without repercussions. While this choice wasn’t very well-received by early playtesters, it ultimately added depth to a deceptively simple-looking game such as this and hopefully elevated the gameplay experience.
11. Freeze frames and screen shake
Whenever I embark on a new project, I always try to add something new so my game dev skills don’t stagnate. For this game, I intended to add freeze frames in certain situations, such as when you mow down dozens of gnomes in a single shot or with one vine boom, and when you get damaged. Implementing this was relatively simple as I only had to slightly tweak the time stop mechanic from Chrono Hunter. Having the whole game briefly freeze whenever such situations occur adds more emphasis to the player’s actions and gives them a brief moment of respite lest there are too many gnomes on screen. Screen shakes are pretty much my staple at this point since it was featured in most of my games, and I tried to make it feel impactful but not too disorienting by slightly increasing its intensity the more bullet upgrades you have and moderately decreasing it the more fire rate upgrades you have. These two features aim to solidify the game’s overall feel and make it all the more satisfying to play.
Trees were an afterthought. Really, they were merely randomly generated obstacles that you could hook towards and nothing more, and I only had about 10 to 25 of them on the map. However, the more I playtested it, the more I realized just how important they were, so I upped their count to 100. With lucky world generation, a line of trees can block incoming gnomes, which sometimes trivializes the game. Conversely, trees can also conceal gnomes ready to ambush you, so you have to be vigilant at all times. For some quality of life changes, I made trees transparent whenever the player is near it and allowed your bullets to pass through trees to hit the gnomes behind them.
I sometimes jokingly refer to this game a spiritual successor to Welcome to Bullet Hell, my first game, since they both share the same endless survival shooter gameplay loop. That’s all they have in common, however, because unlike WTBH, this new game isnt hard for normal players, nor is it borderline impossible for less experienced ones. My games have had a reputation for being difficult in the past, but after years of experience, I think I know a way to gauge a game’s difficulty. If a developer can beat his game easily, it should be of intermediate difficulty or slightly challenging to other players, and if even a dev struggles at his own game, it’s practically unplayable for others. The high difficulty of my past works has scared off many potential players, so I wanted to make this game as accessible as possible while still retaining its fun gameplay. With this project, I made sure the early stage was a cakewalk and only let the game’s difficulty gradually ramp up after the first 5 minutes or so. Aside from reducing the early enemy spawn rate, I made it so that you instantly level up after collecting a big flower for the first time, which should also teach players another way to gain exp. The player initially only had 5 health and leveling up wouldn’t heal them, so I made this aspect more forgiving as well. It’s not to say I’m dumbing down the game, as the endgame phase when a certain environmental hazard appears is tough as nails. Overall, difficulty is a very delicate matter as it can make or break a game’s first impressions, and paying attention to it is key to garnering new players to give it a shot.
14. Graphics and audio
Normally, one does not paint a house while it’s being built. Likewise, the game had little to no graphics other than colored squares and rectangles during early development. It wasn’t until I had finished all the core mechanics that I decided to draw sprites for the game. Since this game runs on a much lower native resolution (480x270), my pixel real estate was limited, which meant I had to make each individual pixel count. One thing I did differently was to refrain from drawing black outlines on the sprites as I had few pixels to work with. The end result turned out to be way better than I could ever hope for within that time frame. After the graphics came the sound effects, which were either recycled from my past work or free samples that I had mangled to suit my need. Lastly, as for the background music, I chose “Showdown”, a track by Shihotori in 2020, also for a competition (https://www.newgrounds.com/audio/listen/956423). The reasoning behind this choice was that this track was largely forgotten once it had failed to get any further into the said competition despite sounding quite nice in my opinion, and I thought it would be cool if it got a second wind. With the graphics and audio completed, the game was coming together, but there were still some unfinished elements to deal with, such as the game’s lore and title.
I’ve always been the ‘gameplay first, story second’ type of guy, so coming up with a plot for this game on the fly would’ve been daunting had it not been based on pre-existing characters and concepts. Alice, the protagonist, was inspired by an original character of the same name and association with flora. Her shotgun, the Anthifeuer (lit. ‘Flower Fire’, not to be mistaken as ‘anti-fire’), has the ability to dematerialize living organisms and turn them into flowers, which sounds like something out of a Lovecraftian horror, not gonna lie. Luckily, this weapon’s eldritch properties only exist in Alice’s dream where the game takes place. Yes, the whole game is a dream sequence. Why else would she find herself mowing down waves of sentient gnomes?
16. Game title
After spending about 6-7 hours on this game, I realized I hadn’t come up with its title yet. I was never really good at naming things, and my idea reflected that. I initially named this game “A Florist And Her Boomstick”. While it clearly described what the game was about, it didn’t really seem to click with me, and I suspected it wouldn’t resonate with others nicely. After spending a whopping two minutes brainstorming, I decided on the name “Springslinger”. It was short, catchy, had a nice wordplay, as it could either be ‘spring slinger’ or ‘springs linger’, and last but not least, it also depicted the gameplay loop of using the grappling hook to ‘sling’ across the map.
17. 9 hours later
Since the game was made on such short notice, I didn’t put much thought in making a menu screen for it. Actually, I forewent the process entirely, as in the first published build of the game, the player was greeted by a ‘tutorial’ screen that let them jump straight into the action should they familiarize themselves with the controls. At first, I thought it was neat that the game didn’t need a menu screen since the only purpose it served was to show the game’s title and the ‘play’ button. So, after 9 hours of working while running on energy drinks, I finished the game and submitted it to the jam. Surely, the host would see the effort put into this game and give it a high rating. What could go wrong?
The jam was, admittedly, microscopic in scale since there were only two entries, mine included, and out of all people I could have competed with, the other contender was a veteran developer whose game blew mine out of the water. In the end, Springslinger stood at second place. At that point, I decided it wasn’t worth sulking over because there wasn’t any reward for winning the game jam other than the motivation to create a game on a tight deadline. I looked back at the game to see how I could improve it, now that time constraint was no longer an issue, and oh boy, I made countless changes to the game ever since.
19. Balance changes
After the honeymoon period of game development was over, any illusions of the game’s greatness were stripped away by the reality of its mediocrity. The initial release of Springslinger had a very high difficulty floor and steep scaling which players found unpleasant, so I alleviated that by reducing the gnomes’ spawn frequency and extra movement speed, as mentioned previously. The grappling hook was also in need of a buff as its projectile speed was sluggish and its range was laughably bad, so I made it fly further and return to you significantly quicker as well. The effects of this change cannot be understated since it lets you hook towards off-screen objects, letting you get away from sticky situations much easier, perhaps with a stylish drive-by to boot. After these changes, the game was in a much better spot, but there was one glaring problem: You could camp in a corner in the endgame. The movement penalty didn’t matter in the slightest if you decided not to move anyway, and enemies may only spawn off-screen but they couldn’t spawn outside of the map’s borders, so they were funneled into certain angles, and all it took for the player to survive was to hold the left mouse button. Even if I was advocating for player agency in this game, the corner camping playstyle was, frankly, extremely boring, and I had to find a way to discourage it.
I initially contemplated implementing a circle area that gradually shrinks that forces the player to stand within its confines otherwise they’ll lose health, similar to those seen in battle royale games, but later decided against it because I deemed it too generic and lazy. Instead, I settled for the tornado, an omnipresent environmental hazard that constantly chases you to keep you on the move, which appears once you reach the max level. Making sure the tornado wasn’t frustrating to deal with was my top priority, so I made its speed have no scaling, so you can always outrun it (but never hide from it). It was to be a neutral hazard, meaning it could also consume gnomes on its path, and personally, I find it hilarious whenever a gnome gets sucked into it and spin around until it ceases to be. The tornado’s sprite was comprised of multiple 2D circles stacked on top of each other to create the illusion of 3D, which also marked the first time I’d utilized this technique in a real game and not a demo. After some playtesting, I had the bright idea to slap a small circle area around the tornado, which grants you exp over time, eventually healing you, as long as you stand inside it. This addition gave it a risk-and-reward factor which also coincided with my doctrine of player agency. Should you run as far away from the tornado as possible or should you stick close to it for that juicy healing? The end result of this addition blew me away, no pun intended.
21. Quest system
The game was getting better and better, but there was the risk of players giving up on the game after their first run instead of testing out new builds and playstyles. The quest system was implemented in an effort to remedy this issue. It’s essentially a checklist of activities for players to do before they put the game down. The quests vary in difficulty, and it can be as easy as reaching level 2 for the first time, or as tough as killing 10000 gnomes in one game. Some quests are similar to achievements while others encourage going off the beaten path such as playing with a specific upgrade setup (the 9-0-0, 0-9-0, and 0-0-9 runs for instance) or a different approach to progression (pacifist route). This system worked alright, and my only regret is not rewarding players anything other than bragging rights for completing the quests. This decision was a deliberate one, as implementing rewards for quest completion would incentivize taking the most optimal route to clear them, effectively giving players less options.
22. Visual overhaul
With the game’s core mechanics finalized, the last major hurdle was giving the game’s graphics a glow up. Gnomes now spawned comical ghosts flying in the air upon death, and I added two indicators for the crosshair, one to denote your shotgun’s downtime, and the other is a standard hitmarker. I added wooden fences around the map, indicating that the game doesn’t take place in a patch of land in the void, but rather, a lawn (also in the void). A wave of colors breathed life to the game as gnomes and their dropped flowers now had many different hues. Alice was given a flower on her head which was absent in the old version of the game to make her floral affiliation ever more apparent. One special thing many missed is that her sprite isn’t mirrored, so the flower remains on the same side regardless of the direction she’s looking at. The player’s bullets were also redrawn to appear larger and more powerful, and a muzzle flash was also added to make the gunplay seem more refined. Other resprites included the big flower, which was turned into white, and the vine boom sprite, which was made to look more flowery. Once done with tweaking the sprites, I worked on the game’s HUD. During early development, I wanted it to be minimal with the only prominent element being the player’s health bar situated right low their feet, and the less important ones (kill count, timer, and stats) were given little attention as they were simply numbers floating on the screen. I assumed this negligence may have contributed to the game’s unpolished look on release, so I took the time to make it right. I reordered the HUD elements and gave them icons and borders matching the game’s colors and style, thus transforming its overall aesthetic.
23. Finishing touches
The game was so close to completion that I had to fight the urge to preemptively release it since there was still some additional work to be done, such as finally getting around to making a menu screen for the game and adding the option to disable music ‘cause some players may get sick of hearing the one and only track accompanying their gameplay. Next, I made the game keep track of players’ personal best kill count and time survived and also gave them the ability to reset their records or quest progress if they wanted to. Lastly, the text in the tutorial was tidied up and rearranged to make it easier on the eyes. The game was ready to ship, but there was one final step in the way – playtesting.
One mistake of mine in the past was to give my works to my friends for them to playtest while it was still severely undercooked. Even worse, I sent them so many iterations of my games to try out that by the final release, they had become seasoned veterans of those games, thus skewing the feedback from those testing sessions. With Springslinger, I intended to break the cycle by only starting the playtesting phase once the game closely resembled how I envisioned the final product would be. The results were more interesting as testers had vastly different performance on their first run without my guidance. Some survived for nearly 10 minutes while others barely got past the 3 minute mark. One funny example was a friend of mine who struggled at the game, and when I told him about the grappling hook, he was surprised because he didn’t know that was a thing, which boggled my mind since it was clearly stated in the tutorial. It turns out he accidentally skipped the tutorial as soon as he saw ‘WASD to move’ and assumed the game only consisted of running and gunning. Armed with this new knowledge, he trivialized the first 5 minutes and almost survived for 5 minutes more. From the data gathered, it’s safe to say the game’s difficulty was in a good spot since it got players engaged for just the right amount of time. Gameplay aside, most testers had one feedback in common, “Add more content to the game!”
25. A game’s scope
Sadly, I had to resist the temptation to put out more content for this little project, and I had my reason. You see, back when I was new to game development, I worked on projects that were simple at first, which eventually bloated in content beyond my wildest imaginations and ultimately failed to be something coherent. It was the feeling of chasing the ‘next big thing’ that had convinced me to spend time piling up more and more unnecessary features to my past works, or to come up with overly ambitious concepts that I had no hope of realizing, thus dooming them to never see the light of day. After some six years of disillusionment, I embarked on Springslinger with a different approach in mind. I knew it was merely a 9-hour project turned one-week affair, and decided against working on it any more than I needed. If the game was well-received despite being relatively bare-bones with simple mechanics to maintain player engagement, I knew I’d succeeded in creating a fun experience without putting the game at risk of entering mid-development hell. Admittedly, I had the urge to add more gnome types, more weapons, more playable characters, and possibly more stages, but now I’m afraid those will have to wait until I begin working on this game’s sequel, which is unlikely to happen anytime soon. The simplicity of Springslinger made the game development process much smoother and allowed me to focus on fine-tuning the core mechanics and gameplay experience. This approach helped me avoid the pitfalls of feature creep and allowed me to create a game that put my past self’s creations to shame.
26. Final release
I didn’t have a lot of materials to work with for the game’s cover art, so I slapped together some game sprites in Photoshop and made an artwork that resembled the box arts of some old NES games. Afterwards, I put together some game footage to make a short trailer for the game which highlights its core features. Eventually, the new update of the game was released on sites such as Gamejolt and itch.io, and unfortunately, flew under the radar. The game's odd setting and the lack of marketing made it understandable for a small pet project like Springslinger to not receive a lot of attention. While it would have been nice to see more people play the game, I wasn't upset that it wasn’t given more attention. If anything, I was ecstatic that I was able to actually release a new game. Releasing a game is a significant accomplishment in itself, regardless of its reception. I received some feedback from the players who did try the game, and it was mostly positive. They enjoyed the game’s wacky concept, and some fell in love with the game’s pixel art aesthetic, for which I’m deeply grateful as I’m not much of an artist myself. Although Springslinger didn't achieve the level of success I had hoped for, I'm proud of what I was able to accomplish with this project.
27. What I learned
Years ago, I could have grown much faster as a game developer had I been taught the lessons taught by the making of a small game such as Springslinger. For one, the game’s development made me restrain myself from filling the game with additional content that would take away its simplistic nature and have it outstay its welcome. This project also pushed me out of my comfort zone since, once again, making an enjoyable and polished game within such short notice was a tall order. Last but not least, throughout the process, this project seemingly nagged me to stop procrastinating at any given moment as there was already a clear and realistic goal to work towards, so I had to pace myself accordingly. Working on this little game has given me far more invaluable experiences than it has any rights to, which will undoubtedly affect my perspective on future endeavors as well as ongoing ones.
To me, Springslinger feels like a gift that keeps on giving despite being such a small package. Its development was an opportunity for me to revitalize my creativity and correct my past mistakes. The game has also given me a sense of accomplishment that can only come from creating something that others can enjoy. Even though the game may not have received widespread attention, hearing positive feedback from players who enjoyed the game for what it is has been incredibly rewarding. It's a reminder that sometimes, the smallest projects can have the biggest impact on both the developer and the players. Looking back, I'm grateful for the experience of creating Springslinger and the lessons it taught me. This project has pushed me to be a better game developer and rekindled my passion for game development. It’s been a wild ride from start to finish, but I cherish every moment of this journey, this game making journey.
If you've made it to the end of this article, thank you so much. I hope this has been an interesting read for you. If you want to try the game out for yourself, check out TDC's 'Downloads' section. You can also watch the game's trailer here
As always, feedback is always appreciated. Let me know your thoughts in the comments below!