Sylve Chevet

Four challenges in blockchain gaming

Blockchain gaming is having a moment. With record-breaking fundraising, a new business model called Play-to-Earn, promises of better interoperability, more control for players in the upcoming metaverse; it's met with both excitement and skepticism.

I want to pitch in and list down some issues that I believe are still not solved and offer perspectives on how to solve them.

I refer to blockchain games as games that have some of their core mechanics handled by the blockchain. It's a spectrum ranging from weakly on-chain games like Sorare, that only require you to buy an NFT to play the off-chain game, to strongly on-chain games like Cometh that actually require the player to interact with the blockchain to play the game. I highly recommend watching this EthCC talk by @wighawag on how he built a game entirely on-chain.

I'm not considering block time and overall blockchain speed as a problem as it's a general issue for most blockchain projects. I'm interested in problems that will remain even after blockchains have sped up.

Problem #1 Multi-accounting

Overview

Most games implicitly rely on the following rule one player == one human. If not, this means that someone else could be playing in your place, and we usually don't want that.

This rule is easy to verify in meatspace, you can check with your own two eyes or ask for an ID. It's more difficult on the Internet.

It's currently mitigated, not fixed, by a mixture of pseudo-KYC, SSO and ban threats. You can lend your World of Warcraft account to someone and change the username and password to regain control of this account later (provided you still have access to the email address controlling this account). This is a technique used to "boost" accounts: have another player use your account to advance your ranking or get gold coins for you.

The consequences of multi-accounting can range from getting destroyed by a pro player having fun reaping kills in the minor leagues to higher in-game inflation.

Let's say we use a blockchain address as a unique identifier for a player. It has several advantages. In blockchain you can't just lend your address because it would mean lending the private key controlling this address. If I lend you my private key I can't be sure that you're not going to forget it afterwards and that you're not going to steal my funds. Blockchain accounts are theoretically "stickier" than web2 accounts.

But that's only if you've ascertained the identity of the person behind the account. If you can't rely on a solution to ascertain someone's identity you might have the same player running several of your game's accounts. Furthermore, creating a blockchain address is free on most blockchain, so there's nothing deterring bad actors from creating new accounts every time they're banned from a game.

Solutions

NFT-based access

Proof of humanity

Reputation system

Problem #2 Key management

Overview

"With great power comes great responsibility". Blockchain technology puts responsibility in the hand of the user's via its private keys. Users are the only one that can use these keys meaning game developers can't natively perform actions on-chain for the user.

For a weakly on-chain game like Sorare it's not much of an issue gameplay-wise. The player has to buy some cards, they can do it through Ramp, they might not even know they're using the blockchain at all. All of the game is managed off-chain.

For strongly on-chain games like Cometh it's more of an issue. The more actions players can perform, the more they will have to sign transactions, the more the Metamask Fox will pop up and annoy you.

As blockchains speed up, game developers will experiment with more interactive games rather than only turn-based games and asynchronous games. Allowing players to perform more actions on-chain means they will have to sign more transactions. As a former colleague would say "that's just too much click click".

Solutions

Local and temporary keys

Smart wallets and multisignature

Problem #3: Hiding information on-chain

Overview

Let's build a game of rock paper scissors on-chain. One naive way to implement this would be to have a single play function that can be passed rock, paper or scissors. I play the game by feeding the play function my choice, and the contract will compare the moves from the two competitors.

The problem is that nothing stops my opponent from looking at the blockchain to check my move while it's being mined. If I've chosen rock they will surely play paper.

The problem gets even worse for imperfect information games like Battleship (AKA fog-of-war games). If the blockchain stores the state of our Battleship game my opponent can easily ask the smart contract where my ships are on the grid and beat me.

Hiding information on-chain is difficult since blockchain, by essence, is an open and decentralized database. Games that require hiding some informations from other players have a harder time being played on-chain because of this.

Solutions

Commit-reveal schemes

Zero-knowledge proofs

Problem #4: Cheat-to-Earn

Overview

Play-to-earn means players are compensated for playing a game. Axie Infinity players are rewarded for completing quests with SLP tokens that they can trade. Sorare players compete in fantasy leagues and earn ETH.

Both games implement cheat-resistant P2E mechanics:

Let's say we want to build a P2E economy on a skilled-based game like Fortnite. Each game won means you get airdropped some tokens. The game is quickly going to be flooded by cheaters.

History has proved catching video game cheaters is difficult: it (allegedly) happened in the early days, it's an issue in competitive speedrunning, it's an issue even now on AAA games. Cheaters generally use some piece of software to give them an unfair advantage. Aimbots, for example, read the game's memory to show the position of other players on the screen before they've appeared so the cheater knows what to expect.

Current anti-cheat software are sometimes considered invasive and are geared towards producing the minimum viable inconvenience for players:

As many of these games are free to play, game developers also have to balance the ability for cheaters to simply create a new account if they get banned. That's increasingly difficult for the popular battle royale games that are purposely designed to make it quick and easy to jump straight into a game with a new account.

Source

If someone cheats in my Fortnite game it's a bad experience for me but it will only last a few minutes, and I'll quickly get on to my next game. But if I'm expecting a financial reward from this game and someone wins using an aimbot, I've not only been inconvenienced, I've also been robbed.

Token incentives are powerful mechanisms. If cheaters have a financial incentives to bot games and cheat, they will cheat and build AI bots to beat human players.

Solutions

Mitigate botting of P2E mechanics

Decentralized anti-cheat system

Reputation system

The easy way out: just do it off-chain

All the problems outlined above are specific to strongly on-chain games and can be mitigated by using off-chain tools or run more of the game off-chain.

Conclusion

I don't think that having all the mechanics on-chain should be a goal in itself but rather a mean for interesting player experiences and new game use cases. If games are to handle more of their mechanics on-chain there are indeed many challenges to overcome. Sorare and Axie showed us how to build strong games with few mechanics running on-chain, I'm excited to see what we will achieve once we solve these challenges.

Credits

Thanks @wraitii, Decentralized Game Alliance, @EAThomson @wighawag @Qhuesten @guiltygyoza @PEntremont @MerschMax_ for the brainstorms and reviews of the article.