DEVLOG 0 - Two Years of Learning: How I Found the Path for "Returner"

After two years of development, I’ve finally found the right path for my Metroidvania, Returner. In this post, I break down why I moved away from being a "Hollow Knight clone" to focus on a unique lunging and enemy possession mechanic. I discuss the challenges of character controllers, how I simplified enemy "steering" to keep gameplay fast-paced, and my solution for infinite possession time to give players more freedom.

Two years ago, I embarked on a journey I had no idea was going to take me this long, but here I am 2 years after with a clearer path than I’ve ever had.

I’m making Returner, a Metroidvania game where you can possess any enemy and make use of their abilities for combat and traversal. So, how did I get here?

Moving Past the "Hollow Knight Clone"

OG subscribers of my channel must have seen the video of a Hollow Knight clone I made. I mean, yeah, it’s that obvious it’s a clone. The problem with making a clone is that it can never be like the original. It’s almost impossible to make a better Hollow Knight than Team Cherry, especially if you are a solo dev like I am.

So, I’ve spent the last 1 year figuring out the best direction for my game that’s good enough, different from Hollow Knight, and brings something new to the Metroidvania genre. Here is the progress so far.

The Main Mechanic: Lunging

The main mechanic of my Metroidvania game is Lunging. It is a special ability you use to possess enemies for combat against other enemies or for difficult traversals.

I think enemy possession is a really fun idea that doesn’t get used a lot in video games. Imagine a scenario where boss adds are no longer a pain in the ass, but a tool you can actually use against the boss in combat. I really think that will be fun (Beastfly, I’m looking at you).

The Problem with "Total Control"

The problem with this idea is that making it fun and robust enough is a huge undertaking. Imagine this: you have 50 enemies in the game. Some move horizontally, some vertically, some both. You have flying enemies, hopping enemies, swimming enemies, enemies with weapons, enemies that detonate on contact, stationary enemies, and so on.

Just imagine how complicated the character controller will be if you want the player to be able to control all these enemy types in a fun way that does not feel half baked. It’s possible if I want to release my game in 10 years. Apart from the fact that it’s a pain in the ass to develop, I also don’t think it’s going to be much fun for players trying to learn and master 50 different controls and abilities.

The Solution: Steering the Chaos

For the past year, I’ve been prototyping different ideas on how to make this work and make it easy to set up for new enemies. I’m happy to say, I think I’ve found a solution, well, at least until I get feedback from the first playtests that will be coming up by the end of next month.

What exactly is the solution? Instead of making the player take total control of an enemy when it’s possessed, players instead have the ability to steer enemy movement and activate a one time enemy ability.

Think of it this way: you are suddenly able to take control of a raging and berserk zombie in World War Z, but you can only steer its direction while running or activate its special explosion ability. It might sound restrictive, but I think this is the kind of interaction that encourages the fast paced gameplay I want for my game. When you possess enemies, it’s like a temporary infection that turns them into the infected Runners in The Last of Us, driven only by their need to attack others, even other enemies, with the only difference being that the player has control on the direction of their attack and when they attack.

Why is this simpler than total control?

  • The Berserk State: Most enemies now have at least one common possession state across the board, which is the berserk state. Once you possess this enemy, they move exactly the way they move while not possessed, except faster.

  • Predictability: Players can easily predict the actions and abilities of enemies based on their idle state and combat state.

  • Simple Controls: Players mostly have to use the direction buttons to drive the enemy and the interact button to use their special ability. There won’t be any need to figure out if the enemy can jump, swing a sword, or dodge.

  • Tiering: For deeper gameplay, enemies can easily be tiered up. Lower tier enemies can be much more receptive to possession, while higher tier enemies are much more resistant.

  • Reuse: Enemy states and animations can easily be reused for their possession state.


Another Use of Lunge

The Lunging mechanic is not only for enemy possession; it also works purely for movement purposes. It’s an equivalent of a dash in other games that moves you faster in a particular direction. I initially thought about having a special dash ability, but I feel like that might be too confusing for players, having two mechanics that essentially do the same thing.

Solving the Resource Problem

One major downside of lunging is that each lunge you attempt uses the lunging resource. Lunging costs 2 resources, and at the start of the game, the player only has access to four of those resources. That means the player can only use the lunge twice without hitting an enemy before their resource is depleted.

Imagine this: you are in the middle of a difficult platforming section and you run out of resource; now you are stuck in an impossible position that requires you to reload the game. For such a core mechanic in the game used for traversal, this can be frustrating. That’s an experience I don’t want for my game.

The Fix: My solution for this was to automatically replenish the first two lunging resources after it’s depleted to make it impossible to run out of it. As you progress in the game, I may also add some upgrades that make the lunging resource replenish faster.

Infinite Possession

Possession as it is currently is already constrained, and one thing I have done to allow the player more freedom is to remove any time limitation. Usually in games like this, there is usually a countdown for how long you can control enemies or an actively draining resource. In Returner, it’s not like that. Once you spend your resource to possess an enemy, you can possess them forever until you collide with something, use the enemy's special ability, or exit the possession yourself. I believe this is much more fun than stifling the player's freedom through time limitation.

Note: There might be specialized enemies like bosses that resist the player possession control the longer the possession, but for the lower tiered enemies, possession time is infinite.

What’s Next?

The lunging and possession mechanic is a complex mechanic under the hood that leads to a lot of fun gameplay, and as time goes on, I’ll be exposing more of how this mechanic works. If you want to experience it yourself, join my Discord channel to learn when the playtest starts.

That will be all for this devlog. Thanks for sticking around to the end. In the next devlog, I’m going to be talking about the art and animation process that has made it easier and faster for someone like me with no art background to be able to make manageable art for my game.

See you next time.

Stay Updated with the Development