I agree with what you said here as the current design is simply unusable with my Studio window configurations:
I like its capabilities, but since Iâm a vertical-output user it just doesnât look as good as I expected.
One more thing is that it doesnât have any sort of vertical padding from the bottom which makes it not feel good (only for it resized the way in your post, vertical and narrow)
Increasing the width causes the padding to return as the old output.
When I load into studio, literally all of the output is squished into the right quarter of the window, leaving the left side to be only take up by the error and warning symbols.
At least itâs possible to resize each section, but itâd be preferable if it would startup in a position where it is at least readable.
Literally the thing iâve always been waiting for, debugging is going to be so much easier now!
I donât like that the print function can throw errors. I imagine this will cause incompatibility issues with some older games. I also donât see why the print function errors with âinvalid key typesâ and recursive tables, neither of these things should be an issue.
For invalid key types, tostring can be used on any value type to convert it into a string, meaning any value should be compatible.
For recursive tables, when one is reached it could simply be printed the same way old tables were, rather than throwing an error. Developers shouldnât have to remove self referencing values from their tables just to be able to print them.
Example for recursive tables:
local PlayerData = {
Player = game.Players.LocalPlayer;
Guns = {};
}
local Gun = {
OwnerData = PlayerData;
Ammo = 10;
Damage = 10;
}
table.insert(PlayerData.Guns,Gun)
print(PlayerData)
-- Output
{
["Player"] = dogwarrior24,
["Guns"] = {
{
["OwnerData"] = table: 0x62538af12d5a0ea8, -- Self referencing table printed like old output
["Ammo"] = 10,
["Damage"] = 10
}
}
}
I would like to hide plugin and core errors specifically, not all errors. I generated an error but I couldnât determine if thatâs possible. Is there a way to do that?
I like where this is going! I have a few complaints though.
I only care about the Message column and Timestamp column, not so much the Context and Source. I canât really hide them without squeezing them, but if the Source column wraps then so does everything else. I just want to be able to hide certain columns to make room for the stuff I care about.
And then thereâs this. It looks studio doesnât remember how iâve resized the columns to my liking.
Last time I had studio open, I squashed down the Timestamp column, the icon column, and the context column. But opening studio later, everything is all over the place, nothing like how Iâd done. (The left-most column seems a little wide for tiny icons that look no larger than 16x16)Otherwise, Iâm liking this new output and keeping it enabled, usable enough for me and I personally prefer it over the current output window.
(Edit: I would like to see those white borders removed too, but thatâs more trivial than getting this thing to work)
Update - This output does not have a fun time with many subsequent prints. My PC isnât a powerhouse, but even with plenty of time in between (seconds even), 500+ prints takes a HUGE toll. This output is not usable if you plan on printing a lot of the same things and donât have a very good PC.
Update again - This is now completely unusable unless Iâm in âLog Mode,â because otherwise printing looks like this.
This has to be truly one of the best updates. As a programmer, the output is basically a window that I spend most of my time in (after the script editor of course), and this update made it 100 times better. Thank you!
So many times I had to make separate scripts just to see inside tables whenever I ran print(Table)
. This update will make it super efficient and will decrease development time. Thank you very much!
Another amazing addition. Not sure if this applies to plugins, but if plugins are being filtered out, then you grabbed my attention. Plugins are sometimes must-haves when developing, and I do happen to have that one plugin that errors every time you press the âplayâ button. Now, I will no longer have to worry about that (hopefully), and when I do error catching, I no longer have to be flooded by normal output.
Yet again another amazing feature. I am not really the searching type, but there have been times that I did want to look for a particular thing in the output and I just had to search through to find it. Thank you.
Conclusion: This update has to be one of the greatest yet, at least for me. This will help me with developing a lot. Thank you to all of those who worked on this. I canât wait to try it out. Trully amazing!
(P.S.: If you could add the ability to track back to a local script after the game stopped running (currently, you can click on the output to open the script and then stop the game to keep it open, but after you stop the game, you can no longer click to access it), then that would be amazing as well)
I love you
In this case, it would have to reference its memory location because if it were to go through the details of the table it would be an âinfinite loopâ of references to itself.
We can print tables!?
This is one of the best Outputupdates ever!
Just, how this works? I really am curious, do this works as you are using internal C++ Code or something else?
I get extreme lag when running a game that prints a lot every so often. Now obviously a normal game wouldnât print that often but I have constant updates because of a Guest system and I want to know what each guest is doing. Before with the old output it could handle hundreds (even thousands) of recurring prints fine but itâs beginning to lag a lot with about 30 outputs.
This is probably because of the different data each output now produces (timestamp, context etc.)
Other than the severe lag, this has been a much needed improvement for so long! Reading the context as a string is much nicer than simple blocks of green or blue at the beginning.
Being able to identify more than just client + server outputs is very, very nice, and toggling whether you see every output or just errors is such a useful feature! Fantastic job!
Dumb question probablyâŚbut how do I enable this new expressive output window? My Output window looks nothing like thatâŚ
File > Beta features > scroll to Expressive Output > set to true, save and restart
The performance of this new output is absolutely abysmal. Try printing a simple value once every frame and observe as the output is hit with insane lag and choppiness. The old output could handle multiple prints per frame with no issue.
I suppose once it reaches the reference to itself, it could just have a string there instead saying âReference to TableNameâ or something instead of repeating the same data infinitely
times = 0
repeat
wait()
print('a')
times = times + 1
until times == 60
Yep. Dropped to 30 - 40 frames after running this in the command bar, not even when playing.
I really hope this wasnât written in Roact. I get the fact that roblox really likes to dogfood luau and push roact (which itself isnât the best for performance), but the debugger is definitely not the place to do this. Itâs too critical for studio performance and debugging to leave to a luau implementation.
This is actually something I was wishing would happen a few days ago. I was debugging a table and thought âman, it sure would be nice if I could just print the entire table.â Now I can do that! This is such a fantastic update that I am sure will many headaches in the future. I am loving some of the recent updates; keep up the great work!