
Dishonored Prototype
This is my creation of some of the game systems found in dishonored. The project was created in unreal using mainly c++. Care was taken to make the code maintainable and reusable, while also exposing the necessary components to a desinger. Right now I've got a solid base that can be built upon and I might in the future. Animations were done by hand - see what i did there - so quality may vary.
​

Ability Manager Component
Any player character can store an ability manager component. This component stores an array of abilities to start with, and an array of current abilities. All abilities inherit from the ability parent class and override as required - lots of nice polymorphism in here. Abilities can easily be added to and from the arrays from the editor. The manager initializes the abilities in world and add or removes them to the UI. It will also handle any weird logic where two abilities can activate at once.
Blink
First thing to note is that the blink in dishonored is not a teleport. The character moves very quickly to a desired location. To achieve the affect of this the players location and camera FOV is lerped using a timeline. Since we are not teleporting, it mean we cant fit through tiny little holes. This was accounted for by using a spherical sweep (about the characters size) instead of a simple line trace. The final location needs lots of constraints to ensure the players isnt stuck in some wall, so I did some tangent math with the players bounding box and it works flawlessly.


Dark Vision
This is just a pretty basix x-ray vision implementation. Objects are written to a custom depth buffer and are displayed ignoring the scenedepth. A component with a highlight enumerator handles the rendering parameters and the object's type. The look of the ability is achieved using a simple shader to best replicate dishonored's.
Possesion
For possesion a line trace for possesable actors is shot down the players line of sight. If a possesable actor is hit the possesion VFX will display at the possesion socket on the actors skeletal mesh. When activated the player camera will blend to the location of the pawns camera and then posses it. When dispossesing a stumble animation is played into a ragdoll physics simulation.


Windblast
For the windblast a bounding box is used in front of the player. This returns all physics objects. Regular objects have an impulse applied to them and are blasted away. If an object is a skeletal mesh it is first set to radgoll before being blasted.
Timebend
Unreal makes time manipulation stuff really easy. Whenever the player activates the ability the global time dilation and camera saturation are lerped. The players personal dilation is adjusted so they can move in regular time. Theres some weird edge cases that can happen with the dilation so the manager notes when this is happening. For example the ability wheeel slows the world down normally - however this doesnt happen when timebend is active.
