Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Protea augment idea: Permament Anchor


elitharcos

Recommended Posts

Permament Anchor - Upon holding the ability button, everything will rewind 5/6/7/8 seconds. This ability has a 10 minute cooldown.

Reasoning:

10 minute for 8-24 seconds(power duration) of time being rewinded makes it less abusable yet if you are about to fail a mission can be life saving...

I came up with this idea, because I wanted to see what happens if I activate temporal anchor inside a crewship in railjack and got snapped out of existence and thought "Hmm, if the whole area were to be rewinded, this wouldn't have happened".

With a 10 minute cooldown and this ability being that strong, I think this is an acceptable/good augment mod. I was thinking about that similarly to revives this would have a limit of 1 use per mission, but that wouldn't be fair, however a 10 minute cooldown for this ability is reasonable I think. Even if someone were to spam it, no one would mind it that much because they can just do the same thing as before for 24 seconds.

Link to comment
Share on other sites

3 minutes ago, quxier said:

Just slap some survival mod instead. It probably won't help you in rare case when you need it. TA doesn't rewind a lot of things so it will be useless.

I mean... It could rewind the mission timer as well, meaning that if you fail and alarm something, it would reset before the alarm. "Just slap some survival mod" instead is the thinking method that did lead us to grendel's nourish mod which is also useless. (And doesn't even work with helminth system because you need to have an eaten enemy, similarly to critical surge)

But for sake of entertainment here is me falling out of the world due to the current anchor mechanics:

 

Link to comment
Share on other sites

2 minutes ago, elitharcos said:

I mean... It could rewind the mission timer as well, meaning that if you fail and alarm something, it would reset before the alarm.

If it could do it... but it won't. First TA needs to rewind other aspect of game (e.g. certain timers on weapons) before it can think about rewinding some "harder to do" timers (e.g. mission timers).

 

Link to comment
Share on other sites

15 minutes ago, quxier said:

If it could do it... but it won't. First TA needs to rewind other aspect of game (e.g. certain timers on weapons) before it can think about rewinding some "harder to do" timers (e.g. mission timers).

 

I know what you are talking about, I have used Array systems before and have made several programs that rely on rewinding time. In my cases every modifier I gave and model had to store an array value, here is a list of array values that should be affected:

-Unit modifiers like health, armor, invulnerability and shields

-Buffs and debuffs

-positions

-models

-Mission timer

-Mission objective(like if you kill jackal and go back it should get back as not yet killed)

-Wheter the object existed or not.

These things just have to be put in a parent object that all units copy. This is how health, armor and shields work in this game IRC, because all units have those. Some are invulnerable, some are not, but they all copy it from a parent object.

The only thing to watch out for is that the "Wether object exists or not" is tricky, because if you put down an eximus, G3 or smth, you don't want them to disappear right? so in case an object didn't exist before, like projectiles, etc. just make them to the most they can and for each second they are not rewinded they are stunned/slowed 100% and are invulnerable. And objects that do no longer exist like killing jackal should result in existing as long as the ability can be activated, which is dependant on player.

Link to comment
Share on other sites

42 minutes ago, elitharcos said:

I know what you are talking about, I have used Array systems before and have made several programs that rely on rewinding time. In my cases every modifier I gave and model had to store an array value, here is a list of array values that should be affected:

-Unit modifiers like health, armor, invulnerability and shields

-Buffs and debuffs

-positions

-models

-Mission timer

-Mission objective(like if you kill jackal and go back it should get back as not yet killed)

-Wheter the object existed or not.

These things just have to be put in a parent object that all units copy. This is how health, armor and shields work in this game IRC, because all units have those. Some are invulnerable, some are not, but they all copy it from a parent object.

The only thing to watch out for is that the "Wether object exists or not" is tricky, because if you put down an eximus, G3 or smth, you don't want them to disappear right? so in case an object didn't exist before, like projectiles, etc. just make them to the most they can and for each second they are not rewinded they are stunned/slowed 100% and are invulnerable. And objects that do no longer exist like killing jackal should result in existing as long as the ability can be activated, which is dependant on player.

So you've seen the internal code, specifically for this part of the game? Because I've worked with arrays too and am only learning C#. I guess we are both experts on the game's code now!

Link to comment
Share on other sites

28 minutes ago, SpicyDinosaur said:

So you've seen the internal code, specifically for this part of the game? Because I've worked with arrays too and am only learning C#. I guess we are both experts on the game's code now!

