Tomb Raider Forums

Tomb Raider Forums (https://www.tombraiderforums.com/index.php)
-   Tomb Raider Next Generation (https://www.tombraiderforums.com/forumdisplay.php?f=40)
-   -   Overhang Climbing Plugin (https://www.tombraiderforums.com/showthread.php?t=226654)

Krystian 08-10-21 16:40

Overhang Climbing Plugin
 
[B][FONT="Palatino Linotype"][CENTER][SIZE="7"]Overhang Climbing Plugin
[/SIZE][/CENTER][/FONT][/B]

[CENTER][IMG]https://i.imgur.com/QpQNthg.png[/IMG]


[FONT="Palatino Linotype"][B][URL="https://akyv.tombraiderhub.com/Plugin_Freeclimbing_Krystian.zip"][SIZE="5"]Download Link[/SIZE]
[SIZE="3"](from TRF plugin archive)[/SIZE][/URL][/B][/FONT][/CENTER]



As my climbing plugin has finally been released, I have decided to make a thread for it here on the forums. The purpose of this thread is to have a place for discussions about the plugin, reporting bugs or unforseen issues, asking and answering questions, as well as for me to post about updates and bugfixes.


------------------------
[SIZE="5"][B][FONT="Palatino Linotype"]History[/FONT][/B][/SIZE]

Some backstory about this plugin, feel free to skip if you're not in the mood for reading a whole novel... :D

It started all the way back in 2013, when I first wanted to somehow add overhang climbing to TRLE. At the time, I was involved with the TLD project, meant to be an Angel of Darkness continuation made in TRLE.
Of course, back then plugins weren't around, so I tried implementing it with TRNG's Animation= scripts. I was becoming quite proficient with TRNG's scripting possibilities and was familiar with almost all the ENV_ constants for animation scripts. However I noticed that there were none which would allow me to check for slopes on the ceiling (in fact, it's not at all possible to check for slopes, even ones on the floor). So I had to devise a different method...

I was aware that TRNG made it possible to detect objects with TestPosition scripts, allowing to set up a condition that Lara is in a particular postion, relative to some object. So with that, I came up with an idea to make an invisible "sheet" object (textured with magenta) which could be placed over the ceiling slopes, and then create numerous TestPosition scripts around this object. And as a matter of fact it did work to some extent, which I have actually documented in the video below :)

[youtube]8xSNlu_Oxuo[/youtube]


[SIZE="1"]Excuse the terrible animations, they were placeholders for testing :p[/SIZE]
However I didn't get very far beyond what's showcased in the video with this approach. Having realised this, I've accepted that it's just not feasible to do...


Fast forward to the end of 2016. Paolone has released the TRNG plugin SDK. I was very excited for it, but I was also quite occupied at the time, so I couldn't check it out immediately. I also didn't know what to do with the plugin SDK, yet.
Several months had passed. During the summer break in 2017, I recalled my previous unsuccessful attempt of the climbing. I had the sudden urge to try it again with these new possibilities. Started working on animations and brushed up on my programming knowledge I've picked up over the years when messing around with geeky computer stuff. I started writing the first few lines of code, but I sticked mostly to solutions Paolone had provided in the plugin help files. But I noticed that I wasn't able to detect ceiling slopes again, as before. I sent Paolo an email, asking if it's indeed possible and I just overlooked it. Paolone responded, but unfortunately was only able to say that he also didn't know of any ways to check for ceiling slopes.

So, it seemed that I was stuck with the same issue as before. I experimented with different code, but all the results I had weren't what I had hoped for. I didn't give up, though. I told myself that if I want to do this, perhaps I should start studying the underlying Tomb4 engine on a technical level. With help from knowledgeable people like Lwmte and documentation like TRosettaStone, I read about the mechanics underpinning the engine. In particular, I focused on the way the collision and animation system worked, as I figured these would be the most relevant info necessary for the plugin. It was difficult and there were many things that were confusing, that I wasn't able to figure out initially (such as understanding how the engine's FloorData system works).

However it wasn't in vain, I was finally getting somewhere. The plugin was doing a lot better than before. I was able to seperate the climbing animations from the main LARA object and put them in a new object, from which the animations would be passed to Lara at runtime. I learned how to properly read floordata parameters to check if a particular sector was a ceiling slope, a monkeyswing or had a ladder. All was finally starting to come together...

[youtube]Oe-JCWBNeIc[/youtube]



Unfortunately, soon after I got busy again, so progress on the plugin had to be stalled. After uploading the above video in 2018, there were only infrequent updates given about it, because there wasn't much going on.
I suddenly realised that I had not been doing much about the plugin for almost 3 years and that it's time to put gears into max shift once more. I revisioned the plugin and started re-doing some of the animations (there were probably like 2 revisions of the animation set alone...). But the scope of everything was demotivating sometimes, when I saw how much was still left to do.
Thankfully, someone was able to provide some support and help in organising my workflow, and this person was [B]MarlenaCrystal[/B]. With her help, I was able to maintain a more orderly workflow and make consistent advancements. Without her input, this plugin would still remain in development hell. So thanks a bunch, Marlena! :hug:

