Ladders, wall climbing/grabbing, Swinging?

3 Questions:
Has anyone figured out how to set up...
(A) ladder climbing/descending? I.E. - Double Dragon (arcade), Mega-Man (any)
(B) Wall Climbing/Grabbing I.E. - Mega-Man X, Strider (arcade/Genesis)
(C) Swinging I.E. - Bionic Commando, Spider-man, Castlevania Bloodlines

If you've had any success, I'd be very interested in knowing how you managed to do it. If anyone has STABLE answers to these questions please share them.
Shared information can excite the imagination while greatly expanding fun factor and play-ablility for all of us. 
 
(B) Wall Climbing/Grabbing I.E. - Mega-Man X, Strider (arcade/Genesis)
Don't forget Spider Man though. There's a wall climbing too.

I had that idea long ago and it would be interesting that those would be made for the engine. ;D I like to see this happen.
 
What kept me from adding wall climbing ability in Contra mod is I can't find efficient way to define walls so they can be detected later. Yes, you might notice some walls in the mod but some are defined with platforms which can't be detected with script yet.

OTOH walls (OpenBoR walls) can be detected with 2 scripts.

Ladder, swinging, hook, ropes etc requires them to be defined 1st before they can be detected for next actions : climb, grapple, etc

Well, there's last resort to solve this definition problem: hardcoded meaning the walls, ladders etc are defined in fixed position.

After the definition part is done, the next step would be what action to take.
 
Pertaining to Ladders: I was thinking the same, but it would be way too buggy. There would also be no way to get enemies to use it. The best thing would be if it was hard coded. Don't see it happening though.

Any thoughts on Swinging?
 
Using PAIN animations would be the very last way to do this, or any other alternate animation hack.

The established standard for adding animation features (throws, climbing, special actions, etc.) is with the FOLLOW animations. There's a good reason for this:

  • They are unlimited.
  • The engine never uses them unless the modder tells it to.

The latter trait is what makes FOLLOW animations so useful for special actions like this.

Anyway, it's actually not difficult at all to add ladders. One only needs to define some location or object detection, keyscripts for movement and an animation to perform. AI can be done as well by simply forcing the AI to use a ladder it encounters. You can conditionally change this of course (I just touched a ladder. Is there a target above me? Then climb).

Wall climbing would be even easier because you can simply look for walls instead of specific spots. I actually had such a feature in my Golden Axe mod. It allowed players/nps/enemies to ascend platforms that were in their way along the Z axis (think that little steppe in the first stage). It was as simple as check for being blocked along the Z axis, and if the wall was of a certain height, the entity climbed it. I scrapped it after Z plane jumping was added but it was working just fine.

Swinging would be a bit tougher simply due to creating an "arc". Unless you want to force it through frame by frame and put up with jerky end results, you would need to mathematically work out a reverse arc at run-time.

DC



 
Thanks DC.  ;D
I know on the surface, It's like I'm asking to be spoon fed the information... Well...
No, I pretty much am asking for it outright. The goal though is to create a simple step by step tutorial that's as straight forward and concise as possible, while still being very noob friendly. Similar to how Bloodbane does with the manual, but more situation specific. Like it is in the Wiki.

As pertains to swinging, I had planned to use the FOLLOW command. With heavy use of really precise MOVE and MOVEA. I'm going to try it now. If I can get it to work correctly and without a mess of herk jerk I'll post it here.
Tried... The level of fail was SPECTACULAR! 

DC gave us a guidline y'all, Let's see make things happen! :)
 