The problem is that you don't need to see a game's code to get the core concepts, if you saw my video above, I have exploited the system by knowing that this is how exactly it works, I have worked with C++ and basic. They surely are storing each model's data in arrays like array[0,0] = first model; array[0,1] = second model, etc. that gets recorded with time and to even save space they are most likely only storing those instances meanwhile the ability is active otherwise it would just drain performance and even allow more problems to occur than it already does make.

I have not seen the internal code for this part of the game, but I play this game since 2013-2014 or so and have made several other exploits based on knowing how the system works, especially at loading in instances. I still remember when the game had stamina.

Being an expert at coding is not the same as being an expert at reading general coding concepts.

The only way they could surprise me is if they were to use branchless coding which they could even do considering how well this big game is running not to mention that it also gives you opportunity to optimize the loading by defragmenting files.

I have been making "programs" (not video games only) for 6 years. Sadly I did it just for self entertainment, not for business, mainly because I am a chemistry student not a programmer one... Because my country only supports java programming courses for some reason ¯\_(ツ)_/¯

Link to comment
Share on other sites

18 hours ago, elitharcos said:

I know what you are talking about, I have used Array systems before and have made several programs that rely on rewinding time. In my cases every modifier I gave and model had to store an array value, here is a list of array values that should be affected:

-Unit modifiers like health, armor, invulnerability and shields

-Buffs and debuffs

-positions

-models

-Mission timer

-Mission objective(like if you kill jackal and go back it should get back as not yet killed)

-Wheter the object existed or not.

These things just have to be put in a parent object that all units copy. This is how health, armor and shields work in this game IRC, because all units have those. Some are invulnerable, some are not, but they all copy it from a parent object.

The only thing to watch out for is that the "Wether object exists or not" is tricky, because if you put down an eximus, G3 or smth, you don't want them to disappear right? so in case an object didn't exist before, like projectiles, etc. just make them to the most they can and for each second they are not rewinded they are stunned/slowed 100% and are invulnerable. And objects that do no longer exist like killing jackal should result in existing as long as the ability can be activated, which is dependant on player.

For 30 seconds you need to keep those 30 seconds. That's not the end of problems here. You need save ALL the time, every second (assuming you only save 1 per second, if you do it twice or more... then it's much more). After some time you need to remove older data.

It's possible (e.g. Prince of Persia stored your and enemies' and traps' position) but that was game build around concept of rewinding time. So it's possible but it's not worth Dev's time.

Link to comment
Share on other sites

20 hours ago, elitharcos said:

Permament Anchor - Upon holding the ability button, everything will rewind 5/6/7/8 seconds. This ability has a 10 minute cooldown.

I think 10minutes is a little too harsh. Oberon has an augment that can give the player an instant revive, with a cooldown of only 90 seconds 

Id bring it down to maybe a minute or 2. Or make some other mechanic that speeds up the cooldown timer for example picking up energy orbs

Link to comment
Share on other sites

1 minute ago, (PSN)Frost_Nephilim said:

I think 10minutes is a little too harsh. Oberon has an augment that can give the player an instant revive, with a cooldown of only 90 seconds 

Id bring it down to maybe a minute or 2. Or make some other mechanic that speeds up the cooldown timer for example picking up energy orbs

The problem with that is that a 2 minute cooldown is abusable. But for a 10 minute one, I originally thought of "once per mission" but then realized survival missions that are hours long are a possibility too, so I came up with the idea of just 10 minutes, which is not abusable at all. 2 minutes is something that you use it at the start of match on an assassination mission, then you use it again. If it is 10 minutes, those seconds do not matter as much.

Link to comment
Share on other sites

40 minutes ago, quxier said:

For 30 seconds you need to keep those 30 seconds. That's not the end of problems here. You need save ALL the time, every second (assuming you only save 1 per second, if you do it twice or more... then it's much more). After some time you need to remove older data.

It's possible (e.g. Prince of Persia stored your and enemies' and traps' position) but that was game build around concept of rewinding time. So it's possible but it's not worth Dev's time.

You need to save all the time, but only for 30 seconds these datas here are some solutions to it:

1. Limit that the augment is not affected by mods that increase duration, so it remains at 8 seconds which is managable.

2. Only store data for enemies every 2 or 3 seconds and not game tick. That would make it so that you would see them rewind, but it would store much much much less data.

Just imagine going on a spy mission one dummy makes a mistake and you reverse it. It would feel epic imo.

Link to comment
Share on other sites

1 minute ago, elitharcos said:

