The Postmortem and Secrets Of Zyklon


Hello and welcome to my little post-mortem on my project Zyklon. As usual, I will go over some ups and downs I came across when developing that game and I will add some secrets which you can find in the game!

Let's get into it:


The Development (And Game Itself)


The Start (Concepting)


Zyklon started with 2 wishes that I wanted to fulfill on the release: I wanted to have a game with a replay value and I wanted to do my own take on a genre I am not that much into: Sci-Fi. I put together a mood board with various things that I could combine and found out that the replay value could start by using a more arcade-style approach. I wanted to do heavier gameplay focus and that seemed to be a logical first step to start. Furthermore, it was a Sci-Fi setting (and similar) relatively common among arcade games, which strengthened the aim I would take. 

I searched for references and decided for 1 main and 2 sub refs in the end in regards on gameplay and looks. The subordinated references were Polybius and Starfox 64. The latter was mostly a reference at the start to decide the art direction I would like to go, which was a low-poly, low graphics style, and Polybius was an influence for game feel of sorts. It is more known as an urban legend, but there is actually a really trippy adaption of it and for research I played it myself and felt like that the colors and feel of speed were something I would desire for myself (but in the end it didn't really, made the cut sadly).

My main reference and game that would have influenced many decisions was actually a minigame! Kingdom Hearts 2 features in between its hack 'n slash gameplay worlds a mandatory shoot 'em up section in between and I really enjoyed them when I was younger, but also to this day. As a little tribute, I wanted to do something similar and that is a reason why I ended up as an arcade rail-shooter. 


The Middle (Developing, Coding)

This might be a little boring if you are not into the technical stuff

The development itself was not that terrible. The prototype was quickly finished as a shooting range and a small block with plane wings. Simple respawn and wave mechanics were a first for me, because I never really had enemies in my games, but it was fun to do! The hard part came after the prototype. The goal was to drive in a 3D environment, and it is not that easy to actually implement well in a way that features curves and changes in height. I was missing the simplicity in movement my other game Lieblingsmensch had, but I sat down and came up with some possible approaches. The funniest were:


- The character is bound to a cage of colliders and gets dragged across a spline. That is how the prototype did it actually and besides nasty by-hand adjustments to the bounds, this system crumbled the second I needed to change the rotation. This system only worked by driving straight lines and even then, the enemy shots were pushing the ship slightly, which could push the ship too far and out of the cage...


- The World Rotates around the player, so "we" are never actually moving. An insane idea retrospectively, but definitely an approach. It would require every asset to be movable at every time and be connected to each other. It would require even crazier by-hand work and would have taken ages to move the world on a spline which looks cool for the player with the possibility to do it all over again, if I needed to touch the path up. Philosophically speaking, it would have been fun perspective wise, and it would have made the gameplay a bit easier in some parts, but it isn't that sustainable to do it for levels.


- The World is a movie in the background. Also, a valid approach if your style can make it look cool, but yeah... the idea is to prerecord a fully fleshed out world and just let it play out in the background, while the player isn't moving. I really wanted to have real 3D assets to drive around, so it was scraped fast.



All these would not be that great for my vision, so the final version was a more developed one from the first idea:


- The player is bound to a spline, and we move parts within the player. Basically, we have a complete 3D world as our level, and we place a spline within, which will be our rail and the way we (and the enemies) will follow along. We play a player character which has some key components we can work with in an Unreal Engine. The most important to us are: a root (self) and a mesh (the "body"). Everything will follow the root, so we can use that to make it follow the spline. We can imagine the root as our wagon, which drives on the rails. Now we have the mesh which acts as a person within the wagon and, with that principle, we can get started with the details. I won't get into every detail (and I might get it wrong because I describe it out of my memory now haha), but briefly said the mesh is bound with float variables how far our input can make the spaceship go. Our Inputs give values between -1 (left/down) and 1 (right/up) and everything in between, and we can give them thresholds when our ship should stop. With that, we can always assure that we are within a cage, without needing a physical one. This cage moves along with us, making us go without leaving the screen. The enemy spawner acts with the same principle but is a set distance ahead of the player.


The big problem I had to face with that method and couldn't solve was bullet behavior, especially in curves. Because enemies and player will be a bit out of synch at curves, it can be tough to shoot and hit enemies that well. Another issue would be that traveling along the slope on a large level needs an appropriate speed, otherwise it will feel too slow. I found a sweet spot, and I am happy with it, yet it demands that the bullets can fight against the tempo. While enemy bullets will always fly with the flow, the player's shoots are launched at a very high speed so you don't crash into them the second you shoot, resulting in a funny feature block, where I could not add homing shots at the end to the enemies, because even with Unreal's own homing system, the game is a bit to fast to do it effectively in a way that feels good. 


Another interesting development technique that carries a lot in my systems is object pooling! I did it for the first time this project around after the prototype, and you can imagine it like a chest full of stuff. You load this chest at the start of the level with all its content inside and when you are done playing with it, you put it back until next time. In this game, this chest is filled with things like enemies, their bullets, health and score orbs, as well as the player's ammunition. Every time you shoot a bullet, this bullet gets pulled out of the chest of things and when it is done, it returns to the chest and can be shot again. It is a really cool system because instead of firing 1000 unique bullets per level, which requires memory storage and might lag your game after a while, you can load 10 bullets at the start and always recycle them when your job is done, without any difference in player experience besides better performance. I really recommend looking into object pooling for your own projects, when you have a lot of stuff you need to create manually otherwise!




The End (Art and Assets)

This game is my finale and I wanted to use everything I have made so far, which influenced the game's identity. Zyklon combines every one of my games within itself and I made the level based around the settings of my other projects. Level Forest is based around Spirit Stump, Level Urban is a reference to SUBordinate, Where The Rain Falls and Clerk and Level ??? is a reference to Lieblingsmensch. This is important, because that is how I went with designing assets. 


Level Forest is about a planet with ever-growing trees and I tried to tell the story with a lot of smaller trees on the planet itself and huge ones away from it. I also used many rocks to build structures, even a lake of sorts, which is a reference to the end of Spirit Stump, where poison lakes are everywhere (but in Zyklon it is already purified).


Level Urban is the result of me cutting 3 levels into one, but it led to a level filled with assets, and it was kinda cool to design 3 games into one level within a Sci-Fi kinda-like level. Basically, you start in a subway station and fly up into a kiosk area (just like SUBordinary) out of the window into the falling city, where everything is filled with tall buildings, broken streets and cars (like in WTRF) and spin around a big building, with the Clerk Logo on it (Clerk Reference?!). It uses a lot of old assets I did for every game, even the same CC0 textures in the subway station. I touched up some of them to better fit the overall art direction and also made some new assets like a new car or all the new buildings. It was very fun trying to be original, but also combining elements from prior projects.


Level ??? It is a reference to my simplest game design wise, Lieblingsmensch, and the main takeaway comes from the visuals. You drive along the roads like the gameplay in Lieblingsmensch in a Black and White area, yet the chromatic aberration I added, gave it some color in an obscure way. It is a weird level and I love it for that. It was the first level I finished design wise, yet the last to actually be done.


Finally, we have Level Training. It started as a foggy void of nothing, but adding elements from all levels really gave it a cool atmosphere. The one level where I quite literally just added lots of things, so it looks cool.


The Secrets

Despise the game being very linear, I still added some little secrets to find!


Missions

Every Level features a set of missions and completing them grants you new bits of lore in the "Info" tab in the main menu. You can hover over them to get more information about the player, the enemies and some gameplay elements, as well as the worlds. Hovering is enough for a report, but I wonder what happens, if you press some buttons?


Naros

You can find my character Naro in every Level!


There is not a reward for finding him, but if you think you have a keen eye, try to spot him at every level. Some are easier than others. Let me know if you think you got them all!


HUD less mode

It is possible to turn off the HUD while playing the game! It was a rather late addition, so I made it more or less of a secret, but feel free to use it yourself.

Press H 

Or Press the Left Stick on your Gamepad

and then you can see toggle the HUD on and off!


That are all the secrets I hid intentionally. 


The Final Thoughts

I went into the project with some fear. I feared I could not surpass my prior project. I felt Lieblingsmensch was my magnum opus, an authentic experience which was unique in many ways and what I wanted to do as a game dev and artist. I want to share my thoughts as a project and want to call it art. 

And not gonna lie... I still kind of feel that Zyklon as my grande finale might not have been entirely what I really wanted. I am happy about my game, I think it is cool as heck and I love how I added everything I have learned in this encore. It is the accumulation of why I am here now, hence why I feel like this was not the main event. It is the end of my journey, and it was really the way all along. That is the big part. 

This might be my final game for a while now and the end of an era. I won't stop creating, but I am on a split path about what I will do in the future. Everything is possible and this was the end of a chapter in my life.

It is always hard to find good final words, but I think it all goes down to:I am happy that I have tried to be a game dev and I will try to continue being one, but maybe life has something different in store for me, and I am grateful to all of you who play my game and support me in my journey.

Thank you c:


- Draco

Files

Zyklon.zip 321 MB
46 days ago

Get Zyklon

Leave a comment

Log in with itch.io to leave a comment.