This is a project to try and replicate a system from another game and implement it myself. Specifically, I wanted to replicate wall walking/climbing, something I have seen in another Unreal 3 game.
I started this project in order to try and replicate a cool system that I saw in another game. I decided this was a good system to try and implement because seeing and replicate a system is a good programming exercise and wall walking in particular is something that I’ve seen several people want to implement but not know how to. It is also visually interesting and will attract the attention of both programmers and non-programmers.
Doing this project allowed me to get experience with a part of Unreal that often doesn’t get directly worked with very often, the various physics states. In particular it involves a lot of use of a physics state that is only used for very special systems, Spider physics. Spider physics was used for modeling the behavior of spider mines in Unreal 3 and essentially makes an actor stick to the nearest surface. Its unusual nature makes it very specialized but it is exactly the behavior necessary for wall walking.
The main thing that I learned and the main problem during this project was linear algebra and vector math. The problem of how to adjust vectors and directions when “up” is an arbitrary direction and how to translate a camera vector onto an arbitrary plane caused me my biggest headaches. In the end I had to review several linear algebra concepts like vector projection, and cross products. Vector math has always been a problem for me and any work that improves my knowledge in this area is good for my development. In addition, for this project I implemented a free cam and pawn movement relative to the direction of the camera. Although this isn’t a complex problem, it is the first time I’ve had to do I and have the experience of doing it now.
Basic Wall Climbing Mechanics
Roof Walking Mechanics
Climbing on Meshes and Changing Climbing Behavior Based on Orientation
Climbing in a Real Map
|MovementPawn.uc: The Pawn class for this project. Mostly responsible for doing checks on the angle of the floor.||SelectShow>|
|MovementPC.uc: The Player Controller class for this project. Calculates the direction the pawn should face and what direction it should move.||SelectShow>|