Second day of my Daily Challenge routine for game dev.
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:
Character Controller:
- Walk / Sprint transition.
- Comfortable Head Bob.
- Crouch stance with supporting animation.
- Some kind of Thief style "swoop".
- Ledge Grabbing (the hardest).
- Stealing mechanic.
Level Design:
- "Combo Style" movement (the environment feels incredibly natural to navigate. The player will be able to chain movements easily).
- Verticality.
- 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 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:
Character Controller:
- Walk / Sprint transition.
- Comfortable Head Bob.
- Crouch stance with supporting animation.
- Some kind of Thief style "swoop".
- Ledge Grabbing (the hardest).
- Stealing mechanic.
Level Design:
- "Combo Style" movement (the environment feels incredibly natural to navigate. The player will be able to chain movements easily).
- Verticality.
- 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.
LEVEL DESIGN
So ! This morning I created a layout for the main floor of the manor that the player is going to explore. This is a living document so I'll change it as I develop the level. Verticality will be best seen once the level is built in 3D (which I think I might start tomorrow).
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.
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.
TECH STUFF
So by now if you're using UE4 and been a previous UDK user you know that their power of 2 grid system is slightly broken. Central lines don't aline properly with the grid and the thing feels a bit like a mess. So instead of my usual Maya Grid Parameters (512 / 512 / 8 for example) I've converted those parameters to fit their new grid system. I use a lot of modular pieces so this part was pretty important. The grid should now follow these parameters:
Afterwards I started to work on the Pawn Class with movement logic. I used the Third Person blueprint example and adjusted a bunch of values to have a first person view. Pretty easy... The only annoying thing was the camera clipping inside the geometry (when totally facing a wall the camera would enter it). I fixed that by very slightly enlarging the root collision component and moving the camera component so that it's view is inside the collision component (demonstration in the little video).
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.
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.