Debugging tool: track what's modifying objects and properties

In my Skyrim playthroughs, the one thing that’s been immeasurably helpful in figuring out what’s going wrong when stuff starts getting out of whack is the “lastBaseChange” property it keeps track of. Here’s a screenshot that shows Faendal being modified by USKP for instance (bottom right):

If I get murdered by a chicken with super damage out of the blue, I can open up the console, select the chicken, and see which mod is responsible for changing it.

In Roblox, we’re generally in control of all the scripts in our places since free models are rarely used in serious development, but sometimes our scripts may behave unexpectedly and unintentionally modify objects, or sometimes the engine is messing with what we made and we spend hours looking through our code thinking it’s our fault. The Skyrim feature pictured above could be adapted into a debugging tool that displayed which scripts were modifying objects, and when Roblox was modifying objects internally (e.g. uncontrollable automatic joint cleanup). I don’t think this would be used on a regular basis, but it would be helpful for tackling elusive and deep-rooted bugs e.g. “Why are players’ characters getting attached to each other?”, “Why are my arm joints randomly getting deleted every now and then?”, etc.

19 Likes

That sounds useful

What is the use case for this? Feels like a ton of prints going through so fast.

What you need seems like the ability to track select variables and objects

1 Like

Yes, that was the goal – tracking changes to objects/properties (not printing the changes out). Most of the time I’ve needed this it has been for joints. Backend joint functionality causes a ton of headache when joints randomly disappear (I’ve had arms fall off out of the blue when there was no joint modification being triggered AFAIK) or have Part0/Part1 unset.

Sometimes code sets something but I don’t know which code did said change and would like an easy way to track it without tagging all of my potential change code with prints then deleting them once I figure it out.

1 Like

I support this. It would make debugging a lot faster.

Wouldn’t this also be helpful for making sure changes are only done by your scripts and not exploits?

No, as it would only be a tool – not an API that could be called. It would be helpful to have in-game as well if a bug crops up there, but it wouldn’t be built with exploits in mind. With FE I’m not sure property changes are that valuable either.