Jump to content

The Best View in SWTOR contest has returned! ×

Possible improvement to "/stuck"


dgnuff

Recommended Posts

I had a very ugly situation last night where a character got stuck, it was what I call the "stuck in a crevice" issue.  I couldn't activate any powers, since the error message reported that I was "floating".  /stuck did absolutely nothing to move me.  I did eventually escape from it by using the activity finder solo tab to transport to heroic missions on another planet, but the whole experience got me to thinking about the current implementation.

 

Rather than try to fix the current system since it appears to be broken beyond redemption, I suggest a relatively easy rewrite from scratch.  Looking at the game with 30 years experience as a game developer, it seems pretty obvious to me that you're using a classic "path node mesh" for AI pathing.  Not at all surprising when you think about it, it's a system that's easy to implement, fast to use if well written, and common as garden dirt in games of all sorts.

 

I suggest that when a player uses "/stuck", the FP and OP behaviour of suicide remain unchanged, but in other places, unilaterally move the player to the nearest node in the graph, in x,y,z space.  I consider it essential to consider the z dimension as well, otherwise it may become possible to exploit this to climb or fall past cliffs intended to block passage.  e.g. the cliffs surrounding the Glacial Fissure area on Hoth that's full of the volcanos.

  • Like 2
Link to comment
Share on other sites

If a player is stuck between 2 rocks because the inclines of each rock exceeds 30 degrees, placing the player in the next available location does nothing if there's simply... more rocks.

Someplace very safe, like at a med droid respawn point, would make more sense.

  • Like 2
Link to comment
Share on other sites

14 hours ago, dgnuff said:

I suggest a relatively easy rewrite from scratch

This statement is directly contradictory to this one:

14 hours ago, dgnuff said:

Looking at the game with 30 years experience as a game developer,

After 30 years as any kind of developer, you should know that "rewrite from scratch" does not belong in the same sentence as "easy", especially if you're proposing to do it to just one subsystem.  Think of all the weird coupling issues that are likely to happen, especially since, as you surely know, game development is notorious for insanely short deadlines.

14 hours ago, dgnuff said:

I suggest that when a player uses "/stuck", the FP and OP behaviour of suicide remain unchanged, but in other places, unilaterally move the player to the nearest node in the graph, in x,y,z space.  I consider it essential to consider the z dimension as well, otherwise it may become possible to exploit this to climb or fall past cliffs intended to block passage.  e.g. the cliffs surrounding the Glacial Fissure area on Hoth that's full of the volcanos.

I would suggest that there should be an array of "stuck points" on known-good terrain, and /stuck just moves the player's character to the nearest one of those.

Link to comment
Share on other sites

12 hours ago, SteveTheCynic said:

After 30 years as any kind of developer, you should know that "rewrite from scratch" does not belong in the same sentence as "easy"

Depends on what you're rewriting, and who's doing the rewriting. There's nothing in the suggestion that should pose an insurmountable problem for anyone who can develop their way out of a wet paper bag, and isn't a help desk monkey masquerading as a developer because they wrote Hello World off a YouTube tutorial once. There's a reason these sorts of "stuck" issues have been a solved problem in so many other games for so many years, and it isn't because they all went out and hired a hundred man team of the best of the best.

Link to comment
Share on other sites

11 hours ago, JCDenton said:

Depends on what you're rewriting, and who's doing the rewriting.

Up to a point.  Given everything that has been said about the SWTOR codebase, I'd expect the code in question to be mingled with other things that *do* work and shouldn't be messed with, and therefore extracting just this one thing is likely to be difficult.  I've participated(1) in a complete rewrite before, which went very well, but it was a complete rewrite of the whole pile of software, and that whole pile was much smaller than any MMORPG.  A complete rewrite of just one part of the system is usually a recipe for insanity.

(1) I designed and wrote a big chunk of the lower-layer infrastructure for the project.

11 hours ago, JCDenton said:

There's a reason these sorts of "stuck" issues have been a solved problem in so many other games for so many years, and it isn't because they all went out and hired a hundred man team of the best of the best.

All the MMORPG forums I've been on over the years have had complaints about getting stuck, falling through maps, and so on.  Granted, SWTOR seems to have more of them, but it's far from alone.

Link to comment
Share on other sites

11 hours ago, SteveTheCynic said:

A complete rewrite of just one part of the system is usually a recipe for insanity.

