Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Z level integration and Movement overhaul #40392

Closed
ghost opened this issue May 9, 2020 · 9 comments
Closed

Z level integration and Movement overhaul #40392

ghost opened this issue May 9, 2020 · 9 comments
Labels
<Enhancement / Feature> New features, or enhancements on existing Mechanics: Character / Player Character / Player mechanics Mechanics: Effects / Skills / Stats Effects / Skills / Stats stale Closed for lack of activity, but still valid. <Suggestion / Discussion> Talk it out before implementing Z-levels Levels below and above ground.

Comments

@ghost
Copy link

ghost commented May 9, 2020

Is your feature request related to a problem? Please describe.

This is related to Improving "climbling downspouts" #38472. Though a general solution and integration with the other already existing aspects of the game seems fun and prudent.

Describe the solution you'd like

A movement skill that connects balance, vaults, climbing, and perhaps swimming. These can be divided into professions over time.

Falling mechanics such as being influenced by skill and what is ( on ) the ground like sand and a mattress compared to concrete and broken glass.

Monsters that can climb such as feral runners using downspouts much like half life fast zombies can, or insects that can go up seemingly straight walls.

The connection of roofs through horizontal pipes, or taught/slack lines set up by the player.

Let ropes be tied to things and used for climbing down buildings more safely.

General climbing such as bridging between two walls and statically climbing things like rock walls are window frames.

Mutations that help with this.

Vertical parkour, such as being able to jump. from a roof into a ( hopefully ) safe roll past enemies, or being able to run up a wall with sufficient momentum. Similar to dwarf fortress for example.

Describe alternatives you've considered

A simpler solution would be to just hardcode these interactions and traits. It would be faster and still have a lot of the enjoyment. This can be a nice intermediate step, or it can stop there, it depends.

Additional context

I think there is some potential for expanding the realism and the fun with this one. Currently it seems that the heavy survivalist who has all of the tools is really the best set up to have. I think expanding these mechanics allow for a lighter, quicker, and fragile character to be played for some variety, while also balancing the super safe roofs as they stand right now.

I would be willing to contribute code to this eventually. I say it like this because It would be better to become more familiar with the codebase by doing some smaller bug fixes than to immediately jump into a large long term project.

@kevingranade
Copy link
Member

I'm in favor of most of the individual features you mention, but my one issue is I think a singular athletics skill is problematic.
I think a tiered thing where you have athletics plus a number of more specific skills (climbing, jumping, swimming, running) might be called for, but "swimming practice is just as good at learning to climb as actual climbing practice" really bugs me.

@ghost
Copy link
Author

ghost commented May 10, 2020

Yes, this is sensible. It seems to touch upon the discussion held on issue Proficiencies #31610.
It would be great to have a large, overarching skill like athletics that could determine how PCs move entirely, from jumps to running to swimming and climbing and so on, with some subskills that help with others.

However, a phase 1 implementation of this skill should be no means contain swimming. The only thing that swimming would help with in the land based tasks is general conditioning and kinaesthetic sense, which already exists in the form of the dex stat. We can just pop on stats through skills if we wanted that to have an effect like that. Any speculation on how swimming would turn out on such a skill system and with the ocean stuff is out of the scope of this issue, so I'll leave it at that.

I'm not sure what the split would be for a set of new skills. I don't really want to have to add 4 specific ones and an general athletics one because that would get cluttered very fast and likely be unbalanced. Especially for stats through skills if we're trying to take that into account.

Like you mentioned, athletics can be like melee or marksmanship, which gets divided into climbing and parkour. Climbing does static things, like balance and holding on to a wall, and so on, and parkour does dynamic things, like jumping, vaulting, and rolling. That seems to be a pretty manageable set and doesn't sacrifice too much.

That can mesh well with some falling mechanics because learning to climb tells you little to nothing about falling.

That brings up collisions with monsters. What happens when a player falls on one? I'm not actually sure. I'll investigate and get back. But this could be used as grounds for a more granular speed/momentum system. Now you can stop running whenever you want, including right up at the edge of a roof, and crashing into someone could push them back a bit, size allowing. Falling being a danger or a tool feels great to me. A phase 1 implementation here would be to add in a new object attribute like Cushioning 1 or something, and apply it to things like pillows and mattresses, which get checked for during collision. Anything else just makes things worse, let's not worry about glass shards at the start because that sounds like a massive task. I would like very much to have different terrain interact with falling as well, but I think that would require quite a bit of adding aspects that don't exist yet. I suppose many constructions do have a general hardness, but not really for a regular dirt tile, yes? Though it can be exploded so maybe not. This is why I'm not doing this quite yet!

Anyway, player weight gets plugged into some reasonable formula that takes into account distance and all of the skills and such. Falling onto a monster could actually be a good thing, say, if you have your feet land on the shoulder of a zombie, that breaks your fall from one story pretty well. Failure states could be divided into hits, which reduces damage, grazes, which damages to a lesser degree and barely affects the fall, to a complete miss which just incapacitates you next to hostile.