The problem with that is that a 2 minute cooldown is abusable. But for a 10 minute one, I originally thought of "once per mission" but then realized survival missions that are hours long are a possibility too, so I came up with the idea of just 10 minutes, which is not abusable at all. 2 minutes is something that you use it at the start of match on an assassination mission, then you use it again. If it is 10 minutes, those seconds do not matter as much.

I mean Oberon does it already, idk what you mean by abuseable.

Cast ability, take fatal damage, go back 8 seconds. Have to survive 2 minutes of being shot at without dying.

Oberon cast ability, take fatal damage, heals up, has to survive 90 seconds of being shot at.

 

Plus i hope you understand that revives are not that powerful in the game. Having just 1 revive doesnt do much for you in warframe comsidering that we have 4 by default. 

How many times do you use all 4 revives? And those times when you did use all 4 revives, how many times are you sure that having just 1 more revive wouod have helped you?

Link to comment
Share on other sites

Just now, (PSN)Frost_Nephilim said:

I mean Oberon does it already, idk what you mean by abuseable.

Cast ability, take fatal damage, go back 8 seconds. Have to survive 2 minutes of being shot at without dying.

Oberon cast ability, take fatal damage, heals up, has to survive 90 seconds of being shot at.

 

Plus i hope you understand that revives are not that powerful in the game. Having just 1 revive doesnt do much for you in warframe comsidering that we have 4 by default. 

How many times do you use all 4 revives? And those times when you did use all 4 revives, how many times are you sure that having just 1 more revive wouod have helped you?

Amm, you realize that my idea would rewind the whole duration seconds, right? If you do rewind 24 seconds every 2 minutes, that means every 2 minutes someone else can do that. It is enough once every 10 minutes. This is just for the sake of controlling trolls in the game, there are already enough potentials for them. No one can do anything against those 24 seconds that are being rewinded. Imagine a small level dude going in a spy mission, slowly going through the whole area, then in 24 seconds being rewinded he has to do it again. If that were the case imagine this ability being spammed every 2 minutes. 10 minutes is a reasonable cooldown for an ability like that. This is not a revive, this ability idea is more. This is literally a "get out of jail for free" card idea. If it is balanced by having high cooldown like 10 minutes, it is reasonable.

You can make any strong ability for a game, just make sure to make it have a big downside, 10 minutes is a cooldown reasonable for this ability. 2 minutes is too short. That's why limbo's ability to stop projectiles also got out, people were annoyed at it.

If you want op/cool abilities in a game, make it, just make them have a big downside.

Link to comment
Share on other sites

If the player can handle everything the game throws at him during those 10 minutes, do you really believe that 24 seconds will make any difference at all? That they would trade even the normal TA for this?
Air Support Charges are enough to save you in spy missions.

Giving a power that its usefulness relies on the player being extremely awful at the basics of your game is a terrible idea honestly.

Link to comment
Share on other sites

1 hour ago, elitharcos said:

You need to save all the time, but only for 30 seconds these datas here are some solutions to it:

I don't understand you.

Do you mean that we need to save only last 30 (or 8 in your newer post) seconds? Then it's "somehow wrong". You store data (position, timers etc) every N seconds (for example every second). You are using 30 (8) second max? You just need to discard data after 30th (8th) second (for simplicity).

2 hours ago, elitharcos said:

 

1. Limit that the augment is not affected by mods that increase duration, so it remains at 8 seconds which is managable.

2. Only store data for enemies every 2 or 3 seconds and not game tick. That would make it so that you would see them rewind, but it would store much much much less data.

This is honestly balance between usability and performance. Set time to high you will get slow game. Set it to low you get useless ability. And to be honest I'm not sure if you can pick right number.

I'm not sure about performance but for usability users wants more than 8 seconds I guess.

Link to comment
Share on other sites

On 2021-05-19 at 12:24 AM, quxier said:

I don't understand you.

Do you mean that we need to save only last 30 (or 8 in your newer post) seconds? Then it's "somehow wrong". You store data (position, timers etc) every N seconds (for example every second). You are using 30 (8) second max? You just need to discard data after 30th (8th) second (for simplicity).

This is honestly balance between usability and performance. Set time to high you will get slow game. Set it to low you get useless ability. And to be honest I'm not sure if you can pick right number.

I'm not sure about performance but for usability users wants more than 8 seconds I guess.

Maybe I said it wrong, I should probably simulate my idea seemingly considering that everyone disagrees... What I meant above is that there is always data you can cut, for example for players the data handling would be for every game tick, meanwhile any other object is only saved every 3 seconds or a portion of the maximum duration, for example the last array to be used updates every 25% of the duration as long as the duration is 100% or higher. That way if the duration would be increased to even 24 seconds, that would mean that the game would make the same amount of array changes as it would for 8 seconds for the AIs, but not for players, but handling 4 objects is not hard (I guess).

