PS1 Tomb Raider mechanics?

I’ve been using UE4 for about a year now and have been working with a small team to try to make a game. It’s a survival horror/adventure/puzzle game called “Return To Me” which we plan to release on PC. No character models have been made yet as we’re still trying to get the demo out in order to increase our team. The demo itself will be entirely in first person but the main game I want to have toggle between first and third person to navigate obstacles.

A few weeks ago I had the idea to imitate the gameplay style of the old PlayStation Tomb Raider games with sliding slopes, buttons and levers, various traps, and having to climb obstacles to progress. With me being a beginner in the whole world of game design I honestly have no knowledge of any of this even being possible in Unreal 4, nor any idea of how to actually go about implementing mechanics like the ones I described.

For slopes, once you land on them you would immediately begin sliding down at a constant speed, being able to leap off at any point in order to grab a nearby ledge before falling down. If this is not possible I might have to settle with QTE’s to achieve this, even though I despise them.

For general navigation I want to have the same movements as Lara did, tapping backwards (S or down on the D pad/analog stick) to make her hop back a set distance, running and the various ways to jump either from a standing state or a running state.

I’m not asking for a tutorial, I just want to know if these things can be done; I’m currently looking for an experienced programmer who can assist the team in creating the game. Perhaps we’ll find one after the demo is released, and maybe I’ll make a gameplay concept video in order to show off what I want to do.

Are these mechanics at all possible in Unreal 4?

Sure, all of these things are possible in UE4. However, what you’re describing is a very customized movement system. The movement system that comes with UE4, UCharacterMovementComponent, is very good and has a lot of features. However, it’s tailored for games that play more like Unreal Tournament, Gears of War, and other games in those styles. Of course, you can customize it and change how it works (and enable/disable features), but the mechanics you’re describing for your Tomb Raider-like movement are specialized and could not be accomplished by simply tweaking CharacterMovementComponent settings.

The way I would do it myself would be to write my own movement component class instead of using UCharacterMovementComponent. However, implementing character movement is a non-trivial task. You have to handle things like checking collision with the environment, calculating friction and sliding, measuring angles of surfaces that are being touched, etc. If you want the game to be networked, you also have to use discrete timestepping and extrapolation/interpolation, timestamps for communication, rollback/playforward, etc.

If I was in your position with trying to make a demo with some of these Tomb Raider movement mechanics and didn’t know how to write this myself in C++, I would start in Blueprint with CharacterMovementComponent (it comes by default on any ACharacter subclass you create in Blueprint or C++) and then use the ‘custom’ feature of it. Basically, CharacterMovementComponent has different modes it can be in (walking, swimming, flying, etc.) but it also lets you have your own custom mode(s). You can access this in Blueprint as well as C++. So, for example, if you wanted the sliding-on-slope-with-jump mechanic, you could tag certain surfaces in your map with physics materials and then the Blueprint for your character, check for when your character steps on top of a surface with that physical material. Then you can switch the CharacterMovementComponent into a custom mode, and handle pushing your character down the slope at a certain rate using Blueprint logic (and handling the special jump for when the character presses jump, etc.)

I believe there are several Blueprints available from the UE4 community which demonstrate extending CharacterMovementComponent like this, adding features like ladder climbing, etc. Good luck.