Or maybe not...  :(

In any case, I'm still working on swinging. I think I've got it, but am having some difficulty with gravity. Does anybody have a simple @command script fix? IE:
@command antigravity 100 - turns gravity off for anim
@command antigragity (whatever value it was before) turns gravity back on for anim


Nevermind, I'm an idiot. Lol
 
No, you obviously can't use bindentity for swinging moves or any moves in general.
If you want to swing, at least set temporary airtime by modifying tosstime then use velocity control to swing in an arc.

It's just theory though and I'm not really sure how the velocity control would look like anyways.
 
YAAAAAY Threadomancy!!! LOL
Anyway, Any news for tutorials concerning wall jumping/climbing, Ladders (players and enemies), and rope swinging? I tried to get the TMNT shellshocked Demo to see if I could learn something from there, but it seems to have been deleted. :(
 
Well, if you need example on how to climb ladders, you can download this small demo:

https://www.mediafire.com/?1zz1xma8nrmnv1y

That demo is for showing kickable yet throwable weapons
However, that demo also has ladder climbing feature. I locked the level with this:

scrollx 0 220
at 0

Remove that line from streets.txt and play the level. Climb any ladder you see

I have to say that although ladder detection script works well, it is obsolete. I don't have time to update it with better and more efficient one unfortunately. The ladder climbing mechanic is good enough OTOH
 
magggas said:
Bloodbane thank you very much for sharing this demo! I was wonder for ages if/how could be possible to make climbing system and after a lot of tries i gave up. Can this climbing system work for enemies too?

I believe the enemies can work like the players do, but I'm not entirely sure from Bloodbane if they can. I like to know it too. :)
 
magggas said:
Can this climbing system work for enemies too?

Yes, it works except that enemies use different set of entities and scripts. Ladder detection works differently too.

To show you the difference, here's how the first ladder is 'defined':

spawn ClimbSpot # for Billy
health 112 # although it says health, it's how to define ladder height
flip 1
coords 570 207
at 0

spawn ClimbSpotE # For enemies to climb up
health 112
flip 1
coords 570 207
at 0

spawn ClimbSpotE2 # for enemies to climb down
health 112
flip 1
coords 570 207 112
at 0

All three entities are spawned at same x and z to show that they 'define' same ladder (the leftmost ladder).
 
Again, Thank you Bloodbane! I did notice a few curiosities, and those gave me some questions. :/
How well does this hold up on a 2D plane? Affected by Animheight (can/cannot pass through walls/platforms)?
I also noticed the player instantly shifts to the left once finished climbing. Is that fixable?
 
Animheight only affects platforms AFAIK OTOH walls can't be floating either so for 2D plane you can just set player to ignore platforms while climbing ladders. No need to worry about getting off the ladder cause scripts to do that are based on ladder's position and height not wall nor platform nearby. IOW it's possible to set ladder which goes to air and have player fall off from top of it

I also noticed the player instantly shifts to the left once finished climbing. Is that fixable?

Really? let me check. The only script I coded there is script to push player back couple pixels to prevent falling down after climbing to top of ladder

[2 days later]

Oh I understand. What you actually saw was a perspective issue. Ladders is leaned to right or left at its top giving impression that its end if at end of leaned part. The code I wrote puts Billy at same x as ladder's position after ending climbing (both at top or down), that's why it looks as if he's moved to left
In 2D levels with ladders, you won't see this problem cause there's no leaning effect
 
1. How can i change the width of the climbspot?

There's no way to do that. Climbspot's location defines where Billy and enemies would be when they climb the ladder
To create 'wider' climbspots, just spawn more climbspots. Keep the distance between each no less than 20 pixels though

And don't forget not to flip them so Billy and enemies would face left when climbing them

2. After climbing on the ladder i have some gravity issues. When i jump gravity is set automatic to default. Have you any idea why or how to fix this?

I don't understand what happened there. Billy has script which resets his antigravity to 0 at end of his climb. Or does Billy has certain antigravity set in his header text?
 
If you want I implemented ladder/stair system.
You can see it in my game (TMNT Shell Shocked).

Ladders (Players): ladder.c, ladder_commons.c, climbable_area.c, halcove.c
Ladders (Enemies): AI_climbing_criteria.c, AI_ladder.c, AI_ladder_climbing.c, AI_ladder_commons.c, AI_ladder_lib.c
Stairs: stairs.c, wave.c

The called functions are in player_ondrawscript.c, player_check_entities.c, enemy_ondrawscript.c
To test it edit levels.txt in SET          DEBUG_ROOM section.  ;)

Ps. to grab a ladder use block/special button
    however this is a beta ladder/stair system
 
Back
Top Bottom