Just an update on the development of my 3D Platformer prototype. I've been mixing between working on this and working on my essay so this is around 6 days of work.
A very quick "story" idea for the player character's motivation. You play as a star kid who falls from the sky due to an evil doer opening up a black hole and knocking you away from your constellation. You land on a nearby planet and must find items known as "Aeons" to power you up, increasing your jumping ability in the HUB world. The ultimate goal is to gain enough power to be able to jump back into the sky.
I'll start off with talking about the gameplay mechanics I've implemented to the player character. I'm using the default Unreal Guy for animations right now but I will be creating my own quick character along with animations soon. So some of these may look silly but they work just fine.
Ground/Air Speed & Auto Adjusting Camera
Basic Movement
First off I messed around with the character movement on the default third person character. The default character starts off with the bare minimum in terms of movement and controls. I've changed a lot of values for the movement such as max movement speed, acceleration, ground & air friction and air control as a few examples. With these changes I believe I've made a good start to creating a character that is fun to control in the air and on the ground, but other people play-testing and giving feedback will determine whether I change it at all.
Auto Adjusting Camera (Shown in GIF above)
After this the next thing I went onto was the camera system, I'm not sure why I jumped straight to this but I just hate the default unreal camera and wanted to change it pronto. I've made the camera now auto adjust dependent on which way the player is moving while also allowing them full manual control with the right analogue stick.
Types of Jumping, Weight & Gravity
Weight & Gravity
Next we have one of the most important elements of a 3D platformer, jumping. First I messed around with the gravity and max jump height values to get a normal jump height I was satisfied with along with setting a "jump max hold time" to allow the player to jump higher or lower dependant on how long they press the jump button. After messing around with falling speeds I noticed when jumping off a high platform the natural behaviour of gravity causes you to fall faster and faster which I didn't like. So I made it so gravity would be normal during a jump, the player will still fall at a fast speed but after they have fallen for a set amount of time, gravity changes to 0 so the player falls at a constant speed. This feels much better because the player has more control over their aerial movement as they're falling, whilst keeping a sense of weight to the character. Nothing makes a 3D platformer worse than a "floaty" character.
Jump, Double Jump, Triple Jump
Following previously done before practices in games such as Super Mario 64 I've included all sorts of different ways for the player to jump. Shown in the GIF above is straight up Super Mario's "Triple Jump". It functions exactly the same as it does in Mario, if you jump as soon as you land on the ground from another jump, your next jump will be higher (double jump) then if you do it again as you land from a double jump you will perform a triple jump which will give you the maximum height possible from a jump. I wanted the triple jump because it has an almost majestic flow to it that makes jumping feels satisfying as well as providing a skill ceiling for players who can successfully pull off quick triple jumps in succession. I wanted to stay away from a traditional double jump (when the player jumps in mid-air) as I believe this kind of double jump has the potential to trivialise platforming.
Other types of jumps are performed by chaining other movement mechanics together, I will talk about those kinds of jumps when I get to it.
Crouching, Crawling, Super Jump, Drill Spike & Drill Jump
Crouching
Once you press the left trigger the player character will crouch, when I say crouch right now I mean the collision for the character gets smaller, no animations to go with it right now.
Crawling
While crouching you can still move around to crawl. You can crawl through tight spaces that you wouldn't be able to go through without crouching.
Super Jump
If you press jump while crouching you will "Super Jump" a super jump is a higher jump than a normal or double jump, but not quite as high as a triple jump. However when super jumping your aerial speed won't be as fast due to crouching slowing down your movement speed and you won't be able to gain enough acceleration after the jump. So this move will mostly be used for gaining vertical velocity rather than horizontal.
Drill Spike (Shown in GIF above)
Next we have a move that I will call the "Drill Spike" this move is performed by pressing the crouch button in midair, the player character boosts them self up a little before crashing straight down at a high speed. (Imagine the animation being the character preparing to spin and then spinning like a drill as they fall) This move will be used as an attack will be be used to defeat enemies, smash objects or weak structures as well as providing the player a means to reach the ground quicker.
Drill Jump
Lastly the "Drill Jump" will be a jump that the player will perform by jumping as soon as you touch the ground from a Drill Spike. It functions the same as a crouch jump in terms of height, however you will be moving a little faster in the air as well as being an active hitbox allowing you to attack enemies and destroy objects in midair (Animation will be the player flying through the air like a drill)
Slopes & Momentum
Taking a page out of Sonic the Hedgehog's book is momentum based movement on slopes. Pretty self explanatory, going up slopes will slow the player down a little (emphasis on a LITTLE, higher slow down values annoyed me), whilst going down them the player will speed up. The cool thing about this momentum is that if you jump you will retain your current momentum, so if I were to run down a slope, gain speed and jump I will gain way more distance than I would moving at normal speed.
Comet Dash
Comet Dash
The "Comet Dash" is a move that propels you forward at a high speed while giving you a tiny bit of vertical height. You can use the comet dash on the ground or in the air. While comet dashing you will have very little control over left and right movement and if you crash into a wall while dashing you will bonk into the wall and will be unable to move for a second or two.
Comet Cancel (Shown in GIF above)
While Comet Dashing you are able to cancel the dash by jumping. This can be used to regain aerial control after dashing forward as well as getting a little more distance from your dash and avoiding bonking into a wall.
Comet Jump??
I haven't implemented it yet but I want to add another use for this mechanic, I want the player to be able to jump as soon as they land on the floor from a comet dash to be able to perform a jump with a lot of horizontal velocity and speed.
Ledge Grabbing
Self Explanatory, when you can't quite make a jump but are close enough the player character will grab onto the ledge of the platform. The player can move left and right while hanging, I made sure to make "Ledge Shimmying" quicker than normal as a slow shimmy can really kill the pace of a game and it's also just boring. In terms of how to handle the animation of a quick shimmy, look at this gif on how the game "Darksiders" handles ledge grabbing (Quality is a bit low, but hopefully you get the picture), it's quick and looks cool, I'll be replicating that "run on the wall" kind of motion.
Homing Attack
Getting this to work was a pain, took me a fair amount of hours to get working properly. The Homing Attack is a move performed in midair after you press the X button. It will be used as a way of attacking enemies as well as enabling players to home in on objects to get past certain challenges and obstacles. I'm detecting if the player is within a certain radius, checking how many radius' the player is in and returning whichever target is closest to the player. After you press X you fly straight towards the object and bounce off of them upon impact. You can chain homing attacks quickly one after another as shown in the GIF above.
Collectables & Mockup HUD
Novas
I've added a two different types of collectables for the player to collect as a means to reward players for exploration and completing challenges. First up we have "Novas" which serve as a type of currency which will be used to purchase items down the line. I made a quick model for the Nova and made it purple to stand out from the rest of the world (not too hard with a black and white block map) once I add colour to the level I will determine whether I need to change the colour of the Novas or not. I will want them to stand out, attracting players to certain areas to collect them.
Hud
You've probably noticed it by now from all the other GIFs but I have a simple Hud at the top left side of the screen. Right now it shows the player how many pickups they have collected. I feel like I need to change the colour of the icons, they blend into the black background a bit too much.
Aeons (Shown in the GIF below)
Aeons are the objective collectables that the player must collect in order to "win" the game. Aeons will usually be rewarded to the player by completing certain objectives or reaching the end of platforming challenges. Aeons can also be discovered through exploration. Upon collecting an Aeon the player character will pose with the Aeon in hand and a text widget will appear showing the title of the Aeon you have discovered.
Future Aeon Idea (Not implemented yet)
Your Aeon count will directly impact the players jumping ability in the HUB world. The HUB world will be on a floating island just outside the planet's stratosphere. The gravity will be lower than usual here and the players jump height will be increased for each Aeon collected. The goal being to have enough Aeons to be able to jump back into space and return to your constellation.
A bit of a long post but that's what I have done so far, current tasks involve finishing building a level for playtesters to play around in, making ways for the player to take damage and die, along with a health indicator on the HUD.
Playtesters will have platforming challenges to complete, places to explore, stuff to collect, all that good stuff. Hoping to have this done by Friday, get some good feedback within the week and make some good changes to the game.