Search Unity

Question how to make a Tomb Raider - style traversal system . . .

Discussion in 'Game Design' started by vintage-retro-indie_78, Mar 17, 2023.

  1. vintage-retro-indie_78

    vintage-retro-indie_78

    Joined:
    Mar 4, 2023
    Posts:
    285
    been thinking a ton over how to make a Tomb Raider - style traversal, also climbing system, however it's not easy at all, not sure how to make something like that, or if it'd take a ton of system - resources, think overall the early titles in the series were good enough, and also have seen the stuff in other titles . . .

    right now know want a classic Tomb Raider - system, however not how to get started, not sure how to make the stuff, it's also over there having to be a ton of levels, and it has to work in all of them, so it's serious code . . .
     
  2. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,639
    First thing would be to break it down in to specific features that you want to implement.
     
  3. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,620
    By "Tomb Raider - style" do you mean being able to jump and grab ledges and handholds and hang from or climb between them? Climb ropes / vines, etc.?

    While I never polished it a lot, I made one of these quite a few years back. Here are some things which might help:
    - Consider the traversal part (rules about where you can and can't move) and the animation part separately from one another.
    - For the 'traversal' part, I had my character position and a number of (essentially) trigger zones around them. Each point that my character could climb on was described by an anchor GameObject in the scene with relevant info on it (ledge, handhold, etc.). So then my traversal rules largely become checks between these and my trigger zones. Some rules are modified based on player input.
    - The 'animation' part is then largely a feedback mechanism to tell the player what's going on with the traversal rules. For instance, if I'm pushing right and there is a ledge she can leap to, she puts her right arm out. If there is no ledge, then she does not put her arm out. This signals to the player whether or not it's safe to press the jump button. Both the animation and movement states can then be set based on a) current player input and b) current trigger/anchor interactions.
    - The animation part is also where we add a layer of noise so that it doesn't look like we're just lining up boxes and anchors. ;)
    - On the topic of noise, I expect that these games are also typically built do a grid, with things moved around within their grid cells afterwards to look more natural. This is for a couple of reasons. A big one is player communication, so that they know at a glance whether or not something is in range. Another is that it simplifies a lot of the design and implementation work.
    - On that note, don't try to code around every awkward edge case. Based on the needs of your game, come up with some design constraints which help you avoid issues which are otherwise tricky to design or code around or communicate to players. (When you start doing this, you'll notice that even big budget games do it all the time.)

    You may have picked up on this already, but making this work well isn't just a coding thing, it also requires a significant animation time investment, and working with level designers.
     
  4. vintage-retro-indie_78

    vintage-retro-indie_78

    Joined:
    Mar 4, 2023
    Posts:
    285
    not really sure, think perhaps need to make a feature - overview . . . :) :eek:
     
  5. vintage-retro-indie_78

    vintage-retro-indie_78

    Joined:
    Mar 4, 2023
    Posts:
    285
    sigh, been thinking like crazy over all this, for sure want all the features, perhaps better than anything, the problem barely know how to code walking - sim // also jumping . . . :( :eek:

    it's a really good question, definitely want the best traversal system, that also fits the genre, however it's not that simple, the animations also need to be good, there are also sound - effects . . .
     
  6. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,639
    A lot of games have traversal features that are really just cut-scenes in disguise. You press the "activate" button near a ladder and it plays an animation of the character walking over to the ladder and climbing on. When the player is in position then you can use up and down to climb the ladder but between the time you press the key and the time you get on there is no interaction, no input checking and there doesn't need to be.

    Same if you climb a ledge. It's mostly just animation. When you climb then your character ends up in a slightly different place than when they started but that's all that really happens.
     
  7. vintage-retro-indie_78

    vintage-retro-indie_78

    Joined:
    Mar 4, 2023
    Posts:
    285
    been thinking bit over this stuff, been learning how a few things work in Godot, and have figured how to make a raycast, and then make the character snap, or ' stick ' to the floor, or at least a collision mesh, was thinking that could be used to ' walk ' on ledges, or ledge - effects, the problem is that have no idea how to do jumping, and it's easy to find a tutorial for jumping, however the specific jumping in the first Tomb Raider - titles isn't that easy to find, or to get that right, idea is to start making retro content, and also bit tribute over those in #theory almost AAA stuff, anyway think it's a good idea to make a feature - list, the problem is wanting to add all the amazing features at once, or think it's too difficult, not sure, of course want the best, perhaps also custom climbing - system, there's also normal traversal . . . . :confused: :(
     
  8. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,639
    Imagine a simple game where your character is on a ladder. The only things you can do is press up to climb up, press down to go down, or just stay still by pressing nothing. The controller for making this type of game would be pretty easy to implement.

    Now imagine a platformer where you walk around and jump. It's more difficult to implement but for this there are lots of tutorials and example projects.

    Now if you want to make a platformer where you can climb a ladder, all you need to do is use both controllers. Just write the code that transitions between on controller and the other.

    Don't try to make one big player loop that does everything. Break it down in to separate modes or states.
     
  9. vintage-retro-indie_78

    vintage-retro-indie_78

    Joined:
    Mar 4, 2023
    Posts:
    285
    it's just very advanced stuff, think for my first goal perhaps just make this . . .

    level 1 :: walk, perhaps crawl
    level 2 :: open door
    level 3 :: jump
    level 4 :: ladder
    level 5 :: ledge, walk ledge

    it's just mind - boggling when one doesn't even know how to make a good jump - system . . . :( :eek:

    also, after thinking a ton over the stuff, it might be important to have a few ' states ' is_on_ladder, is_walking, is_running, or is_climbing, and then IF that is true, then have a specific controller, or something happens then, and then figure later when that stuff happens, the problem is want to code a jump, and also ledge - grab, and don't even know how to make a jump // and, #technically don't even know how to make the character stick to the ground, however know one could use a raycast for that, have made that in Godot, however need to learn how stuff also works in Unity, the most advanced have made is a TPS - controller, and then has raycast gravity, the problem is how does jumping even work, and if that's rather difficult, it's mind - boggling to try and add a ledge_grab, or ledge_walk system, and also wanting it to look good, or be optimized code . . .

    there's also a problem in that in later Tomb Raider - titles, more trying to make a tribute to the earlier content, one could jump, however not turn in the air, that's what want to code, however in the later Tomb Raider - games one could turn in the air, and it's all kinds of weird to figure what system to use over wanting to make a Tomb Raider - tribute, it's also a big decision how to handle collisions with walls, or other objects while jumping, trying to answer all these questions makes rather dizzy, think overall need to go with think one of answers here -- make a simple list, or feature - review, and then make one thing, perhaps for each level, focus bit more over having fun making a few simple levels over trying to code everything at the same time // epic-best climbing system of all time . . .