When nobody knows what they're doing, yes. I'm sure the codebase was developed by people who knew what a function was, and would be updated by people who are also familiar with the concept. There is a consistent idea on this suggestion board that the most basic, simplistic things are impossible because of some nebulous, unseen spaghetti code, and because of this term they learned from reddit no development can ever take place, nothing can be improved, etc. It's really frustrating. Somewhere in there is a stuck() that gets called when /stuck is typed, you can update that, or you can redirect it towards stuck_new() and leave stuck() intact in the incredibly unlikely event that you have dozens of other places calling it for no reason and can't track them down.

 

People here act like something as simple as a new animation is some insurmountable problem for a paid product with a professional development team, and then you turn around and see a hobbyist modder pumping out ten a week.

Link to comment
Share on other sites

19 minutes ago, JCDenton said:

There is a consistent idea on this suggestion board that the most basic, simplistic things are impossible because of some nebulous, unseen spaghetti code, and because of this term they learned from reddit no development can ever take place, nothing can be improved, etc.

Actually, its experience. Over the years they have modified lots of code and there have been innumerable bugs that came out of nowhere in systems barely related to what was changed.

Edited by DWho
Link to comment
Share on other sites

58 minutes ago, DWho said:

Actually, its experience. Over the years they have modified lots of code and there have been innumerable bugs that came out of nowhere in systems barely related to what was changed.

Did someone do a code review and discover that change to system X caused bug Y? Or did people here just imagine it in a fit of confirmation bias, lacking technical skill, and low expectations?

 

People update big codebases every day, all over the world. Nobody is asking for rocket powered brain surgery here. "Come into unfamiliar code, figure out how it works, change it" is such a doable thing that millions of people do it for a living. Some of them are even posting here, constantly flabbergasted at the way SWTOR players convince themselves that Bioware can't change true to false without crapping their pants.

Link to comment
Share on other sites

7 minutes ago, JCDenton said:

Did someone do a code review and discover that change to system X caused bug Y? Or did people here just imagine it in a fit of confirmation bias, lacking technical skill, and low expectations?

 

People update big codebases every day, all over the world. Nobody is asking for rocket powered brain surgery here. "Come into unfamiliar code, figure out how it works, change it" is such a doable thing that millions of people do it for a living. Some of them are even posting here, constantly flabbergasted at the way SWTOR players convince themselves that Bioware can't change true to false without crapping their pants.

