Godot HTTP IPC: Inter-Project Communication

Been messing around with Godot and one thing I really wanted was to be able to separate projects into separate logical units but still be able to communicate between them. I looked around online and people kept suggesting to just use HTTP which on the surface seems a bit silly for programs on the same machine, but also seemed… kinda fun? And if you wanted to split up the programs onto different machines, you totally could, so that’s a bonus.

Preamble over, here it is: GitHub - ZeikJT/godot-ipc: Godot Inter-Project Communication

I’ve used it for my own projects and hooked up one that interfaces with Twitch chat to another so that I can type chat commands and cause other things to happen like updating a twitch overlay that is also built in Godot. Just fun stuff.

If y’all have suggestions for improvements or anything feel free to drop em below, I am always lookin to learn!

p.s. I know junctioning isn’t ideal, but I prefer it to any git submodules shenanigans. It’s built right into the OS, how bad could it be?

2 Likes

IPC/RPC has been used pretty successfully for a few types of applications like Language Server Protocol. I’d imagine it would be much less performant than running the whole thing as a single application so I don’t think this would be generally useful for games, but I can imagine the boundary of making an HTTP request being useful for separating things in some cases.

If you’re interested in making this into a library that people want to use, I think you will want to introduce an API for adding new clients and commands. Otherwise, the end-user of the library will find themselves modifying the addon folder itself and losing encapsulation from the library.

I don’t know anything about junctioning in Windows, but it sounds like it’s the same as the hard links you can make in Linux with ln. If you want to be able to check out old versions of projects and see the old version of the plugin at the time of that commit I would suggest using submodules instead (or even just copying the files in wholesale without using submodules).

I was struggling to decide if I wanted to make it a fully ready to use thing or just describe how I use it. I think it’s a fun project and I want people to engage with it more than it just being a ready-to-use drop-in-solution. And if anyone doesn’t, that’s totally fine, there are likely other better solutions than this home-grown one.

It is totally possible to use it as I described it without modifying anything in the addons directory. Everything there is ready to be consumed without modifying it. And people can feel free to use it via submodules if they want, I just don’t haha. You’re right that version drift could become an issue, but for my small projects it probably won’t be.

It does feel like a thing I wrote and will use as is since it works for me that others can learn from or use if they dare, but I will see if I can make it even easier for people to use in a more drop-in fashion without too much compromise!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.