Iris - Immediate Mode UI library, based on Dear ImGui

Yes, a console being flooded with information is notoriously a great way to debug and visualize complex data structures. Jokes aside, what about information that updates on a per-frame basis, or at the very least, very rapidly. Not to even mention how useful the library is for updating information, like tweaking properties or settings within your scripts at runtime or even managing complex systems. Visualizing a look vector as 3 statically positioned numbers that change values automatically is significantly easier when it’s not scrolling up and down.

Also, no, it’s not for rookie developers. From what I understand, even Rockstar Games uses a visual debugging system (I believe they even use ImGui, though I could be wrong or it could be a fork). Having a better way to transmit and manipulate information outside of a scrolling box of un-formatted text, though you may not believe me, can be immensely useful even to experienced developers.

As well, no it is not a plugin, it’s a library (as the title very clearly states). It is a library that can be used in the context of plugins but it is also usable in-game. By your logic, evaera’s promise library (which, might I mention, is also incredibly useful and could definitely prove to be a great tool for new and experienced developers alike) would be considered a plugin?

7 Likes

Its notorious for bad developers to not delete printing. Printing to debug is a good way to debug your scripts

What are the potential issues of “beatifying” the debug process?

  • You cant check for information only at specific moments (like only when they first touch a brick)
  • It becomes more difficult to figure out why something is functioning in a way you dont intend without being able to check the values of objects at specific lines of code.
  • Its likely you will get flooded with redundant information because its hard to tell a plugin exactly what your thought processes are.
  • Output can be seen directly while scripting
  • All prints are in the same location and share a effective style.
  • You can use warnings to bolden information
  • By relying heavily on automated debugging solutions, you might become less adept at manually debugging code, which can be a valuable skill in more complex or unconventional debugging scenarios.

This response alone is ridiculously ambiguous. And, no, like I said, you seem to be completely clueless to te nature of this library. It’s not for visualizing errors in basic systems, it’s for controlling and visualizing information in larger structured systems (for a generalized example that can be applicable to a lot of situations, imagine lining up a bunch of the vector components of cframes next to each other so you can more easily piece together what your code is influencing and where it may be going wrong).

Also, to further show why your point is naive and ignores the entire purpose of the library, printing things out is also widely considered to be sub-optimal practice. Unit tests and debuggers are significantly better options to debugging, yet printing things out is still widely done because it’s easy and quick (just like a certain library we are talking about!)

6 Likes

roblox do not allow users to upload “libraries.” Do you mean free model/plugin? Oh I think its a module script

No, and this goes to show what I mean. This package is available on Github and via ported versions through package managers like Wally. It’s not a plugin, it is a library.

I apologize if I’m coming off as slightly rude, but to be quite honest, it’s very irresponsible to make declarations about what is and isn’t good practice when you clearly don’t understand the reasons behind many of these practices. Making vague and inapplicable criticisms of something while painting yourself to be knowledgeable about it obviously may have negative effects on newer developers who may not realize the faults in your argument, and thus would be giving up an immensely useful tool because they didn’t know any better.

4 Likes

you still havent convinced me that its worth all this trouble. All the things you mentioned can be done using printing.

Lining up vector components of cframes to “peice together what your code is influencing” is you trying to sound smart.

Vector components are not complex. Just print the vector components and compare them. I still think this is useless.

Not using tooling is what a rookie does. Stop reusing the same point over and over.

7 Likes

No, it’s not me trying to sound smart, and your assumption of that is quite insulting. Visualizing nine different numbers next to each-other instead of in a matrix structure is very obviously not more intuitive, because if it were then the standard mathematical notation wouldn’t be the way it is.

I’m not trying to convince you to use this library, since given your naivety and generally rude demeanor and lack of technical knowledge, it likely is too complicated for your use cases. I’m simply trying to explain flaws in your argument to make this library more approachable to developers who may not be able to see through your inapplicable blanket statements.

5 Likes

I would like to apologize for my behavior. I would like to critically analyze this source to determine its relevance for myself and other creators. This information will serve a valuable purpose in determining this plugin’s effectiveness. From now on, let’s not resort to name-calling or insults.

From my understanding, this is claimed to be a library. I want to analyze critically the lack of clarity this article provides in its usage. Under the usage section, it claims that

Furthermore, it does not provide any relevant information to determine its use. After reading more, we can discover that they state the following.