I suppose this could be divided into intentional and accidental falls, or jumps versus slips. Intentional falls assume legs first and have skills taken into account, but slips can get even a grand master terribly hurt, so don't sprint on wet roofs. That's all for the farther future, though, a whole momentum system is complicated.

Another target for a phase 1 would be to just allow planks to bridge a one tile gap like they do for pits. I guess we could allow certain furniture to be placed on open tiles given some conditions, in this case filled floor tiles to the cardinal directions? That would be easier than finding out where the rope would go for a building, plus it leaves the possibility for grabbing or smashing. Not sure if having things in an essentially free suspension is a good precedent though.

@Night-Pryanik Night-Pryanik added <Enhancement / Feature> New features, or enhancements on existing <Suggestion / Discussion> Talk it out before implementing Mechanics: Character / Player Character / Player mechanics Mechanics: Effects / Skills / Stats Effects / Skills / Stats Z-levels Levels below and above ground. labels May 11, 2020
@ghost
Copy link
Author

ghost commented May 11, 2020

#40427
Not absurd on a general level. Setting a plank against a wall as a climbing aid is done all of the time. Well maybe for martial artists and tracers. It is certainly possible to cut down a plank, put some hinges on that, and carry it around. Even add little notches to put your feet. Still very susceptible to falling over, and certainly shouldn't be .5L of volume. This is where the static climbing skill would come into play. Especially if you can't get a grip on a smooth and flat resin wall.

Vehicles being climbable makes sense, but maybe not horizontal spikes. Really only as a jumping aid to cling on to the roof's edge. Vehicle roofs can be the things that determine Z level, that is reasonable. Not sure what would happen when it starts moving though, which can happen with the autodriving things in the game.

I'm sure it would be very cool to stand on a remote controlled ram and use that to jump across a huge gap, but that sounds like player momentum again. Really, falling is just crashing but 90* away, though so that isn't too crazy further down the line.

Anyway, this points the the fact there needs to be some kind of climbing state, one that occupies the hands and doesn't let you climb up holding an engine or something, and that would distinguish between standing on a vehicle and being influenced by its movement versus holding on to a wall over it. Also something that would be the long term fix to #39245 .

Pulleys already exist to vertical item transport it totally feasible. A good ole rope and bucket combo and there you go. Greater vehicle systems I'm sure can be made for heavier and larger things later.

@stale
Copy link

stale bot commented Jun 10, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

@stale stale bot added the stale Closed for lack of activity, but still valid. label Jun 10, 2020
@ghost
Copy link
Author

ghost commented Jun 10, 2020

Currently have some applicable field work coming in with regards to furniture and how that interacts. Not ready yet.

In the meantime, here is the formulation for ropes. There is already the jumper cable which can attach to a vehicle and a player, provided they have the proper CBM that is. Rope should have a set of anchors - It can be tied to some furniture like poles, boulders, perhaps even walls if given enough length. ( this means longer length ropes will have to be worked out, but that's the least of the changes that would be required ). This can be wrapped around the player in a suitably safe way, like the standard rock climbing gear, or perhaps at the start a rather unrealistic around the torso or something. Structural integrity is beyond the scope of this so that won't be looked at here.

The reason is that falling from a great height is going to be a problem no matter how much cushion is on the ground. After a few Z levels, that's just not going to be practical or really even come up as an option in regular play. But with this system, there would be a way to have a ( somewhat safe, skill dependant ) method for when climbing fails, which it will a lot at the start. Plus how else would you set up a rope to balance on if you can't get the end over a gap? I don't have any practical ideas for some crazy machine to do that, so this seems most feasible.

This ties into climbing and player momentum. I think it would be prudent to separate a wall into two sections - the wall and the roof. Or floor, much like it is set up already. Without any help, to climb over a wall, the wall needs to be climbable, which is to say has outcroppings like a stones or notches or the like. This would require a tag of some kind, which would be tedious to implement, but I don't see another way. Once in the climbing state ( probably done by pressing a new key that requires hand(s) to be open ) the skill gets checked ( maybe a difficulty assigned within the tag? that's more work there, plus it is not easy to determine a single number for this. I digress ) and the player can grab on/anchor their hands to the floor/roof and pull up.

Let's say there are two skyscrapers with metal poles surrounding them, and skinny ledge connecting these. The wall itself is smooth so that it is not climbable vertically; it can only be done across. Player ties the rope to the pole, then to themself. They make it halfway across, but fall. They get put into a general "momentum" has 3 ints determine force in the x y and z directions. For our example here, we can assume that it is a 2 dimensional problem. The player would fall straight down until the rope is taught, then angularly until they hit the wall. With poor fastening and ability to take impacts, this would be painful, but a time to regain stamina just hanging. They can climb up the rope and try again. Once successful, the player ties the rope to the other pole, and there is now a much easier method to go across. Well, one that doesn't drain stamina but is still rather dangerous for heavy carriers or if there are destructive creatures about.