There is no need to pick a number here is what I am saying.

The example:

This is how it would normally look if the duration of mod would be 5 seconds:

Grineer position[0] = 0,0

Grineer position[1] = 0,1

Grineer position[2] = 1,1

Grineer position[3] = 1,2

Grineer position[4] = 2,2

And this is how it would look if the duration is 5 seconds, but we make it so that data is only saved every 3 seconds and the last known location:

Grineer position[0] = 0,0

Grineer position[1] = 1,1

Grineer position[2] = 2,2

1 second passes:

Grineer position[0] = 1,1

Grineer position[1] = 2,2

Grineer position[2] = 2,3

 

so you technically cut down their location's accuracy, but they will technically still go on their path back, which creates the illusion of them moving back correctly, meanwhile to save performance, they look like they lagg back, BUT not a single player would notice because they are rewinding as well.

Link to comment
Share on other sites

On 2021-05-18 at 10:58 PM, Shoumath said:

If the player can handle everything the game throws at him during those 10 minutes, do you really believe that 24 seconds will make any difference at all? That they would trade even the normal TA for this?
Air Support Charges are enough to save you in spy missions.

Giving a power that its usefulness relies on the player being extremely awful at the basics of your game is a terrible idea honestly.

Amm you wouldn't change it... you would just need to hold the button, like at hydroid's abilities to turn back time. Your intial ability would stay. Also yes, it would make significant changes in certain missions, making certain mistakes not happen is sometimes a good thing. Just think back when Jordas Verdict and Law of retribution was still a thing. At those times it would've been handy.

Yes, I believe that 24 seconds can make a difference, actually... it can make a HUGE difference sometimes.

Link to comment
Share on other sites

7 hours ago, elitharcos said:

What I meant above is that there is always data you can cut

Sure

However I think you missed my point so let me explain as well:

For simplicity let's assume we save 5 seconds without cutting anything (we save whole 5 second every 1 second) and we start indexing from 1 (you used 0).

First 5 second would look like this:

Quote

 

Grineer1[1] = position1 (this means 1st Grineer at [1] second with position number 1)

Grineer1[2] = position2

...

Grineer1[5] = position5

 

After 2 seconds you get 2 new positions(bolded):

Quote

Grineer1[1] = position1

Grineer1[2] = position2

...

Grineer1[5] = position5

Grineer1[6] = position6

Grineer1[7] = position7

You store only 5 seconds so you have to delete 2 seconds (2 position) AND move everything "up". Results:

Quote

Grineer1[1] = position3

...

Grineer1[3] = position5

Grineer1[4] = position6

Grineer1[5] = position7

See how Grineer at [1] second is with position 3 AND Grineer at [5] is at position 7.

 

So every second you save 1 position and remove another position.

Of course you can optimize it like, you said, store N-th seconds (e.g. 1st, 3rd, 5th second etc), use List (or other more advanced data type) and other techniques. It still doesn't change the fact that you have to save & remove things every N-th second. It might cause some memory leaks or just higher memory usage. It will require more computation power.

 

Link to comment
Share on other sites

1 hour ago, quxier said:

Sure

However I think you missed my point so let me explain as well:

For simplicity let's assume we save 5 seconds without cutting anything (we save whole 5 second every 1 second) and we start indexing from 1 (you used 0).

First 5 second would look like this:

After 2 seconds you get 2 new positions(bolded):

You store only 5 seconds so you have to delete 2 seconds (2 position) AND move everything "up". Results:

See how Grineer at [1] second is with position 3 AND Grineer at [5] is at position 7.

 

So every second you save 1 position and remove another position.

Of course you can optimize it like, you said, store N-th seconds (e.g. 1st, 3rd, 5th second etc), use List (or other more advanced data type) and other techniques. It still doesn't change the fact that you have to save & remove things every N-th second. It might cause some memory leaks or just higher memory usage. It will require more computation power.

 

https://youtu.be/s-w5O9YBMa8

In the above video, I showcase what type of different method I am trying to tell you about.

It cannot cause memory leaks, because it would simply reuse the arrays after the duration limit has been bypassed, in the video there are 3 circles I am showing. 1 circle uses the least optimized tracking and literally walks through ALL the positions that the ball went through which actually CAN cause a memory leak, eventually. The 2nd least optimized one follows the path, but it doesn't create any more data after 15 steps at all, it just uses the already existing arrays and changes them with a repeat function. The 3rd one is the most optimized one, because it checks every 0.1 seconds what changes are made. It only has 5, not more, 5 arrays at a time yet, it exceeds the capability of the other 2 as performance, because it was written to only work every 0.1 seconds. Just imagine how far that could reach if it wasn't 0.1 second but instead 1 whole second or any other options.