From this data alone, it can only be concluded that this is a plugin of some sort that is intended to streamline the process of creating GUIs in your game. it does not mention its capabilities but rather it assumes users know external platforms.

It literally says it’s for “streamlining the process for creating visualization, debug tools, and data input” in the quote you used. It doesn’t assume anything of the user, it just literally says it’s there to streamline debugging and data visualization. I appreciate you being more polite about your points though, thank you for that.

Edit: I’m going to be heading off now to go to sleep but I look forward to continuing this disccusion tomorrow. Good night :wave:

4 Likes

I apologize for missing that. Even in that case however its quite ambiguous what they mean and it would serve them well to clarify its uses. Not just that but it should also convince users of its benefit over normal debugging. This would help to bring the tool to more users and free up common confusion.

Not entirely sure what is the issue in using a “Free model” like Iris, this library was made for other people to use it for themselves, meaning that it has been created, built and planned for a easy use for everyone, it literally EXIST to be used by you or me.

Those developers are contributing on a product with no compensation for it, and you just outright claiming that using this library will reduce the quality of a game, which is disrespectful.

It doesn’t mean you are necessarily wrong when you criticize, but i’m afraid some of your arguments like “Roblox output is literally all you need.” seems a little too personal ? i know you’ll do well with just printing as a solo dev, but i can’t really imagine a large scale project where scripters need to toggle on/off their debugs when they have to log off everytime.

Moreover, the output is just a warn/error/cmd history, you only need to check out some of the post above to see this library’s true potential :

4 Likes

isnt that what roblox is based off? parent/children system? How does that make you more advanced

Well looking at other scripters, most of them do not know how to do/comprehend OOP yet. And I’d believe so yes ROBLOX is based off of OOP. But i don’t see how that proves anything on your end? Not everyone is going to know OOP as soon as they start scripting just because ROBLOX is OOP’d by default if that’s where youre getting… idk. And besides, weren’t we talking about Iris library? Why we talking about me? You’re just nitpicking no? I dont wanna argue though so just leave it as is :grin:

1 Like

???

1 Like

Wrong, debug text is useful for debugging issues in production

2 Likes

This is just disrespectful, maintaining an open source project is extremely difficult and tedious especially when you aren’t getting paid for it, it is super demotivating when people come along and just say “Oh yeah your work is useless and no one should use it”…

10 Likes

This has to be the most straight up disrespectful reply I have ever seen in the devforum for something so useful and from someone so ignorant. It’s like hearing “we don’t need ModuleScripts, I’ve never needed to reuse my code for multiple scripts!” – because you’re so good at coding, you just manually type everything, yeah?

If you’ve never used the workflow that this library was intended for or issues that this was meant to solve, then just say you don’t understand why it’s necessary. Even I felt the same way when I first saw this, until I started using it and realized how easy it made a lot of certain things. I agree there could be better documentation, but for now it seems the people who would use this are people who already know how to.

And get off your high horse. You seem to put your purist form of scripting in high regard, while the rest of us just want to get work done faster and easier so we can work on better stuff. If you’re offended that there are tools you can’t understand, that’s your problem because the comments here have tried to explain it multiple times.

9 Likes

There’s nothing wrong with using GUI that isn’t made by you. Plus, this is helping developers alike and I think it does it great.

This is probably the WORST take I’ve ever seen in my history of being on the developer forums. Let me just break down the things wrong with this:

“Nobody is making a text label to debug our code. We are all printing our issues.”

This is significantly wrong. Most people have debug GUIs to manage their stuff internally. Printing is for low-level debugging, like barebones stuff.

“This is just going to make my game low quality because I am essentially using free model GUI instead of using my own GUI”

How is this going to make your game low quality? The idea of re-using other code to improve your game is the fundamental of open-source software. If your whole tech stack is going to be proprietary code then you’re kind of missing out, just saying.

“This plugin is useless and a waste of devs times.”

First, this isn’t even a plugin. This is a library. There’s a difference.

Second, you couldn’t be more wrong when stating that Iris is useless. You may think that it serves no use, when in reality it has more uses than you could even think of. Iris is probably one of the most useful immediate mode UI libraries currently available for Roblox.

Third, Iris is not wasting anytime. Rather, YOU are wasting time by creating these useless arguments that contribute absolutely nothing. I’m sorry if I hit you in a soft spot but it’s just the truth. Your arguments are just plain wrong.

12 Likes