Ideas gathering: Use IPC to let engine and tools communicate

(Thomas Schaller) #1

This is not an entirely new topic, but I think it makes sense to start a thread about it here; the discussion shall also serve as a basis for a future RFC.


The idea is to have a versioned protocol the engine uses to communicate with all sort of tools. What this includes is up for discussion.

Prior art

I’ll edit this thread and add stuff whenever there seems to be a consensus on something.

(Fletcher) #2

Would this include tools not extant on the same host? i.e., could two editors being editing the same scene collaboratively?

(Thomas Schaller) #3

I think it would make a lot of sense to scale this communication across the network, so we could even have a single machine providing common resources (say assets, or a scene) and then multiple computers accessing them.

Things I can imagine here are:

  • storing assets on a common server and eventually building them on there
  • basically hosting the whole game on one machine and let other people collaborate
  • delegating tasks to another computer to save resources on the user’s machine

(Fletcher) #4

Torrenting works surprisingly well for asset distribution

We’ll also have to allow for a user-supplied encryption key.

(Fletcher) #5

This is actually a perfect use-case for grid computing, now that I think about it. It’s how graphics rendering farms have worked for years.

(Thomas Schaller) #6

I should mention, there’s a prototype for an editor already by @randomPoison:

(David LeGare) #7

Yup! This separating the editor from the running game instance is one of the core design principles I’m following for the editor. There are some issues that I expect will come up as a result (performance of serializing game state every frame, being able to render the game into the editor view), but I’m going to try to follow that model until it becomes completely clear that it won’t work.

(Unmellow) #8

this is in fact how xi-editor works so maybe you could collaborate with them in some way
like using JSON RPC like they do? or convincing them to use some other RPC?