Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Immeline's Nitro-Fueled Adventure
#1
Rainbow 
Hello hi! I didn't really see any CTR:NF gameplay mod threads so I'll probably use this one for all my current and/or future needs. It'll be nice to be able to blab in one place about new progress and post finished patches.

For some backstory, I had spent a lot of time with cheat engine and yuzu to make my own shitty version of the gdb stub back in 2019-2020. From there I was able to somehow follow the *extremely convoluted* patterns in this game's code and get a basic idea of how the game worked, then put together some fun cheat engine injection mods for temporary stuff since I knew that a bit better at the time. Now my goal is to patch the game's machine code directly, and I have finally learned how to do that today!

I just needed something verifiable to test it -- with this patch, when the game would otherwise try to process boosts, it will ignore them!

When I was testing, one of my friends was curious if you could make first the jump in Hyper Spaceway without turbo -- I'm not entirely sure, it might be possible if you get a speedghost glitch and extended it with the new glitch tech "polswid", but I'm not good enough for that...

However, if anyone wants to try, I can also keep the patch here (it goes in the game's load folder in yuzu, or you can use IPSwitch on the switch if you're familiar!)

Thanks for reading, hopefully more soon~
Reply
#2
Overlapping Fire + Chain Boost Bonus mod gameplay!

To explain this mod I kind of have to get into the game's mechanics.. oh god..


Pictures and flow charts would really help visualize this and one day I'll put some together.. but for now, a rudimentary understanding of programming (or just lists) will help you get less confused. You can skip to TL;DR if you don't really care or just straight up watch my shaky time trials if you want!

Long story long: This game's boost management is bonkers. Way more complex than CTR99 even though it really didn't need to be. The original, if I'm not mistaken, really only cares about your highest fire encountered (with some exceptions to the rule with ultimate sacred fire). Nitro fueled takes a very object oriented approach and gives each boost its own instantiated class with its set of flags, turbo values, sustainability values (reserve is what most people call this, in this game it's measured in real time seconds) and many different methods to operate on them. For each racer (including NPCs and GHOSTS of all things) there is a dynamic double list (list of lists, or matrix) of these classes.. and the turbo manager follows an interesting set of rules based on all the turbo values you add (through drift boosts or hangtime), come across (turbo pads), or use (super engine or turbo item).

I don't think I've observed all the behaviors or deciphered all the pseudo spaghetti code yet, but I've definitely gotten a basic understanding of some the rules -- it counts down the reserve of one of these lists at a time unless it encounters a higher turbo value than anything in the matrix. This hypothetical larger turbo value will mark any other lists with lower turbo values for death, and thus they all simultaneously start counting down, but not before adding the total reserve of any lower turbo lists to the new highest turbo list. This is what sustains your higher fires, any boosts marked for death have their reserve added to the newest higher turbo. (Fun fact, this is why the juiced super engine seems so useless on non blue fire courses if you don't consider polswid. It becomes the top turbo and literally marks your other lower turbos for death, but the higher turbo value is deleted after the item duration ends or if you let go of the accelerator, stealing any reserve you generated!)

If any lower turbo values are encountered after a hypothetical higher turbo, they are added to newest higher turbo's list, but also marked for death -- its total reserve being added to the top turbo's reserve. (This is why unjuiced super engines are more versatile with reserve on lower turbo value tracks, the lower turbo value allows it to add its reserve to the top turbo, it doesn't matter if the turbo entry disappears when your item duration ends -- it's already added to and stored in the list's highest turbo value. I could talk about the super engine forever.. it's so weird)

If you encounter the same turbo value as your highest value, your older list gets put on pause and the turbo manager creates a new list with the newly encountered source. This can leave an older source with a lot of reserve, but the sources under it will still fizzle out over time (sources marked for death do not pause). The manager will start its focus on the new list with the rules above, but now you have what I like to call a lingering source. If the newest list runs out of reserve, it will then re-enable the lingering source, essentially keeping the highest turbo value even though the sources are tracked separately for some god forsaken reason.

The insane amount of memory and processing power used for this surprises me! I have a lot to learn still, especially about flags, because those can lead to wacky behaviors (ex. ignoring some of the rules above, oxide station's turbo pad before the low gravity section is a good example).. But it seems to follow those general rules otherwise..

TL;DR: 

The game keeps track of each turbo separately, and a lot of the time multiple fire values coexist (or overlap) but the game doesn't do jack with them. It only looks at the highest value and sustains it. I've rewritten some of the logic to take advantage of the fact they all exist together for short times (or long times for lingering sources) -- First, I take the average of all the 'overlapping' turbos hanging out in the background while marked for death, lingering, or otherwise. After that, it figures out how many turbos you've chained together according to the changes in the turbo data, then adds a % increase to the resulting average for every boost counted in your chain (as long as you don't hit a wall, get hit, or run out of reserve, it's considered a chain). This rewards a lot of boosting + turbo value knowledge and increases the speed over time, while still being familiar gameplay (reserve values untouched, so anyone with practiced reserve tracking shouldn't be too bamboozled and good reserve management/lines are still rewarded!)

It's not quite ready for release yet as it is a WIP -- it is a bit haphazard and definitely subject to tweaking lol.. That and my code doesn't play nice with certain types of offroad or certain flags so that's worth fixing (I'll post an example later) + I also want to mess with the idea of overhauling the hang time turbos to reward a lot of experimentation. (Perhaps buff turbo values based on higher lengths of time in the air or something) -- HOWEVER, I want to get a good beta soon as I know a lot of the more advanced players may have some great ideas.

A lot of my effort will also go towards making sure this couldn't easily be used online if used on a switch.. my methods here stay secret for now.

In the very very distant future maybe displaying more info about what's going on would be possible, like your turbo bonus or how many boosts you've chained somewhere, but that may be difficult without the right help. Would be really cool though!

Here are some of my favorite testing runs (choking aside):

Hyper Spaceway was highly troublesome as the first ramp becomes way too much air very quickly -- this course holds the highest 2 turbo values in the game so I had to test! If you're careful and don't mess with it too much you can drift straight through the middle of the ramps. If you're lucky and get the high jump without weird turbo flags, you can jump right through the Velo projector into the next portal! (The AI does this after I finish LOL)


Meteor Gorge has always been one of my favorites, this mod definitely makes it a lot more speedy:


Spyro circuit has to be one of my favorites for the drop boosts in the last section, it had some wacky behavior with lingering sources!


N.Gin Labs has a lot of turbos with special flags that slow you down for its natural reserve length or as long as you touch it, but it still ended up really fun:


Polar Pass can overlap enough sources to get the hard cut first lap without too much effort:


Drive-Thru danger is just a lot of fun with this mod -- I wonder if Pizza is still optimal or if Burger might be? Probably still pizza lol:



ALSO --  big thanks to ARD for putting together the alchemist program so I could mod Megumi's japanese voice lines into my game! I'm willing to share this once I learn more about how to easily do that LOL.

Thanks for reading, will try to keep this updated as long as work isn't strangling me  Heart
Reply


Forum Jump: