There’s been a lot of hype around NFTs and Web3. Today, I’ll discuss the issues and myths surrounding NFTs in games, as well as how to create a truly decentralised game.
Let’s get started.
In 2007, a friend of mine used SA-MP to create a mod for GTA San Andreas. He designed an online RPG in which you must work to own property, guns, or cars. You might apply for various jobs, including taxi driver, rubbish collector, policeman, vehicle dealer, and driving instructor. The fact that it was geared in a multiplayer context was particularly appealing. This game had approximately ten active gamers, and we used to spend a lot of time playing this mod. Another nice feature was that purchased assets were saved on the server and password-protected for future use. Virtual money was obviously involved, which was also stored per account. Unfortunately, when the server stopped working, all of these assets were lost. All this hard work was lost.
One can argue that this can solved by using smart contracts on public blockchains. Example storing persistent data on Ethereum/Polygon. But could it really be solved that easilly?
Ok. Let’s imagine some cool scenarios. In the future Rockstar implements NFTs for GTA online and the majority of the stuff is saved on the blockchain. Example: Ownership of Cars/Planes/Helicopters etc. Or Activision creates NFTs for Call of Duty online. Example: Weapon skins, Trophies etc.. Or EA Sports will turn all the football players into NFTs. With these scenarios, there will be an opportunity for open trade between all these virtual assets. People can buy directly from each other, swap with other tokens, convert NFTs to Bitcoin and then to Euros, etc. Well, this sounds all exciting but what happens when the online servers shut down? All these NFTs are rendered useless. All that hard work is lost. The only advantage during this process was that people could trade freely on the blockchain, and one could monitor the number of NTFs in circulation. But is this really decentralised?
It is possible to argue that this problem can be remedied by making the code open-source and allowing others to host their own servers. Now I have serious doubts about this. Do you think Rockstar/Activision/EA Sports will open-source their code? Most likely not. Even if they do, hosting such games will require a lot of resources, and there’s a good chance they’ll rely on third-party services, such as Oracles. Another issue with open-source code is that it is not always free to use, even if it is publicly available. For example, the game Sunflower-land (which runs on Polygon) contains open-source code, but it is clearly noted on GitHub that the assets/code cannot be reused. Is this really a decentralised system?
Now there is another problem with NFTs. Wait what? Another problem? Sadly Yes.
Due to storage constraints, 2D sprites and 3D assets cannot be stored on the blockchain. You can save the hash of these assets instead. So, the main question is: where will these assets be kept? One argument is that they can be stored on centralised infrastructures, such as Google Cloud Storage. But shouldn’t our game be decentralised? One could argue that these assets should be backed up using IPFS or FileCoin, which unfortunately would further complicate the process. Also, IPFS does not guarantee that the file stored is indefinite. Is this truly a decentralised system?
Ok, that’s enough problems for now. But…….. I have to mention another problem. Some smart contracts are NOT self-governed. This means that some actions have to be processed by the contract’s creator. So basically, the contract has an owner (admin) that controls stuff. This is usually done to control or safeguard some processes. But again. Is this really decentralised?
So, as you can see, I’ve been asking the same question repeatedly. “IS THIS REALLY DECENTRALISED?”. I believe in understanding and solving the mentioned problems; we have to analyse what Satoshi did with Bitcoin. So, for sure Bitcoin is decentralised. No one can argue against this. Code is open source with an MIT license; people can freely host their own nodes, create wallets; mine, trade, etc. All of this stuff does not require third-party servers and is not governed by anyone. So, this means that decentralised games have to follow these principles outlined by Satoshi. Now I must admit that with games it’s a bit more complex.
Here are some guidelines that a decentralised game must follow:
- Game must be open source with an MIT License
- Game must be allowed to be played by different gameplay rules
- Hard work should not be lost
- Core infrastructure should not be dependent on third-party services
Game must be open source with an MIT License
This means that the game’s infrastructure and assets should be open source, with permissions for Commercial Use, Modification, Distribution, and Private Use. Anti-botting and other backend services should also be open to the public. This implies that if the original company stops supporting the game, developers can easily host or change it in the future. Any 2D/3D assets representing NFTs can be recovered.
Game must be allowed to be played by different gameplay rules
Back in the day, people used to collect Pokémon cards. Every Pokémon had its own ability. People were allowed to create their own rules to play with these cards. Obviously, there were the official guidelines, but they were not forced on the players. Same thing with Monopoly. You purchase the game with all the assets, but you can setup and play by your own rules.
In decentralised games, people should be allowed to either play by the official regulations or else create their own rules. In case the server running the official regulations gets shut down, people can still play the game freely. Also, people should be allowed to add on mods and connect with their preferred servers.
Hard work should not be lost
In case a server is down, players can easily shift to another server without losing data. For example, the Electrum Bitcoin wallet connects to a random node on startup. These nodes are hosted by different people and are not controlled by the same organisation. So, the code should be designed in a way to allow players to connect with different hosted infrastructures.
Core infrastructure should not be dependent on third-party services
Multiplayer games are a big headache. Running a multiplayer game on third-party servers like Firebase, Steam API, PhotonCloud will increase the chance of having the game shut down in the future. Ideally, the multiplayer infrastructure should be developed using open-source libraries such as Mirror Networking for Unity. Developers can freely host the code on servers without relying on mentioned parties.
As one can see, truly decentralised games are very hard to design & develop. I might have missed something in the above guidelines, but they have to be designed and developed as Satoshi once envisioned Bitcoin.