No, but the number of bugs introduced by even a small update is pretty telling. You can either assume the coders are incompetent (which isn't the case) or the code is so complex (or buggy in its own right) that they don't fully understand it (most likely the case). The revolving door at Bioware makes it pretty likely that no one really understands the intricacies of the code and that they are just piling new code on top of old (that's generally what happens with MMOs anyway). It's also pretty standard for games nowadays to have lots of "inactive" code still in them at release (or built up over time). All it takes is setting the wrong boolean to true (or a mistyped redirecting statement) and you reactivate that code and whatever it does without even realizing it. It might be a minor inconvenience or it might be catastrophic once you trigger it.

Link to comment
Share on other sites

2 hours ago, JCDenton said:

I'm sure the codebase was developed by people who knew what a function was, and would be updated by people who are also familiar with the concept.

I hope you realise that there's a teeny-tiny bit more to being a developer than knowing what a function is...

After all, my career as a professional developer, which spans more than thirty four years now, has taught me (well, strictly speaking, the first few minutes of it taught me) that the hard part of being a developer is not knowing this or that about the chosen programming language, nor knowing how to write code.

No.

The hard part is knowing *what* code to write, and how to make sure that the interactions between this part and that part are manageable.

Link to comment
Share on other sites

Here's a better idea, if /stuck is used twice in 10 seconds, it kills you. That way if /stuck doesn't work the first time, do it again to die.

The CD on /stuck if fricking asinine. I hope the dev who did that has been fired by now.

Edited by Traceguy
  • Like 1
Link to comment
Share on other sites

On 5/7/2023 at 8:41 PM, DWho said:

You can either assume the coders are incompetent (which isn't the case) or the code is so complex (or buggy in its own right) that they don't fully understand it (most likely the case).

If they can't implement simple changes to simple functions, yes, I'll assume incompetence. This idea people have that they deployed a /stuck command that didn't have a stuck() behind it in 2011 is redditor pseud posting. You've read "spaghetti code" somewhere and exaggerated it to a cartoonish extreme to explain why nothing ever gets done here. Again, "here's this big unfamiliar repo, figure out how it works" isn't an uncommon problem, its something virtually every developer on Earth will do throughout their career. "Well uh what if changing that function magically causes it to set a variable it doesn't interact with because uhh....umm....SPAGHETTI CODE! Yeah, ever think about that!?", it's insanity here.

 

On 5/7/2023 at 9:49 PM, SteveTheCynic said:

I hope you realise that there's a teeny-tiny bit more to being a developer than knowing what a function is...

I do, hence why I never stated or implied anything of the sort. Being a professional developer in the last several decades does kind of require knowing what a function is, though. If you think someone changing the way /stuck works needs to go over twenty million lines, and not simply change the function being called when you say /stuck in chat, I'm going to go with my long standing assumption that there are "developers" posting on these boards who are actually working a help desk phone line, or regurgitating things they saw online, or wrote fifteen lines of VBA a few years ago and assumed the title.

 

Nearly every post on this suggestion board is met with the most inane responses from the same people, for years now. Someone can suggest "hey, why not take those hoodless models that are already in the game and let humans use them?" and you'll get people acting like you've asked Bioware to invent time travel and warp drive on the back of a napkin.

  • Like 1
Link to comment
Share on other sites

15 hours ago, JCDenton said:

If they can't implement simple changes to simple functions, yes, I'll assume incompetence. This idea people have that they deployed a /stuck command that didn't have a stuck() behind it in 2011 is redditor pseud posting. You've read "spaghetti code" somewhere and exaggerated it to a cartoonish extreme to explain why nothing ever gets done here. Again, "here's this big unfamiliar repo, figure out how it works" isn't an uncommon problem, its something virtually every developer on Earth will do throughout their career. "Well uh what if changing that function magically causes it to set a variable it doesn't interact with because uhh....umm....SPAGHETTI CODE! Yeah, ever think about that!?", it's insanity here.

People who cite **just** "spaghetti code" in such a context are short of the mark, of course, but it's an *element* of the overall difficulty.  Aside: in 34 years, nobody has ever asked me to understand how a big unfamiliar repo works on day of the job.  The other, possibly more important, part of the problem is code with too much coupling between modules and too little cohesion in each module.  *That* is what makes modification of large old rushed codebases difficult.  Videogame codebases are notoriously rushed because of the impossibly short non-movable deadlines for which the industry is notorious.

15 hours ago, JCDenton said:

I do, hence why I never stated or implied anything of the sort. Being a professional developer in the last several decades does kind of require knowing what a function is, though. If you think someone changing the way /stuck works needs to go over twenty million lines, and not simply change the function being called when you say /stuck in chat,

No, I don't think that.  I am, however, saying that it might be necessary to look for unexpected knock-on effects of changing that function.

15 hours ago, JCDenton said:

I'm going to go with my long standing assumption that there are "developers" posting on these boards who are actually working a help desk phone line, or regurgitating things they saw online, or wrote fifteen lines of VBA a few years ago and assumed the title.

Unnecessary to assume anything quite so insulting about people.

15 hours ago, JCDenton said:

Nearly every post on this suggestion board is met with the most inane responses from the same people, for years now. Someone can suggest "hey, why not take those hoodless models that are already in the game and let humans use them?" and you'll get people acting like you've asked Bioware to invent time travel and warp drive on the back of a napkin.

The most likely problem with the cited example is that the "hoodless models" in question aren't separate items worn by NPCs, but actually baked into the NPC model as if the NPC's skin is shaped and coloured like the armour in question.  Dig around the various sites full of datamined information to see what I'm referring to.

Link to comment
Share on other sites

The whole /stuck thing is broken in swtor and has been forever. I constantly see people saying they are stuck, that /stuck won't work, that they can't use QT or even travel to their SH (while "moving"; i.e. STUCK). They want a guildie to quit whatever they are doing and go pull them out. Ugh.

Then you can only use it once for x amount of minutes, another crazy limit that makes no sense to me. If you happen to be registered as "in combat" while stuck (and certainly not in combat), the game won't even let you log, you have to quit the whole thing. It's ridiculous. Particularly since it's so easy to get stuck just exploring. Yes, it needs to be fixed.

Link to comment
Share on other sites

×
×
  • Create New...