I got to start this update by saying that my favorite aspect of video games in general is the capability of moving in 3D space with great ease. Ledge climbing, sprint/slide, jumping, opening doors quickly/slowly and "verticality" are all components that make a game very enjoyable to me. This is particularly why Dishonored, Thief and Mirror's Edge are on my list of games I look up to when thinking about level design and movement in 3D space. So my next challenge is going to create a "Thief style" level where all gameplay components are going to be made by me (level blockout, level design and tech). In order to have a fun Thief Style level, I need an enjoyable character to control. So this is where UE4 comes into play. With blueprint I'll be able to code pretty much the entire game logic and create an enjoyable character controller. Here's a list of things I need to implement:
- Walk / Sprint transition.
- Comfortable Head Bob.
- Crouch stance with supporting animation.
- Some kind of Thief style "swoop".
- Ledge Grabbing (the hardest).
- Stealing mechanic.
- "Combo Style" movement (the environment feels incredibly natural to navigate. The player will be able to chain movements easily).
- Intelligent interior design (actual people could live in it).
- The environment communicates a clear story to the player.
- Exciting secret passages to discover.
- Communicate how evil and vicious the people living in the manor are.
I just want to say a few things that I thought of while designing the main floor. There's two bathrooms on opposite ends of the manor which is logical since you wouldn't want to traverse the whole floor to reach one in particular. So one is conveniently placed near the tea room, the office and the kitchen. The other one is a little more furnished to accommodate the maids (they don't have access to the one located on the second floor).
I thought of placing the office where the Living Room is, but I imagined the Master as a very concerned man and that he wouldn't want to be killed by an arrow (or something like that) while working long hours at his desk. That's why I placed him in a room without windows. The living room will have tall windows to symbolize the power of those residing inside the manor.
I want the player to think of the Master as a vicious man so most of the hidden and secret passages will have to do with something sexual or twisted. The more the player hates the people living in the house the less guilty he'll feel about stealing everything he sees.
Looking totally down made the camera clip inside the player mesh so I "visually scripted" the camera pitch to be clamped between -62 and 90 degrees (using the camera boom component as source to set the player controller's rotation). Still not perfect but that's going to be fixed with a decent sprint animation.
Had to learn about Blend Spaces for animation. I've set my walking speed at 310 and the sprint speed at around 630. The blend space needed to be edited so that a speed of 310 would generate a walking animation instead of a running one (blend space set by a Player Speed variable).
I then created a simple script for sprinting i.e. a toggle to switch between different player speeds that took care of modifying the animation (blend space).
I then spent some time looking around the internet to see how people did their head bob function. It was pretty necessary to have some kind of physical representation of movement since the player has no weapon animation to simulate movement (like in a standard FPS). Everything is done with a class called "Camera Shake". I made three different classes: one for sprinting, one for walking and one for strafing. The first two are activated whenever the player presses "input forward" and left shift triggers some boolean logic to switch between the different camera shake functions. I had to copy the "Camera Shake Walking" class and rename it to be usable whenever the player is strafing (still a bit strange to me). So the head bob is handled in every direction the player is walking and changes in intensity whenever he runs.
I absolutely need to find a decent crouching animation or simply learn A.R.T. from Epic (a very powerful tool for animation usable in Maya).
I shopped around for a ledge grab function, but the matter will require a lot of reading (raytracing, collision detection, possibly some dot product thingy to notice if the player is standing in front of a climbable surface). Lot's of work ahead.
So here's the progress... notice the terrible crouching implementation that will be fixed.