I have a couple of questions about making Godot-made non-game software support features and integrations that weren’t there before, for example:
Support for Serial and USB devices like a barcode/QR scanner, Arduino boards, Raspberry PI microcontrollers etc
Syncing and networking: Syncing data/databases over local networks/WIFI or over the internet
Integrating small AI models to work locally and offline within the made app, like an AI-supported offline translation/transcription app or AI photo editing software or smart database search and queries
I LOVE Godot so far and I extremely admire how the whole thing works and how easy and convenient it’s to build things with it, I don’t even want to think about learning/using any other software/languages/frameworks like Flutter for example to build apps supporting such integrations mentioned above.
Is my dream possible? If so, how and where to start?
If not, how to make it support such things?
Can I achieve it by building addons? And if it’s, what skills are needed to do so? I see people developing addons with Rust, C#, C++, GDScript, Java, is any language possible?
Last question, if the whole thing is not convenient to chase, what are some other good alternatives that are reliable and as easy as Godot and are surely not gone any time soon that can be used to make cross-platform non-game software?
Ports may be better supported in C#. You can kix and match GDScript and C# scripts with an official build of the engine, no C/C++/Rust modules required. It’s discussed here for Godot 3
HTTP requests are supported out of the box. You have to instantiate a http request node and it then has the responsibility for that request - it gives you back a response with a signal
No idea you could run a parallel process (server) with and talk to it with http, I’d say
Concerning barcode and QR code scanners: you probably require no special set-up for these devices to work. They typically behave like regular keyboards, and if you set up Godot to listen for specific keyboard input events, you’d also pick up whatever it is the barcode scanner sends.
For AI, you can make your project connect to an online or local LLM API using HTTP requests. I’ve personally done it - it’s fun to use an LLM to exchange trash-talk with enemies during combat.
If you mean making your project run the LLM directly (so basically do what Kobold or Oobabooga does), I don’t know for sure but I also don’t see why it wouldn’t be possible.
My personal opinion: you can generally assume Godot can let you do anything through code. The more relevant concern is performance, and that depends on the language you use, but also how much you optimize your code.
I’m trying to rely less on others’ work because they may discontinue it at any time.
This is nice! Thank you.
So, is it mature and convenient to make a Python backend that the Godot app can talk to?
That’s new to me, so basically those scanners are kinda “get barcode/QR, translate it to a number/text then send these to the PC as a series of Keyboard inputs” right?
Hahaha, that’s a fun way to make use of AI
Yeah, that’s what I am trying to achieve
Do you mean GDScript vs C#? Or the language of the backend/framework to be integrated as a backend?
Does this mean that there are no limits to extend Godot functionalities as long as I am able to code this thing following the extension system?
But you can just use a plugin and if it stops being maintained you can maintain it yourself for your own use, also it no longer being maintained doesn’t guarantee it will stop working
I see your point, but there are no extensions for Serial and USB printers right? Or integrating AI so that Godot-made software wouldn’t rely on external tool to run the model locally?
There are plenty of LLM integrations, for printers not that I know, but shouldn’t be too hard to implement (though it’d have to be platform specific, and generally messy on linux due to different interfaces)
For the purpose of this thread: yes, that’s how they work. (Just in case you find it interesting: barcodes can be printed to adhere to certain ‘symbologies’, which encode data in a standardized pattern. There’s standardized formats for device serial numbers, batch numbers, and also formats that the meat industry uses to digitally communicate that a cardboard box contains twelve kilograms of frozen chicken gizzards from an abattoir located in Sucre, Bolivia. And that’s just the tip of the iceberg. The rabbit hole goes deep.)
I haven’t used the plug-in myself, but there’s this library for serial communication.
I don’t know about any plug-ins that let you print to a regular desk printer from Godot. But if you want to print to a label printer, you can do that over a serial port and TSPL2 (if the label printer supports it.)
Idle thought. With a free copy of Godot, fifteen-dollar hand scanner, and a 900 dollar thermal transfer printer (labels, spools, and ribbons not included), it is possible to make a very bad light gun-ish game that prints you a sticker as a reward if you get a high-score.
Is this all for one single project, or multiple projects? Because I have no clue what you would use all of those things for and my curiosity is slowly killing me.
Ah sorry, I wasn’t very clear: You seemed to be asking if your project could be done in Godot/GDScript. I was trying to say that yes, it likely can be done. As far as I can tell, GDScript can be used to write any program. Personally, whatever I’m trying to program, my concern wouldn’t be “Can GDScript do this?” but “Will performance be good enough in GDScript?”
Also, you may have heard that GDScript is lacking in performance compared to other languages:
I’ve personally done some surprising things with GDScript in terms of performance, and I think part of its reputation for being ‘slower’ might be that people are often not optimizing their code as much as it could be. I’m not saying GDScript is equal to C# or C++, but it’s more capable than people sometimes assume.
Unfortunately I don’t know anything about writing a program that runs an LLM, so I can’t tell you if GDScript is suitable for that, or what other language might be best
It’s a retail/storage business management system with multiple Points Of Sale, AI for fast database inputs, outputs and queries, and mobile apps for employees to quickly access their specific role tasks. Along with multiple central PCs/Servers that serve all of these points and peripherals.
I see, one essential thing that I believe would be a drawback for Godot is databases and tons of retail products info that need to be queried in an excel like sheets/tables.
Guess I’m just trying to utilize the wrong tool for the job, I really like how Godot works and I wish there was a similar way to build cross-platform enterprise software.