Control Nodes afficionados and maniacs call to arms!

Godot Version

Godot 4.4+

Question

Developing an in-house Android app (a repertoire of harm reduction resources, etc.), and would like to stand on the shoulders of the giants who’ve already tackled some or all of the many issues.
So, if you’re a Control Node expert (looking at you 100% Control nodes games and apps) or know of relevant resources to gain such knowledge, please lend a hand and help make the world slightly better one person at a time !
Thanks in advance, hope this doesn’t turn into a replay of Beckett’s eponymous work…

I already know of :
https://www.reddit.com/r/godot/comments/uislpm/godot_for_gui/
https://www.reddit.com/r/godot/comments/10y2hlo/when_you_use_godot_to_make_an_app_instead_of_a/

Looking for resources on building apps with mostly if not 100% control nodes, and the relevant knowledge.
Cheers, and thanks !
N.

There’s plenty of tutorials on the Internet - you already got a couple and there’s a ton more. I honestly don’t think there’s much value in anyone providing you with 10 more links that you can easily find just googling for them. I’m not to say that if someone has a particularly good tutorial - you’re more than welcome to link it here. I learned my way around the Control nodes mostly by just trial and error on my specific projects.

Having said that - maybe you can share any specific pains that you have in regards to Control nodes that we can help you with? Or maybe there is a specific idea that you want to portray with Control nodes that you don’t know how to approach? Learning is most efficient on specific examples.

1 Like

There’s plenty of tutorials on the Internet - you already got a couple and there’s a ton more. I honestly don’t think there’s much value in anyone providing you with 10 more links that you can easily find just googling for them.

That has a lot to do with my request : there is a lot of knowledge spread around, some relevant, other outdated, etc. I was hoping to get pointers to specific, valid for Godot 4.4+ resources from those who’ve actually designed and coded UIs in Godot. Hoping it’ll be useful to anyone trying to make good UIs in Godot, with a keen interest on mobile particulars.
Using Godot, 'cause I don’t have time or resources to tackle pure Android development, particularly the build process parts. I find it a good compromise as a lo code solution.
Don’t need fancy gestures, or sensor utilization.
Basically, just doing a front end for an existing DB (more like a simple table, or two ;))

And yes, I’ll be sure to ask specifics as they come along.
Speaking of which : any good, mobile friendly Table/Grid view controls out there ?
Any way to easily switch from landscape to portrait at runtime ? Anyone got solid pointers on how to do this in GDScript ?
It’s a very low userbase project, but that might change, as it might be used as a live proof of concept app to get specific financing for its continued (re) development for wider public release through Google and Apple stores, plus desktop ''web" apps. Whether that would still be on Godot will depend on what I can manage to do here.
For now, it’ll be side band loaded by myself on the Android phones we provide our participants with.
Thanks for taking the time to answer, much appreciated !
Keep up the hard work and fun,
Cheers !

1 Like

You can easily do a table with a combination of HBoxContainer (rows, kinda) and VBoxContainer (columns, kinda). Or alternatively a GridContainer, which will wrap your Nodes to another row at the end of the row.

At the base of your table, put a PanelContainer node, and play around with its StyleBox panel setting in the Theme Override section. You can put a border, margins, background, etc.
As a child to that PanelContainer, put a GridContainer and change its columns property to whatever you need as a number of columns, e.g. 3.
Then, as children to the GridContainer, put Label nodes. Suggest to put at least double the amount of columns you set up to see how it wraps rows, and always make it a multiple of your columns number. You can then put some content into the Labels to see how it all behaves. Just make sure that your Labels are the same fixed size, otherwise they won’t align into a proper table. You can turn clip_text to true and set minimum_custom_size to make them properly fixed in size. You can change the label’s panel theme override properties too to have borders etc., so it looks like a proper table.

Using HBoxContainer and VBoxContainer would be a bit different, as you need to think in terms of rows and columns separately. I usually prefer doing it this way.
You also start with a PanelContainer to do some basic foundation, and then put one VBoxContainer as a child - no matter how many column you need, one VBoxContainer should be enough, unless you need some specific different behavior of some columns. Then, as a child to that, you put HBoxContainers in the amount of how many rows you need. In each of the HBoxContainers you put as many Label nodes as many you need columns. Ideally all should have the same amount of Labels. Each of these labels will serve as a column value for this specific row. Again, I would suggest to fix the size of the Labels, otherwise they might not align. And change the style of the labels to be more table-like.

Be sure to play around with container sizing properties - see how it behaves when you mark it as extend vertically, horizontally, shrink end, full rect, etc.

You can also play around with a ScrollContainer if your table gets bigger than the size of the screen - you just put it as a parent to your first GridContainer or VBoxContainer.
You can also think about using SplitContainer to make your column width or row height resizable like in Excel. But that’s a bit of a hassle right now, as with let’s say 15 columns you need to stack 14 SplitContainers on top of each other, and you need to synchronise them across your rows with signals. I would put that aside until much later if I were you :slight_smile:

Sorry I can’t put any screenshots or examples, but I’m writing this on mobile. Hope it makes some sense.
If you have any other specific questions - let me know.
I would highly suggest just sit and try it out on your own, you will learn it quicker than watching any tutorials.

DisplayServer.screen_set_orientation()
Check out the docs here:

1 Like