July 01, 2012
I’m still working on my game for the moment. After fixing a lot a bugs/strange behaviors in the player movements (not everything is clean, but it’s better) I’m testing some new thing for making a Menu.
The player can now do a proper roll on the ground, with a check to prevent to fall in the void or hitting a wall. Of course, during this roll your hitbox is reduced which allow you to pass some obstacles.
For doing this movement I have also tried the root motion system of the UDK : the movement of the payer isn’t handled by the game physics but by the animation itself. Unfortunately, this system have too much constraints to be used is situations like that. Root motion is good for example when you want to pass up a cover in a TPS… but for a Roll which allow the player to manipulate it a bit it not at all a solution. Furthermore, root motion is not synced which gravity, which mean a roll in stairs will finish in airs.
So what I do is to play a roll animation on the top of the animation system while moving the player with a constant speed in a specific direction. The speed is just a push, so you can fall during the roll or being stopped by a wall. The player can even tweak the direction of the movement at the end of the roll. When I will get a clean animation I will make a video (currently the player go in the ground due to the hitbox reduction).
I’m also working on an automatic jump system like in Prince of Persia The Two Throne. The base is done, I need some animations. The principle is simple : when the player is near a hole and you press the jump button, the game will search for the next walkable location. If something is reachable, the player jump automatically. Until a few days ago I never suspected this behavior in Prince of Persia. This is so well done that you always feel to have the full control on your character. I suppose that a lot of tweak will be necessary to make the same feel in EXIL.
I plan to make a video in where I will try to do a breakdown of Prince of Persia The Two Throne. The last days I have replayed the game and noticed some news things. I don’t count anymore how many times I have finished the game… Best game ever ? 🙂
I have also started a new state which will allow the player to stand up on some ledges. Here too I need some animations, the base is ready.
For the menu, I’m focusing on the main menu of the game. The in-game menu will be a little different I guess, I’m still thinking about it’s design since there is not true HUD in the game. For the moment I have only the base : blending/fading between the background of the menu and a few effects coded. I need to add some buttons too. The game will handle mouse and xbox controller on the menu.
During my tests I met an annoying bug/behaviors. I can’t call this a real bug, it’s just a problem on how the post-process system works in UDK. The main menu in my game have a background image with a opacity which can change and show a 3D scene behind. The only way to handle this is to use a specific material inside your post-process chain. I have already done a lot of material effects for my post-process chains in the past, but never for displaying a clean image (often it was effect like water/bloom).
Here is a comparison between the texture in a tweaked chain (left) and the non-tweaked post-process chain (right) :
My current deduction is because of the UberPostProcess node, the global post-process chain is affected by the ColorGrading option of the UDK (this option change a little the curve of contrasts of the global frame rendered). It means that my texture is affected by this contrast/gamma change and lost its colors. My current solution is to change the layer where the Material Effect is rendering. Unfortunately, this make some conflicts/problems between my other post-process materials (for example my sharpen mask and my chromatic aberration affects the background).
Not everything is perfect. :\
Here is a tweaked version with some blending tests :
My recent progress compared to the previous month are way more better.
Being able to focus a few hours instead of a few minutes helps a lot ! =)