With this project, I look to go in depth with the relatively new ProBuilder tool that has been implemented into Unity while also refining my Systems Design and Level Design skills. In order to do so, I'm creating an open-world-style wall-jumping platformer, allowing me to build and level design with both vertical and horizontal movement in mind while also putting the emphasis of the player experience on movement.
In Hue-Man (name pending), the player lives in a bleak, grayscale world. Bring color to this world by running along all of its surfaces, leaving bright colors in their wake!
Of course, changing a whole city won't come without a few bumps along the way. Turn enemies to your side by giving them a colorful complexion and pave the way towards a brighter future!
First of all, I wanted to get a wall-jumping mechanic I was happy with. The one I started on is the one to the right - where the player must point to the exactly location they want to jump to, then upon pressing a button will dash through the air towards it.
I started with this one for two reasons - it allowed for precise jumps and it was, frankly, the easiest and most intuitive for me to build right off the bat.
However, this one ran immediately into a fa big problem - forcing the player to look at a point doesn't allow them to easily do other things while wall running. If they had to, for example, shoot paint at an enemy, they would have to flick the pointer to the enemy before quickly flicking the pointer back to the location they wanted to jump to. This, while possible, creates a lot of quick movement that only gets more frantic with more enemies or faster wall-jumps. And that, in turn, will lead to just frustrating mistakes. And if the player is on controller as opposed to keyboard, then it may just be far too clunky.
For painting, I decided to use an extension from the Unity Store called InkPainter. The way it works is usually that you point your cursor at an object and left click to begin painting it. However, I repurposed it in order to paint on contact with paintable surfaces. With InkPainter, I can also make the pain drip down surfaces as well and, of course, customize colors easily and through things like triggers and such, allowing me to choose my colors I want to paint for any surface.
Below is an example of it working in action.
And so, I went to this next one. In this prototype, the player automatically moves from point to point on the walls whenever they press the wall jump option. In context of the game, the player would be going through painting one block at a time before advancing to the next block.
Seeing as this game is meant to be free-movement, I think the problem with this one is obvious - putting very rigid, on-rails movement in a free-moving game just will not mesh well. It would be like if every time you tried to swing around the city as Spiderman, you had to go the exact same path as before. So, this one got very quickly scrapped.
Then that brings me to my last wall-running prototype (below). When the player connects with the wall, they run in a straight line. When they jump off, they have full movement in the air, which they can use to land where they want on the wall. On top of that, I added the ability to turn around during a wall run just to add some extra movement options in there.
If I'm planning to make the game open where the focus of the "fun" is on freedom, then I want to give the player free and smooth movement. On top of that, this didn't have the same problem as the 1st prototype where you would have to move the mouse around. Instead, the player could do any sorts of things as long as they focus their movement on the wall-jumping. This not only would feel smoother to the player, but also opens a lot of design space, allowing me to iterate on the gameplay easily with less worry of player limitations.
First, I need to of course combine these two and ensure they work together, which comprises mostly of changing some tags and linking a couple scripts together. I also want to make some changes to physics to allow aerial movement to be smooth, giving the player an ample amount of time to choose where they want to land on the wall.
Once those systems are in a workable state, I want to jump into ProBuilder and begin building the city block-by-block. At that point I will have it be tested to ensure it is all feeling smooth and iterate on the systems and level design accordingly.