Debugging: Why are watch values so limited?

Debugging blueprints is really hard. I mean I appreciate the level of tools we do have, but they seem to fall well short of being useful for anything beyond the most basic scripts. Now that I am trying to debug a rather complex set of scripts, I am finding them very lacking.

One huge problem is that when debugging blueprints, it seems that the ability to watch a value is extremely limited, and almost never works. 9 times out of 10 the value just isn’t visible. About the only reliable way I have seen to be able to actually see a value in a running graph is to do a SET to a dummy local variable. Values going in and out of functions can’t be seen, values coming out of structs can’t be seen, values in loops (for, while, foreach) can’t be seen… Oh and construction scripts, can’t be debugged at all.

Oddly values that you set to watch show up in the debug window/tab only when the game is NOT running, when there are no values to see, then one you start debugging those inexplicably are removed from the debug window/tab.

I was hoping I could at least use BP for some rapid prototyping before moving the code into C++ for performance, but really it is far more work to do it in BP than to just do it in C++ to begin with and it would be easier to debug in C++ as well.

Is there any hope that these tools will improve in the future? Or is BP pretty much set feature wise and just stability issues moving forward? I lvoe BP, I love the concept of it and frankly its actually a lot more FUN to use than writing code, but it just doesn’t feel rich enough once you have complex scripts that need debugging.

I agree so much with this - debugging anything beyond simplistic blueprints is very aggravating. It would be a lot easier if you could see watched variables at all times, all grouped together in a separate window. If the point of blueprints is to rapidly prototype designs, doesn’t it make sense to have really robust debug tools?

I’m on your side. What I end up doing usually is a lot of print statements and then go through the log and understand what’s happening with the values.