I have also [B]ChocolateFan[/B] to thank, whenever I still had some uncertainty about how the engine operates and how I could achieve something within it, she always happily provided her knowledge. Slowly, but surely, the plugin was coming close to finish. Finally I was able to complete the most important aspects of the plugin and bring it to the community! Now hopefully it will be useful to many people for adding intricate platforming to their levels :D


-----------------------

I still have some things to polish in the plugin, but overall I would consider it mostly finished. Sorry for such a long-winded history, but developing this plugin and providing it to the community has been quite a ride. I hope it was worth the read and inspiring, at least ;)

Krys

Krystian 08-10-21 19:40

Updates
 
[B]*reserved*[/B]

Krystian 08-10-21 19:40

Bug reports
 
Reported bugs:


[B]Status:[/B] [COLOR="Red"][B]not fixed yet[/B][/COLOR]
[QUOTE=Titak;8325017]
If you have an Animation= command for the ladder-to-monkey move, it will overrule the move in the plugin.
Result is that Lara is just hanging there on the slope, not going anywhere.
[/QUOTE]

AkyV 10-10-21 21:18

For Krystian's request: plugin has been updated.
About the PDF manual.

Titak 15-10-21 21:04

Great work Krystian!
Works like a charm! :jmp:


[B]Note:[/B]
If you have an Animation= command for the ladder-to-monkey move, it will overrule the move in the plugin.
Result is that Lara is just hanging there on the slope, not going anywhere.
So if that is happening, simply get rid of the Animation= command. :D

Kubsy 15-10-21 22:24

[QUOTE=Titak;8325017]Great work Krystian!
Works like a charm! :jmp:


[B]Note:[/B]
If you have an Animation= command for the ladder-to-monkey move, it will overrule the move in the plugin.
Result is that Lara is just hanging there on the slope, not going anywhere.
So if that is happening, simply get rid of the Animation= command. :D[/QUOTE]

Isn't that a bug? :D

Titak 16-10-21 12:14

I see it as one of those "the engine wants to do two things at the same time and then picks one of those things" situations.
Like some FLEP patches not working correctly when also using TRNG scripting for the same thing (clear backgrounds for example)

So I do not see this as a bug.
I might be wrong though... not knowing anything about the coding of this.

Krystian 16-10-21 12:55

[QUOTE=Titak;8325064]I see it as one of those "the engine wants to do two things at the same time and then picks one of those things" situations.
[/QUOTE]
It's precisely this :D
The climbing animations are managed before TRNG executes the Animation= script commands. Since the animation scripts are executed last, it overrides what the plugin does. :)

I hoped giving the climbing animations new stateIDs would fix the issue, but unfortunately it hasn't. I want to try addressing this bug in the next update of the plugin with a different approach. I didn't manage to fix it for this first release, but thank you for bringing attention to it, I forgot to mention it in the manual

justin 16-10-21 13:16

[QUOTE=Titak;8325017]Great work Krystian!
Works like a charm! :jmp:


[B]Note:[/B]
If you have an Animation= command for the ladder-to-monkey move, it will overrule the move in the plugin.
Result is that Lara is just hanging there on the slope, not going anywhere.
So if that is happening, simply get rid of the Animation= command. :D[/QUOTE]

I'm glad you remembered to post this here, I totally forgot after we discovered this yesterday :vlol:

Krystian, this plugin is brilliant :D

Titak 16-10-21 14:33

[QUOTE=Krystian;8325071]It's precisely this :D
The climbing animations are managed before TRNG executes the Animation= script commands. Since the animation scripts are executed last, it overrides what the plugin does. :)

I hoped giving the climbing animations new stateIDs would fix the issue, but unfortunately it hasn't. I want to try addressing this bug in the next update of the plugin with a different approach. I didn't manage to fix it for this first release, but thank you for bringing attention to it, I forgot to mention it in the manual[/QUOTE]Ah, so I was right. Nice. :D


Am I right in thinking that this set does not include "monkey to overhead ladder"?
Like going from a flat monkey swing to a ladder above it.
From monkey to sloped ceiling is possible, but instead of sloped ceiling it is a flat wall. [SIZE="1"][COLOR="DimGray"](I hope I was clear enough... :o)[/COLOR][/SIZE]
Just checking, because I have a script for that move and if this move is included in the plugin, it could also conflict with the scripted move. :ponder:


All times are GMT. The time now is 16:17.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Tomb Raider Forums is not owned or operated by CDE Entertainment Ltd.
Lara Croft and Tomb Raider are trademarks of CDE Entertainment Ltd.