Sharecene: Godot-as-a-browser for P2P middleware hosted projects

Hi everyone,

I’ve been working on an idea, the last few days, and I wanted to ask you if… well if it’s worth the trouble. For my own game, it would work. But doing it just for me and doing it open source for a community don’t have the same cost. Documenting it and maintaining it would be a substantial investment. But an interesting one too so, IDK.

Basically, it’s about using libtorrent to host Godot projects that can then be visited with a “Godot browser”, just like you’d visit a website in a normal browser. Here, instead of a website, you visit a full Godot project, a “Verse”.

Of course for security, it implies a fork of the original runtime where dangerous features have been completely de-implemented: like a web browser, projects can’t access the host filesystem, OS, wild networking, …etc.

It offers automatic hosting by P2P publishing of versioned files (PCK, …etc), a cryptographic system of “lineage chains” to prove ownership (of anything), and a consent-gated capability to open direct channels between user/players and to access internet if needed. There’s also localstorage, like a web browser, and a few more tricks.

What gave me the idea is the recent death of an old game called VEGA Conflict, a few weeks ago. I didn’t play a lot (a long time ago), but I was surprised and I studied its “life” and it was interesting. I thought, for a multiplayer game like that, a P2P middleware would have been ideal, and it would probably be still alive.

Anyway, I don’t have a clue. It might be stupid or good idea. What do you think?

I tried to do my best on the security aspect of course, and then I used gen ai to note everything in a reference document. If anyone wants the gory details, I uploaded it here: https://github.com/botbreeder/Sharecene/tree/main

I’d love to hear your opinion, thanks for reading.

2 Likes

Sounds like Steam. Could be neat.

I think it would be better for you to post what you fed to the LLM, I’d rather read human-generated text and you shouldn’t trust a notoriously unreliable text generator to consider security.

What about “VEGA Conflict” did you like? What made this game interesting and relevant to torrent file sharing?

If you want to get started there is already a GDExtension wrapping libtorrent, this could be useful if you want to use Godot for the UI.

Then you can fork godot-engine and strip out OS as much as possible (would you preserve save file?) for a template; or I suppose you could use the html5 template and use Godot as a web server to host the downloaded content.

4 Likes

I actually wrote what I posted here… can you believe that? Yeah, all those words with my little fingers on my little keyboard, with no AI. Unbelievable, right? What a sad era… Only the lengthy description on Github was formulated using AI, not my post above, and certainly not my ideas.

So yes, what you suggest is what I propose. It is a bit like a decentralized Steam, yes, plus a few bonus trick for multiplayer stuff.

About VEGA Conflict, I didn’t particularly enjoy it tbh. I tried it a long time ago, so I know what it was. I was mostly surprised to see it disappear and I wondered why it did. And I thought, on a medium like Sharecene, it could have survived.

??? This is quite the mixed signal

2 Likes

I wrote the posts of this forum with my fingers. I use gen ai to format clearly everything in the reference document that I uploaded on Github, and marked it explicitly as AI generated.

But in this forum, my posts are all hand written. Is the signal clear?

You know what? i’m tired of talking about AI. Is that all you have in your minds nowadays? I wanted to talk about something, but never mind.

Sure, I think the upsides to a torrent powered game library is it’s low infrastructure and nearly automatic popularity contest. The downsides can be pretty rough though, updates essentially cannot be made, and that popularity contest is a negative feedback loop, games will be “unpublished” if nobody is seeding. Some amount of content vetting must be done presumably by the tracker, but that is required of any downloadable content.

Could you elaborate on these points from the rest of my post?

Did this game VEGA Conflict have some kind of torrent based sharing in-game?

Sandboxing is already handled by web browsers, could you leverage that? Do you see Forward+ and Mobile renderers as a requirement for this to be successful?

Looking into it the game is an MMO with RTS gameplay; sad fact is an MMO cannot leverage torrent or torrent-like connections to lower costs. A central authority is required, and all the time. I’ve worked on MMOs and those server costs can get quite high.
Fighting games can use a tiny server for matchmaking then peer to peer for one-on-one combat, if a player logs off, the other wins, if nobody is playing then the matchmaking server doesn’t have to do anything but wait.

If someone did upload a torrent of VEGA Conflict you may still be able to install the game, but the servers being offline means there is no way to play it, no how.

1 Like

In the project spirit, it is expected that the authors of project keep Sharecene in the background, in their taskbar, to seed their own Godot project, their own “verse”. Doing so, they also share other members’ verses, which means it’s ok to clap your laptop and go somewhere, your project won’t be instantly unreachable.

In fact, I used VEGA Conflict when developing the Sharecene concept, as an example of what Sharecene should be able to do. I took the features one by one, and in most case you can easily imagine the simplest way to implement it. So I tried to shape Sharecene so it can be used to implement them.

Yes it would mean forking both the Godot runtime that gets associated with the PCK when a project is exported, and the editor too, because it has many good thing we’d need here.

But OS is not the only thing that needs to be pruned, there’s network and other things (it’s all in the infamous reference document).

The whole point of Sharecene is precisely to provide a democratic authority layer. The file sharing layer is only for assets and such things essentially.

  • The authority layer provides a system of encrypted chains that allow clients to prove ownership of something.
  • The same system also lets clients donate provable ownership to another client (and not own it anymore).
  • Each verse provides “validator functions” which are dispatched independently. Clients emit small “history logs” that are verified by other clients using these validator functions. If something unusual is detected, the client at fault is marked “rogue” and the verse author is informed. From there, we’re in creator’s responsibility territory, like any online game.

I might be forgetting a few things, but you get the gist hopefully. Ah yeah, there’s the “character book”, an informal but secure black board (each verse maintains a character sheets that can be read by other verses). Anyway, the full description of everything is on Github.