As I hope you already know, Immortal Redneck has some sense of verticality. The game’s rooms are designed by the team, but an algorithm randomly placed them each time you start a level. The case is each rooms has platforms, stairs, moving parts and different heights all around. For that reason, we had to nail the monsters’ movement. We decided to make a stop and take a good look at how they are moving and acting before introducing more enemies and more rooms. It was really worth it and not as hard to do as we initially thought.
Every 3D moving object that has a wall nearby, no matter the game, will be trouble. We tried to make designs and structures that could avoid most of these problems, but’s it’s unavoidable. For example, the warrior’s maze getting through some places because it’s a little apart from his body. It’s something we can live with, anyway.
The Warrior not jumping down a ledge to attack you, but going down the stairs, was something we could not. That’s one of the first problems we solved because it was annoyingly obvious.
It’s necessary to point that not all enemies need to jump to you upon sight. An Archer doesn’t need to be in front of you to shoot, and being above it’s an advantage for them. The same with other ranged creatures. A physical, melee type of enemy will jump down to try to hit you as fast as possible, following the fastest path.
Also, we had to improve how enemies understood each other. There’s some stuff left to do about this particular area, but the fact that they collide and obstruct each other was easy to solve and we had postponed it enough.
Making the jump
We built a tool to make walking enemies jump down a ledge. We dedicated some time to it because we wanted it to be sophisticated, but easy to use, and we think we achieved that. His main function, anyway, is to figure out the exact positions creatures have to jump from. Some of those had to be made by hand due to some complexities, but most of them worked on the fly thanks to the tool.
So the tool makes the hard work and finds out the edges on each plane or object (like a floating platform), no matter if it’s some stairs or a ledge in the room first floor or second one.
Also, the tool determines a initial jumping point and a final one, creating an extra link for the object (enemy) that’s moving vertically. This particular aspect of the whole jumping process is really helpful when we started making the falling down animations for each creature, something that it’s taking some time.
Here’s a comparison between how the warrior fall down without that animation and with it. The movement it’s not final. We’ll make it a little more complex so you notice a little more feedback and a more natural reaction when he touches the floor. Thank god we don’t have those many enemies yet, because we didn’t animate them to do this in the beginning. Silly us!
Also, we love how falling and moving is looking, no matter the situation. Look this beautiful thing. The tool really is a wonderful thing because it makes this look really natural.
Another aspect of the enemies’ movement that we improved is their still pose and how they interact with each other.
In the beginning, one archer could block a warrior’s trajectory because it stood still in front of him before shooting you. It was a stupid problem, but it was actually a very big thing if. This happened because the enemies charges towards you in the shortest path available, which normally is a straight line. If something is in that enemie’s way, we had a problem. Look how ugly it looked on the stairs.
We solved this by making a hole in the mesh each time a enemy stopped moving. Sounds silly, but works beautifully.
When an enemy ‘notices’ that empty space in the mesh, the creature will figure out a new way to reach you. And since each enemy is programmed to follow you through the shortest path, they will change their course just a little so they can avoid it the empty space in the mesh and charge again towards you. It looks really natural, don’t you think?
Before implementing this, we considered making different points around the main character so enemies would focus on different points while moving and attacking. It was a little problematic and this other solution we did was just simpler and more effective. We love it when one solution actually solves several potential problems.
If you notice it…
So that’s how we solved something that most players wouldn’t really notice the first time unless something really messed up happened – some monster getting stuck into a lamp or a door while jumping, or else –, but that a trained eye would catch easily. And when your game trusts that randomness and repetition mechanics will get the player hooked, everyone playing Immortal Redneck would end up noticing this little things.
We want our game to be silly and funny, but not in a Goat Simulator way, where everything fails around you and you laugh at it. Quality and presentation can be really different depending on the game – Goat Simulator is perfect in its own way and it’s great –, and we chose to build a neat experience that, even if our resources are limited, seems solid and unbreakable to the eye. Something as silly as an enemy not going after you the way you understand it should can really break your fun.
PD: We are testing the game’s first sound effects and music. Will talk profusely about them in the future, but enjoy them anyway!