This rope mechanic would allow a few interesting things. Anchoring monsters to something, duct taping an item to one's torso. But what to do with length? Perhaps every ropelike would have a "charge" that get's used up. Let's say that we anchor a dog to a pole. The rope has a certain charge that allows the moving of X spaces away from the pole. If the path is stored, then perhaps by running in circles the charge would be reduced, making it possible to shorten the available distance. This comes with some trouble about defining how far a single tile is, which I think is being deliberately avoided for the most part, as is customary for rougelikes. Having a stored path would be useful for our previous problem, however. If we added going around across a U shaped hallway before the ledge, we could store the rope as being "anchored" to the latest change in direction stopped by something. This would allow one to safely descend a cliff by tying a rope to a tree that wasn't directly on the edge. Although there is nothing to anchor to on the cliff's edge, setting it to that point would make climbing down a lot easier to calculate, if less realistic.

That covers involuntary momentum mode, but not the obvious implication of that phrase. I'm imagining another option on the sneak menu that drives the player around like a vehicle. They can modulate their speed at the cost of stamina, and falling is taken one step at a time rather than all at once, allowing for some thinking on the fly, like grabbing a ledge before falling to one's death. Or perhaps quickly changing direction by anchoring one's hand to a pole in a graceful U turn. Jumping could come in here like throwing. It adds an amount of force based on strength and weight in the direction you intend to go. Whether or not that it works depends on how hungry your eyes were, or more accurately, how aware you are of your player's physical ability.

It would be super annoying to have to move all the time like this, hence it being a mode to switch into. Could be useful is there was a general fitness skill we wanted to put in, so just like driving it gets activated, but I suppose that would make just going on a walk, albeit one where you are thinking very specifically about the movement, count as training? Hmm, well we can do the same for riding a bike.

@stale stale bot removed the stale Closed for lack of activity, but still valid. label Jun 10, 2020
@stale
Copy link

stale bot commented Jul 11, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

@stale stale bot added the stale Closed for lack of activity, but still valid. label Jul 11, 2020
@ghost
Copy link
Author

ghost commented Jul 13, 2020

I had been crafting some kind of complicated hold system for the hands and feet that described just what was where, but after stepping back, I don't think that this is the right approach. Having a system of limbs is only loosely available right now, and it would be so easy to get bogged down on the inputs. Basically, if it would be impossible to do this on a real time turn limit of 3 seconds, then it is too much. Or at least, there would be some non crazy hard way to navigate the windows in that time. I'll be getting back to this menu system in another post sometime.

What that means specifically is that jumping will always be done from the ground. Perhaps there could be some hard coded tic tacs put in, but I don't see how this could mesh very easily with a system that does not resolve the physics immediately, as if the case with falling right now. Perhaps the "intent" system, with the jump could be a longer tracked point? I dunno.

Another thing is that all walls are essentially uniform, despite the fact that in the previous posts I talked about wall fixtures. The first thought would be to have a static value that is assigned at the tile level. This evolved into having a dynamic climb-ability modifier based on some procedures during world generation to represent things like decorative bricks, or ledges, so on. However, this seems like it would be very hard to be satisfying in a plausible way while also being useful to the player, all while being depicted in a way that isn't throwing a bunch of numbers at the player, or worse, being at the mercy of a bunch of variables that are unknowable.

In essence, the vision is to have the thinking about what goes into a skill be abstracted. The player doesn't have to worry about maximising gear shift changes while driving, and so they shouldn't have to worry about foot placement either. However, in the mechanics skill, there are still some unifying principles of vehicle construction like weight and so on that players will pick up from doing it. I can see there being a static climb-ability value for tiles, and this can be slightly modified based off of damage, so that some crack climbing in otherwise smooth surfaces could be done, and that is done in a simple formula that is the same every time, like light damage means +10 easy or something, instead of a multiplier like for skill.

@stale stale bot removed the stale Closed for lack of activity, but still valid. label Jul 13, 2020
@stale
Copy link

stale bot commented Aug 12, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not 'bump' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

@stale stale bot added the stale Closed for lack of activity, but still valid. label Aug 12, 2020
@stale
Copy link

stale bot commented Sep 11, 2020

This issue has been automatically closed due to lack of activity. This does not mean that we do not value the issue. Feel free to request that it be re-opened if you are going to actively work on it

@stale stale bot closed this as completed Sep 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
<Enhancement / Feature> New features, or enhancements on existing Mechanics: Character / Player Character / Player mechanics Mechanics: Effects / Skills / Stats Effects / Skills / Stats stale Closed for lack of activity, but still valid. <Suggestion / Discussion> Talk it out before implementing Z-levels Levels below and above ground.
Projects
None yet
Development

No branches or pull requests

2 participants