Welcome to another edition of Developer Diaries. This week, we're chatting to Tom-Ivar Arntzen, the developer behind the fantastic rhythm game Klang, its soon-to-be released sequel Klang 2.
WHY NOT START OFF BY INTRODUCING YOURSELF?
I'm Tom-Ivar Arntzen, a solo game dev from Norway who goes by the artist name Tinimations. Ever since 2013, I've focused on PC and console experiences that cater to the hardcore gamer. Klang 2 is my latest take on the rhythm-action genre and will be launching on Steam on October 20th.
WHAT MADE YOU CHOOSE CONSTRUCT?
I chose Construct 2 as I found it to be the best introductory tool to game development back in 2013.
Its art pipeline was very compatible with my preferred way of making assets, and the event system proved a great balance between simplicity, flexibility, and quick iteration. Back then, you couldn't get much out of Unity without a solid programming background, and Unreal 4 wasn't out yet. It simply felt like the best option, all things considered.
The original Klang was launched in 2016. While I'm proud of what I accomplished with my first real attempt at game development, there's no hiding the fact that lack of experience impacted the end result. I wanted to see what could be accomplished if I started out knowing my game concept and tool of choice inside-out from day one. I hope most people will agree that Klang 2 is a lot more refined, optimized, and dare I say fun than its predecessor.
WE LOVED KLANG WHEN IT CAME OUT – WHERE DID YOU GET THE IDEA FOR IT? AND HOW WAS IT DEVELOPING THE GAME?
By the time I picked up C2 with the intention of making Klang, I had already been brewing on an idea for a rhythm-action game for years. There's something undeniably satisfying seeing choreographed action synced to music. I wanted to capture that sensation in video game form.
Taking what I learned from Klang 1, I decided to give the concept a second go. This time, I would distil the rhythm-combat down to its core, and hyperfocus on nailing that aspect in particular. Bonus points if I could make it playable and fun on multiple input methods!
Completing the game's progression structure went surprisingly fast but refining the game mechanics and story presentation took years. Klang 2 proved to be a very “fragile” game concept in the sense that it only takes minor imperfections to ruin the experience for a lot of people. A visual glitch here, an awkward pattern change there, could all lead up to a bad experience.
The good news is, Klang 2 is now finished and ready for release! It's coming out on Steam on the 20th of October - the same day as this post! It's also fully playable on all relevant consoles thanks to the aid of Ratalaika Games. It feels amazing to play the game handheld on the Switch!
WHAT'S BEEN YOUR BIGGEST DEVELOPMENT HURDLE SO FAR?
I can recall two major hurdles developing Klang 2:
1. Balancing my graphical ambitions with Construct's HTML 5 nature
Construct 2 especially made memory management very difficult, as all sprites need to fit in RAM (Not to be confused with VRAM) at all times. You have to be very mindful of how art assets are implemented. With Klang 1 I just brute-forced everything, which caused me a lot of grief during development. The game could easily have been better optimized with more experience.
For Klang 2 however, I not only wanted butter-smooth performance and animation, but its story had to be bigger and grander as well. Plus, I wanted to keep the download size low.
To accomplish all of this I had to plan out an approach that didn’t rely on pre-rendered cutscenes and video. While a nightmare at first, it ended up proving a blessing in disguise over time. The restrictions forced me to get creative and adopt a more procedural approach for conveying the game's narrative.
The most noteworthy example of procedural animation is probably the dialogue sequences between Klang and the omnipresent deity A-Eye. The eyes move in a smooth and dynamic fashion directed by code. It looks smooth and has minimal impact on memory usage. Klang’s eyes will dynamically keep eye contact with A-Eye even as it changes position on screen. The audio waveform speech is also accomplished through code.
The “tunnel” Klang flies through here is animated through code. Sense of depth here is all perspective tricks. Having access to Z-Depth or 3D functionality sure would have helped when making this scene! It sure looks great at 120+ fps though!
The bigger the asset, the more I had to justify its existence through reuse. Klang 2’s numerous battle arenas are a good example of this.
Many of Klang 2 environments are not just for show, they’re a crucial component for storytelling and world-building. The procedural fire trail in this scene really helps with masking the limited sprite animation and leading the eye to important visual focus points. Notice how small the characters are in the frame? Not only does it let me convey a sense of environmental scale, but it also helps tremendously with saving memory by keeping the sprite sizes small.
2. Optimizing preview time.
Considering how careless I was with sprite-use in the original Klang it's a miracle it even shipped at all. At the end of development, I believe it took 2-3 minutes from the time I pressed preview until I was in-game (Chrome and Nwjs preview even stopped working entirely!). This crippled productivity when working on iteration heavy systems, and hard to reproduce bugs. For Klang 2 I made it my mission to keep iteration times as fast as possible. To accomplish this, I made use of the “Load image from URL” feature.
Big assets such as environment art and Klang's high-resolution gameplay animations are only loaded in when they're actually needed. Not having to load these assets in every preview has saved me countless hours of iteration time when refining gameplay systems and story content.
Wondering why there's a second loading screen when the game starts? This is why.
ANY MEMORABLE DEV STORIES?
I can recall one amusing story near the end of development.
There was a framerate dependency at one point concerning high-refresh rate monitors where the camera would zoom waaaaay up Klang's behind. It stayed in the game for a long time too, as I normally playtest the game on 60hz.
By the time I discovered it, and asked members of the discord community about this, it turned out almost all of them played on 144hz, saw the butt-zoom, and thought it was an intentional gag. Fun times...
DO YOU HAVE ANY ADVICE FOR PEOPLE DOING THEIR OWN GAME PROJECTS?
Learn as much about your tools of choice as possible before you get married to any particular game idea. You'll have a much better time developing if you can work “with” the tools rather than against them.
Don't be fooled by how quickly you get stuff done in the beginning. Everything will get slower as the project grows, so scope your project accordingly. If you're too careless in the beginning, I can assure you finishing the game will become an absolute nightmare. Optimizing for iteration time is just as important as optimizing for performance in my opinion.
ANY FINAL THOUGHTS?
Construct 2 was my introduction to serious game development back in 2013. Over the course of 8 years (Roughly 20.000 hours logged on steam), I've finished two ambitious game projects. I can only hope they will leave a mark on the rhythm-game genre and the Construct community as a whole. No matter how it goes, at least I made it to the finish line on my own terms.
If you want to check it out for yourself, there's a public demo available on Steam.
By wishlisting the game, you'll be the first to know when Klang 2 releases on October 20th.
I also run a discord server, where I'm available to answer questions regarding Klang and Construct development.
Twitter: @Tinimations
Cheers
Tom