Using IPFS in gaming

I think this might be a very interesting debate. As an open-source game developer, I’ve been greatly intrigued by the idea of game engines using the IPFS protocol for storage. This is especially the case for games with realtime worlds or collaborative editing, which could make great use of direct storage to IPFS. Some great examples are virtual worlds like Second Life or sandbox games such as Minecraft.

Let’s take the later example as it’s more common to everyone. Suppose you want to create a Minecraft server where you and your friends play: First you have to configure and run the server application provided by Minecraft in order to start the server up. You and your players are then limited to the server uptime your machine can provide… close the binary and the whole thing goes down. You also have to host all of the data, which for some games can be a bit straining on drive space.

Now let’s imagine someone forked Minecraft, implemented an IPFS library in the engine, and used it for all forms of world storage… OrbitDB would be a good candidate so let’s assume its model. Whenever you create a new world, it gets registered as a database within Orbit. Every game is now referenced as the ID of that database, you connect to a world by pasting in its hash. The creator of the world is registered as its owner based on their public key, and can give other keys various forms of access to join or modify given parts the world. When a player preforms any action that edits the world, any changes cause the database to be updated and new files to be referenced… for instance, if every chunk (Minecraft’s term for storing a cubic area of voxels) is saved as one file, placing or removing a block there generates a new chunk file then updates the database to reference it. There would no longer be a server doing the computing, each client processes the changes to be made… obviously this opens the gates to trolls and cheaters, so there will need to be some form of verification to make sure the game’s rules are respected and people aren’t adding or deleting whatever they want, for instance by asking multiple game clients to agree on every change.

Virtual worlds like Second Life would further benefit from this model; They allow people to upload models / textures / sounds from in-game and use them immediately. IPFS would provide a wonderful alternative over the standard client - server architecture here: Every SL user would upload directly to IPFS, each asset stored in its network with no server having to host it. It would essentially be what DTube and BitTube are doing as video platforms, except for virtual worlds to provide each and every assets.

Modding in general would become easier as you’d no longer need to manually download or update any game files: The developers of a game can make changes to the game directly in IPFS, making them immediately effective to all players. This may lead to increased control and potential censorship if not done carefully, but as an update or content installation tool it would be very effective.

Overall I believe adopting IPFS in gaming would revolutionize multiplayer the same way it’s going to revolutionize the web. Games can ditch the old “one server, multiple connected clients” policy, introducing a new paradigm in which anyone can make a world that can be joined by any player in the world at any given moment. Just as with the everyday web, this would remove the burden of having to host every part of a site on your servers, needing to ensure 24/7 uptime for your users, and being directly liable for what your user do since you’re exclusively making it available.

I would very much like to know what people think of this. Do you see IPFS being used for storage by multiplayer games? Also are you aware of any game engines that have attempted to implement the IPFS library for the purpose of serverless online experiences? If so please mention them here as it would be very interesting to see this idea in action!

2 Likes

hi,

good idea :+1: i think it can be intresting.

Regards

It’s going on 3 years, and no one has posted any examples? OP, have you seen any movement in this realm since your original posting?

Some people are starting to store WebGL videogames on Filecoin+IPFS, using Slat. I could find these:

But I’m pretty sure there are more. @cake do you know?

1 Like

Sadly I haven’t heard anything new since I made this thread. Over 3 years already… it’s painful to wait so long for a good idea yet still not see it happen. Who knows what the future holds though.

I know that High Fidelity (now called Vircadia) planned to implement additional IPFS storage for assets. I believe it hasn’t happened yet but the plan is still on the table. It would be a nice start at least!

I believe I brought this up with the Minetest team (biggest FOSS “clone” of Minecraft) but nothing new there either. It still feels like voxel based worlds like it could be a great candidate, as players could store chunks of the world which can be regenerated by the mapgen / seed in case the data is lost by all peers. It would surely require a big engine rewrite for existing projects but should be doable… or maybe someone will think about creating such an engine based on this concept from scratch?

It would be great to merge minetest with ipfs…

I’m currently testing out an IPFS based RPG MMORPG, I was able to build a basic pokemon style game with live player positioning using Phaser.js.

Now I’m facing NAT problems but the plan is to let people store their own sprites. That’s a start I guess!

That’s very interesting and sounds exciting! I’m curious to hear how that project goes.

I’m still facing system design issues:

  • my goal is to make a buildable world
  • right now I’m using pubsubs to publish live events, but that depends on peer connection to the topic, so nat is giving me issues
  • should I split worlds by pub sub topic?
  • how to implement some sort of quorum system for data so that events can’t be randomly sent to alter whatsoever?

Again, this is just for fun but I think it’s a nice experiment.

It is great you are making a game ipfs compatible.
About the “pubsub” delay, this is what I experienced when my nodes are connected to the whole IPFS public network. I managed to control swarm through people likes and get a more responsive network (no more DHT leaks).

Astroport creates a cellular programmable automate, and is used as a distributed video club of friends axiom-team/astrXbian - astrXbian - P2Git

@macchie I would be glad to try your game in such conditions…

1 Like