And it cannot cause memory leaks, because it just reuses them, unlike the first example which goes all the way to even 2000+ steps in the program.

Protea's base ability uses the functions I have mentioned above, at least the core is based on the B method, not the C, if it were to be based on C method players would be very very disappointed, HOWEVER if you ever used her anchor you notice behind yourself images of her. THAT uses the C method. The images are there and constantly disappearing.

 

So I am 100% certain that the programming team can do this if they are willing to put time into it of course.

And to make sure that nothing bad happens, after ability use, all those datas for the next 10 minutes, would be freed, meaning they take no memory at all during those times, just make sure not to accidentally even make them.

Link to comment
Share on other sites

1 hour ago, elitharcos said:

https://youtu.be/s-w5O9YBMa8

In the above video, I showcase what type of different method I am trying to tell you about.

To be honest I have no idea what it does.

From this text:

1 hour ago, elitharcos said:

It cannot cause memory leaks, because it would simply reuse the arrays after the duration limit has been bypassed, in the video there are 3 circles I am showing. 1 circle uses the least optimized tracking and literally walks through ALL the positions that the ball went through which actually CAN cause a memory leak, eventually. The 2nd least optimized one follows the path, but it doesn't create any more data after 15 steps at all, it just uses the already existing arrays and changes them with a repeat function. The 3rd one is the most optimized one, because it checks every 0.1 seconds what changes are made. It only has 5, not more, 5 arrays at a time yet, it exceeds the capability of the other 2 as performance, because it was written to only work every 0.1 seconds. Just imagine how far that could reach if it wasn't 0.1 second but instead 1 whole second or any other options.

1st: you just store enemy-positions.

2nd: you are using an array with 15 elements; Every time you move (add another position) you change WHOLE array (unless there are less than 15 elements)

3rd: not sure about this one, I guess it's the same as 2nd one but it only stores enemy-position every 0.1 second

1 hour ago, elitharcos said:

And it cannot cause memory leaks, because it just reuses them, unlike the first example which goes all the way to even 2000+ steps in the program.

In lot of cases this shouldn't cause memory leak.

 

Those 2 methods (2nd & 3rd) have another problem (or at least thing to consider). Past N steps you are rewriting whole array. Then you are doing it for every enemy, object, buff, debuff etc. You are doing it at least every N-th second. This may or may not cause frame's drops.

 

Link to comment
Share on other sites

23 minutes ago, quxier said:

To be honest I have no idea what it does.

From this text:

1st: you just store enemy-positions.

2nd: you are using an array with 15 elements; Every time you move (add another position) you change WHOLE array (unless there are less than 15 elements)

3rd: not sure about this one, I guess it's the same as 2nd one but it only stores enemy-position every 0.1 second

In lot of cases this shouldn't cause memory leak.

 

Those 2 methods (2nd & 3rd) have another problem (or at least thing to consider). Past N steps you are rewriting whole array. Then you are doing it for every enemy, object, buff, debuff etc. You are doing it at least every N-th second. This may or may not cause frame's drops.

 

That is why I stated the whole thing... with the 3rd method only 5 or if you want it even less arrays are used, meaning that they won't cause any frame drops. I have tested it on hundred or more so units back then.

From that point on it is just an optimization question, because optimization is what makes or breaks this mechanic only. Nothing else.

To optimize this well, you have to make all this run on the least objects possible. If you run it on all enemy units, sure it can cause lagg, very very hard lagg, but in that case it is just like everything else in the game that can cause lagg, slowing abilities, limbo, etc.

Back then again mentioning Limbo's ability was the one with a memory leak issue.

Back then Limbo could stop bullets in the air up to 300 projectiles. 300 projectiles. 300; not 30x3 arrays; 300 freakin objects with their own mechanics and even after that... the game was running....

https://forums.warframe.com/topic/947092-limbos-stasis-has-a-bullet-maximum/

I think it shouldn't cause that big of a frame drop... Not to mention that this limit was there so Limbo players couldn't troll most likely, not because of lagg issues.

If everything would fail all you would need to do is create another object that just follows where the enemies went, because again mentioning. Limbo once held 300 unique projectiles in place so those objects could surely follow the path of enemies and store their data if not the enemies themselves :P

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...