What parts of a game will we be able to run on-chain? How could the architecture look like when we try to put more parts of a game on-chain? Obviously we can go beyond NFTs, so what do you think will be possible? What are the limitations?
Just curious to learn more. Are there good articles/videos about this topic?
The biggest issue is going to be latency. Reading from the IC can happen in a few hundred ms but writing is on the order of a few seconds.
If u keep game state on the IC, players could only issue a command every few seconds.
Imagine hosting a 3d world like Minecraft on the IC. Every time a player places a block, a smart contract on the IC updates the world state. This would feel pretty sluggish with even a few seconds delay.
Some low-latency games might run ok fully on-chain, like poker.
But for metaverse-type games, some stuff will have to run off-chain. The world itself could be stored on-chain and loaded into clients that talk to a centralized server for live interaction with other players. When a player modifies the world, they could make edits in batches (ex, a map editor) to reduce the amount of transactions. Clients would cache data and download updates to the map in batches.
Thank you very much that is a great answer :).
Concerning this: “When a player modifies the world, they could make edits in batches (ex, a map editor) to reduce the amount of transactions. Clients would cache data and download updates to the map in batches.”
Are you basically saying that (e.g.) map changes would go through consensus periodically? That is what I thought/hoped to be possible. Live interactions between users would need to be handled by an off-chain server but eventually aggregated/batched state changes could go through consensus. In a shooter game, people would basically be killing each other off-chain but periodically it would be tracked on-chain who died, is that right?
How would that work in practice? Would one node of a subnet be the main server for the game and then periodically interact with the others? Do you think that is “simple”/practical to build? What are the server requirements that actual games have? I’m unfortunately really not an expert.
I could be really powerful to have larger parts of games on-chain. NFTs already change the entire incentive structures of games by disincentivising developers to completely change the game/platform without the users consent. We could massively add to that with the IC. Additionally, if the interaction with subnets, as a neutral incentivisation layer, are reasonably quick and scalable (which they are), we can build much more elaborate incentives into games. I’m really looking forward to see how this plays out.
Yeah on-chain maps are going to be a big part of gaming on the IC. This is what gives the metaverse legitimacy- that permission to modify the map (IE property rights) is enforced by trustless computation.
In terms of player actions being on chain, that’s going to come down to a tradeoff between security and latency. Whomever is hosting a centralized server for live players could modify the server code and cheat. For slow-pace 2d games like board games and gambling, running the entire game state on-chain would ensure no one cheats. But for live world 3d games, the latency would be too high for player actions like movement, deaths, etc.
There will pretty much always be a centralized server in live 3d world games just due to the networking overhead. It is much more efficient to use a hub-and-spoke topology compared to a peer-to-peer mesh topology.
Potentially we could see 3d worlds run on a zero-knowledge rollup type system, where the centralized server spins up a zk-rollup for each game instance and sends proofs to the connected players that the game computation was done correctly. Then at the end of the game the zk-rollup state is settled on the parent chain.
Thank you very much, very interesting!
I’m wondering if we could design better incentives for the entity running the server to not act malicious instead of having to run the entire game on-chain. But I know too little about the requirements for such servers… But it is already awesome that we can potentially put many more aspects of a game on-chain.