Why card games don't need NFTs, by a card game developer

A few weeks ago I had a discussion on Twitter with a game developer[1] about using blockchains and NFTs in games — predominantly collectible card games (CCGs), since the dev in question has worked on Gods Unchained, developed by Immutable. It was the first time I'd had a chat with someone working in the industry who believed NFTs were good for games so it was pretty interesting. It even stayed civil (take that, Twitter!) It also made me realize, to my own surprise, that there is one "good" reason, from the developer's point of view, to use the blockchain in your game: it allows you to officially support real-money trading between players while offloading the chargeback fraud risk onto someone else (the crypto exchanges) — I'll come back to that later.

In the end neither of us convinced the other of our position, so we didn't get very far, but they made several specific claims about why NFTs are useful, none of which I think stand up to scrutiny, and although we discussed back and forth a bit, Twitter isn't a great medium for lengthy discussions, so I've written up my thoughts on the various claims here. I reckon I'm qualified to discuss the technical design of digital CCGs in particular — while at Jagex I designed the architecture for the backend of the (sadly now defunct) CCG Chronicle: RuneScape Legends, everything from the client-server comms and matchmaking to the profile servers and databases that stored players' info. Over two years, I was part of the team that built that backend, and finally launching it in 2015 was one of the highlights of my time at Jagex.

Since the thread, I've done a bit of digging into GU. I haven't played it; we didn't discuss the huge environmental impact of blockchain tech in our chat, but I'm loath to take part in a game with such a huge ecological cost, even if I dont mint any cards myself. They're using a custom "Layer 2" solution called Immutable X that rolls up multiple card trades into a single Ethereum transaction, which makes things faster and less environmentally horrendous, but even some Ethereum use is more than I'm comfortable with. Still, it seems to be a perfectly serviceable card game. Indeed, my interest was piqued when I realized that one of the endorsements on their website is from Connagh "Merchant" Hawkins, who I worked with on Chronicle, and whose opinion on card games I value highly.

This is where we started — my counter-argument was that since owning NFTs that relate to cards in a game doesn't give you any intrinsic ability to use those digital cards (which is different from owning some physical cards for, say, Magic: The Gathering), they don't really create "digital ownership". You can own and trade as many card NFTs as you like, but you can still only play GU at Immutable's sufferance.

There's already a lot to dig into here about trading and verifiability, but I think the best way to tackle things is to break things down the way these two tweets do[2]:

("WotC" is Wizards of the Coast, the company that owns Magic: The Gathering. "MTGO" is the online version of Magic.)

1: Blockchain lets you trade when banned

Here's the thing — there's no technical barrier, in a game not using the blockchain to store cards, to implementing a ban system that prevents players from actually playing matches but still lets them log in to sell off their cards. You don't need the blockchain to make this state of affairs possible.

Now, someone might say that a company offering this arrangement could change their minds and "really" ban you, and lock your inventory away. But by the same token, a developer with assets on the blockchain could tell their game servers to refuse to recognize the NFTs owned by the player at the point they were banned, making them worthless.

And here we come to the more philosophical crux of the matter. The much-touted advantage of blockchain tech is that it allows you to operate in a "zero-trust" environment. You don't need to know who you're buying from, and because transactions are irreversible, once a trade goes through you're guaranteed to keep either the NFT you bought or the Ether you sold it for. However, as the buyer you do still need to trust the other party (or the original seller) for what happens afterwards. If you buy physical goods online using cryptocurrency, and the goods never arrive, then unlike normal online purchases where you can raise a dispute with the card provider, you're stuck. In NFT-land, if you're buying, say, an artwork NFT, then the artwork itself isn't on the blockchain, the NFT just contains a URL that points to the artwork. Even if the NFT uses IPFS rather than a normal URL it's possible for the link in the NFT to stop pointing to a resource that exists, as has already happened. And with Gods Unchained NFTs, the value of GU cards is tied to there actually being a game called Gods Unchained to use them in, and it continuing to recognize them, so the value of the NFT is derived from being able to trust Immutable as the developer not to renege on their side of the bargain and hang you out to dry.

A game developer who set out to say "if we ban you, you can still log in and sell your cards" is unlikely to suddenly reverse that decision and leave players in the lurch. Even declaring that only future bans will be "full" bans would be a tricky move. Why? Because it would damage player trust, and poor sentiment from players is the last thing any game wants.

Similarly, it's unlikely that Immutable would ban a player and then declare "we've updated the GU servers so that owning that player's NFTs doesn't give you access to any cards in-game" because it would absolutely wreck player trust. But although it's unlikely, it is doable, which means that GU cards being worth buying is predicated on Immutable being a trustworthy developer. Putting cards on the blockchain hasn't dealt with the issue of needing to trust the developer at all.

There is a non-technical reason why implementing a partial ban without using the blockchain might be a bad idea, though. If a player is banned for, say, racist or homophobic abuse in-game, other players might not like the idea that the banned player can sell their cards and recoup their costs (or just transfer them to another account and carry on). Whether or not that's a reasonable position, again it's something that will cause negative sentiment among players. Saying "we can't stop them selling their cards because they're on the blockchain" allows the devs to keep the issue at arm's length. Whether setting things up to let you wash your hands of the issue is really a "benefit" of blockchain, though, I'm dubious about.

Backfiring potential

However, not only is putting cards on the chain not necessary to provide this feature, there is a scenario where not being able to block trading of cards becomes a massive headache for Immutable: bug exploitation.

Various different things go on the blockchain in GU, including card packs, and normal cards that have been upgraded using an in-game currency called Flux and become tradeable for ETH. Let's imagine a player discovers a bug they can abuse to generate unlimited amounts of Flux. They gather lots of cards to upgrade and set to work. Whether or not the smart move at this point is to abuse the bug slowly and attempt to go under the radar, or go all-in and try to use it as much as possible before the devs pull the plug depends on whether you expect Immutable to be able to quickly spot players generating only slightly unusual amounts of Flux. I've no evidence one way or the other, though I've been in the industry long enough to know that the answer is more likely to be "no, they can't" than you might hope, but let's assume our exploiter decides to go flat out. They wait until 3am on a Saturday morning in whatever timezone the devs are in to delay their response, and get to work.

Let's imagine that, among a whole suite of other cards, they generate lots of NFT copies of Super Awesome Card. There are 150 legit copies, and they manage to generate 300 more before Immutable steps in[3]. Obviously this will tank the price of Super Awesome Card, but given that the exploiter is getting these cards out of thin air, as long as minting one extra card increases the total worth of their collection, they might as well carry on.

Immutable's initial steps in this scenario are fairly straightforward:

  1. Turn off the servers. This will stop the exploiter, plus anyone else they may have told about the bug.
  2. Find and fix the problem. Test the fix, deploy it.
  3. Ban the exploiter.

Step 4 is where things get interesting. What do they do about the 300 extra copies of Super Awesome Card (and all the other cards they've made lots of copies of)? One option is to do nothing. They exist on the chain, there's no way to get them off the chain, so hey, there are now just 450 copies. Obviously this will massively annoy the owners of the original 150, since the value of the cards has dropped. They'll be clamouring for some sort of compensation, since these cards have a measurable value. Not only that, but trust in the whole system will be shaken. Do you really want to buy cards when their value could drop due to a bug in Immutable's code?

Alternatively, Immutable can decide to invalidate the 300 copies. The NFTs will still exist, but they can stop the servers allowing the owners of those NFTs to actually use that extra copy of Super Awesome Card. This will preserve the value of the 150 legit ones, and will give players confidence that Immutable will intervene to protect their investments. But this also creates several problems. For one thing, once Immutable has been seen to invalidate the NFTs the cat is well and truly out of the bag that although ownership of the NFTs is distributed, the thing that gives them value is centralized. But on top of that, those NFTs still exist, and can still be traded.

Some players may well have bought some of these dodgy copies of Super Awesome Card in good faith, and they will undoubtedly see Immutable as the backstop for shielding them from loss, and they'll want compensation. Probably the easiest way to fix this is for Immutable to agree to buy these NFTs off the players for the price they paid (plus some form of goodwill payment, whether ETH or in-game stuff, by way of apology), which gets them out of circulation.

However, a large number of those cards are probably still in the exploiter's wallet, and they're still tradeable, too. How does Immutable protect players from accidentally buying an NFT that won't give them any in-game benefit? (Remember how the "zero-trust" blockchain environment means there's no way to reverse a transaction and get a refund? Yeah...) Immutable could bite the bullet and buy them from the exploiter, but then they're being held to ransom for whatever the exploiter cares to charge. Or they could leave them out there. It's possible to trade cards on Immutable's own marketplace, and it would be pretty straightforward to ban those dodgy NFTs from there. Given that, I imagine, most players aren't all that interested in the distributed nature of the blockchain and are doing all their trading on the GU platform, this will fix the issue for most players, but from this point on anyone trading on a different exchange is going to have to cross-reference against a list of invalidated NFTs published by Immutable, and will always run the risk of buying a dud. Again, Immutable can have a standing agreement to buy duds off any player who ends up with one, but that just encourages the exploiter to create a web of accounts to "accidentally" buy duds and get Immutable to pay up.

Despite the blockchain being distributed, players will be in the situation where the safest way to trade is to use one centralized location.

Economy-breaking bugs do happen in online games. There have been a few in RuneScape over the years, and I was involved in the recovery process for a couple of them on Old School RuneScape. One was caused by a single-character bug (an inequality the wrong way round), the other by a content developer accidentally submitting a not-for-release map change to their stream, which then got launched, allowing players to pick up one of the rarest, most expensive items in the game, the Twisted Bow, from a respawning copy on the floor in a particular spot.

While the content devs were fixing the bugs, on our end in the engine team we worked alongside the sysadmins to do a savegame rollback. For this, we needed to get the relevant snapshot backup of everyone's saves from the backup system, upload it to the live loginservers, restore the Grand Exchange (RuneScape's auction house) to the same point in time to avoid weird behaviour with trades completed during the period we were rolling back, bring up a world to allow QA to do a live test, and then, finally, let the players back in. It's a lengthy process, everyone loses progress (including any nice drops they might have earned legitimately), and it burns a huge amount of player goodwill.

Now, having worked on both MMORPGs and CCGs, I can tell you that the latter are much less complicated, and there's less to go wrong, but a wise developer will understand that if a game runs long enough something is bound to go wrong eventually, and will have mitigation and recovery plans in place. Once you've got the blockchain involved, though, and you've made a feature of not being in control of something your game relies on, mitigation is much, much trickier.

2. The blockchain is great for player trading

Allowing players to trade digital goods for real money is a huge can of worms. For this reason, most games don't support it. One huge issue is the risk of fraud, and the developer getting embroiled in disputes from various angles. There are a few approaches, each with their own problems, which I'll outline here.

No player trading

Just don't provide any mechanism for it. Chronicle worked this way, there was no way to trade anything between accounts. Hearthstone is the same. In Chronicle, if you ended up with duplicate cards you could recycle them into "shards", and with enough shards you could craft a card you were missing. This is the safe option, but one of the attractions of physical card games is being able to trade with others, so you do have to deny a feature that players would probably like.

Player trading, but not for money

Enable bartering: two players can set up a trade, each player adds some items to pass to the other player, and once both players agree, the items are swapped. On the face of it this seems safe enough, though RuneScape has some classic scams such as the "rare black lobster" and "armour trimming".

The more serious problem, however, is players engaging in real-world trading (RWT) via the barter mechanism. You send someone some cash online via a third-party system on the promise of them then trading you some items (RuneScape weapons, GU cards, whatever) in-game. Obviously once someone's taken the money, they can just do a runner, and the buyer is left in the lurch. The whole thing is hard to prove, so games either say "we don't condone RWT, it's at your own risk" or, as the tweet above notes in something like Wizards of the Coast's case for digital versions of MTG, it's explicitly against the rules but not necessarily enforced. Again, this allows developers to hold the whole thing at arm's length, and not get pulled in if players get scammed by saying "you shouldn't have been doing that in the first place."

This setup also encourages other unwanted behaviour such as account hijacking, where somebody tries to gain control of a high-value account (via social engineering, or seeing if the account owner re-used a password on a compromised website, or attempting to abuse an account recovery process) and then pinch all the valuable in-game items.

There's also a financial risk to the developer here, in the form of chargebacks. If you purchase something physical and the goods don't arrive and the seller won't give you a refund, then you can get in contact with your card provider and request a chargeback. You're saying to your bank that the goods you ordered didn't arrive and you want the money back. If the seller can't provide evidence that they did deliver the goods (for example, the courier being able to show that you signed for the package), then the bank will probably grant the chargeback, give you a refund, and then reclaim the money from the seller. The credit card providers such as Visa will also demand a chargeback penalty on top, to cover the cost of dealing with the chargeback and to force sellers to care about actually delivering goods properly. If your chargeback rate goes above a certain threshold, these charges become very large very quickly. Assuming you still want Visa to process payments for your products, you have no choice but to pay up.

So, let's say you buy £1000 worth of in-game items in some game. You trade them to other players for real money and then say to your bank "hey, this £1000 payment wasn't me, maybe somebody stole my credit card details, please can I have my money back." If the chargeback is successful, your profit is whatever you sold the digital items for, and the developer has not only had to give your £1000 back, but they've had to pay a percentage of that to Visa/Mastercard/etc as a penalty for accepting a "stolen" card. Yes, that really is how it works; if someone uses a stolen card to buy something off you, you can be penalized for it when the payment is contested. This forces sellers to implement (or rely on a payment provider's) antifraud measures to try to detect and refuse fraudulent payments.

Indeed, if you're going full criminal, the credit card you use may well actually be stolen, so you don't need to worry about requesting a chargeback, and you just sell the items for cash and move onto the next card before the victim spots the dodgy payment and contests it and the account gets banned.

If you're selling digital goods, contesting a chargeback is tough. 20 years ago it was extremely difficult, because the process for contesting one often assumed the customer was buying physical goods and involved providing proof of delivery to the bank that issued the card. Things have got better as banks have got up to speed with the 21st century, but it's still harder than being able to say "no, look, FedEx delivered to the cardholder's address and got a signature". I won't go into detail about how it all works to avoid making life easier for would-be fraudsters, but companies like Jagex have invested a lot of time and effort into both working out when to refuse a payment that looks dodgy and also being able to prove, to banks' satisfaction, that the player really did get the digital thing they paid for.

In-game RWT for normal currency

Bringing the trading in-house helps protect players from getting scammed since the funds and items change hands simultaneously, but the developer's fraud exposure, if cashing out is possible in any way, doesn't get entirely fixed. Let's say you can cash out directly, that is, you can just ask the developer to pay the balance in your in-game account to your bank account (or PayPal, or whatever). In that case a fraudster might have to be more sophisticated than when taking payment via a third-party system (cashing out to the same bank account you used to buy the items in the first place is a bit of a giveaway if you then try to claim the original payment was nothing to do with you), but I know from my RuneScape days that RWTers are willing to set up large webs of accounts to transfer items around to effectively launder the in-game items, and if the credit card details are stolen the chargeback bit doesn't matter to the people running the operation anyway.

And even if you can't cash out directly — there's no way to directly withdraw funds from your Steam Wallet, for example — you can fall back on exploiting the barter system as above when you want to extract your balance. You can use Wallet funds to buy games, and since you can then gift those games you can sell them off-platform on the promise of gifting them on Steam. This is why Valve had to add the ability to prevent suspicious accounts giving games purchased with Wallet funds as gifts. Really suspicious accounts can't gift games at all.

In-game RWT for cryptocurrency

On the face of it, this solves everything. In order to buy anything in GU, either from other players or from Immutable directly (that's how they make their money, after all), you have to spend Ether. Ethereum transactions are non-refundable, so if you buy anything from Immutable they're guaranteed to keep it, and an ETH-for-NFT swap happens in a single transaction, so players can't get scammed either. Huzzah!

However, the chargeback fraud problem hasn't gone away. People can still charge back ETH purchases, they're just charging back real-money-for-cryptocurrency purchases they made on a crypto exchange. Exchange chargeback rates are high, for exactly this reason. Either the chargebacks are coming from outright scammers (or the people whose card details they stole), or someone buys something with crypto, it doesn't arrive, they can't get a refund from the seller, so they issue a chargeback against the exchange as a last resort.

Putting all the transactions on the blockchain has solved the fraud problem for players, and it's solved it for Immutable, but it's only done so by pushing the problem onto someone else. Immutable have made the risk in their business model someone else's problem. It smacks of Western clothing companies citing "complex supply chains" to deny responsibility when exploitation of garment factory workers in third-world countries comes to light, even though it's powered by their demand for goods at the cheapest price possible.

So, sure, the blockchain "fixes" this problem, but only as long as you're willing to throw someone else under the bus.

3. The blockchain allows anyone to audit card rarity

There are two answers to this:

  1. No it doesn't.
  2. You can get better auditability with a database (yes, really).

The claim here is that because all the unique cards and Flux-upgraded cards are on the blockchain, anyone can run a check to make sure that the number of cards that exist is the number it's supposed to be. Let's be clear that what this is supposed to be protecting players from is the developers themselves lying about how many cards exist. A developer-provided database of card numbers and ownership is only "unreliable" if you're worried about the developer being up to no good.

Why the blockchain doesn't guarantee rarity

Let's start with the simple observation that not all the GU cards are on the blockchain. The basic Core cards etc. aren't tracked that way, because the inherent inefficiency of Ethereum makes it impractical.

This means that we already know that GU draws on two sources of information for who has access to which cards: the blockchain, and a database of the basic cards. Let's go back to our 150 copies of Super Awesome Card. If there are 150 copies on the blockchain, all that lets us see is who owns those 150 copies and how they're traded. The blockchain provides no guarantee that there isn't a sneaky 151st copy sitting in the database somewhere. It doesn't stop the developers lying.

If the blockchain copies are supposed to be the only ones that exist, can you tell if someone is using a card they're not supposed to own? The answer is "yes, but only if you're Immutable", and the scenario we're worried about is the developers being untrustworthy, so that doesn't help. Why doesn't the blockchain fix this problem for players? There are two reasons.

First, the blockchain only tells you which Ethereum wallet the NFT for a card belongs to, not which GU account. So if Alice plays Super Awesome Card against you, you can only tell whether she's cheating if you know which wallet(s) she has linked to her GU account.

But even if you can't tell if a specific account has a "stealth" copy of a card, can you at least prove that the 151st copy must exist somewhere? Sadly, no. Although you can't link a wallet to more than one GU account at once, it is possible to unlink a wallet from an account and link it to another one[4]. So even if you had an upgraded Super Awesome Card (that should be on the blockchain) played against you by 151 different accounts during a period in which none of the 150 legit copies were traded, you can't prove that the extra copy is really a dodgy copy that Immutable is lying about because it could plausibly be claimed that the same wallet had been used by two accounts at different times. If you found four accounts using a supposedly unique card and the owner was well-known, then sure, you could make a case, but let's assume the devs aren't that daft. If they're going to offer a "guarantee" of card rarity but then do something sneaky behind the scenes, then regardless of whether they're using blockchain or a database, they're going to need to be reasonably subtle.

Let's dig a little deeper into the point that you can only link a wallet to one GU account at once. Why do the devs impose that restriction? There's no technical requirement for things to have to work that way. The answer is simple. All the blockchain tells you is how many NFTs for a particular card there are. There isn't actually any explicit link between the number of NFTs and the number of cards, the devs have made that a self-imposed restriction. If multi-linking was possible, a single wallet, with a copy of each card, linked to every account would make the NFT rarity meaningless. Immutable could even assemble such a Magic Wallet of Everything (or spread the NFTs across several to be less obvious about it) and sell access to it to a few high-rollers. There aren't any extra copies of cards in a database anywhere, and the number of NFTs hasn't changed. The GU servers could even track which Magic Wallet cards are in current use in a game and lock out the other players from using them until the cards are free again, so in theory the number of cards is correct. If you'd be OK with this arrangement existing, then fine (but you could do the same with a database, see below). If not, you must conclude that the value of the cards doesn't really lie with the NFTs, but on what's going on on GU's servers.

But even if the blockchain makes it harder (though not impossible) for the devs to lie or game the system, you can still do it better with a database.

Databases really do do it better

Although whichever way you try to publish the internal state of your game is imperfect from a trust point a view — a developer could always have a secret store of other cards somewhere else — doing it with a database lets you share more data with your players without the inefficiency and enormous environmental cost of using the blockchain, and you can get just as much robustness against the developer editing history if you implement it in the right way.

Again, the reason that not all the cards etc are on the blockchain for GU is because it's not feasible to track everything there, becase the blockchain is so resource-intensive. So, let's use a database instead. Then you can track everything publicly. Every single change to an account, whether it be gaining any tier of card (even the regular stuff that's unlocked easily), Flux earned and spent, cards traded, matches won and lost, every event can be an entry in a database.

I know this because this is exactly how the CouchDB database for Chronicle worked. It wasn't publicly queryable, but every change was in there. Creating a fresh account and receiving basic cards. Earning XP for each Legend and unlocking rewards as you played games. Recycling and crafting cards, earning soft currency and card packs, buying and spending premium currency, opening packs, wins and losses, season end rewards, deck building, everything that updated an account was an entry in the database. The current state of your Chronicle account was derived from applying every event that had ever happened to it, in order, from creation to the present. We did store snapshots of your current state, updated weekly, because rederiving from scratch gets progressively more expensive, but the event stream was the source of truth for your state.

The robustness of the blockchain comes not just from all the complicated maths that has to be done to prove transactions, but also from its distributed nature. If one node tries to do anything funky and cheat the system, everyone else can tell. And if you want to, you can distribute your database — there's nothing stopping you sharing that entire event stream publicly. From my time working on RuneScape I can tell you that if there's one thing community fan sites really love, it's a bit of data scraping. If you opened up access to the data stream and allowed any interested party to register to get all the updates, you'd have plenty of takers. Not just because they'd want to audit you, but because they'd want to produce lots of graphs and stats for both individuals and the game as a whole.

Once events have been shared publicly, the devs can't edit them after the fact, or delete some, without being spotted. If the devs have declared ahead of time that events will never be updated or deleted once published, it's easy to spot sneaky changes. But we can do more than that, we already have distributed, non-blockchain systems that allow easy detection if someone tries to edit their history. Git, the source control software, does this. Each commit ID is a SHA-1 hash, and the hash for each commit is determined by several factors, including what's in the commit and, crucially, the hash of the commit that comes before it. If you're working in a shared repository you can't change the commit history without breaking things for other people.

If we wanted to make it even harder for the developers to try to sneakily go back and edit the event stream, a similar system could be added to make it easier for the other distributed copies to spot edited or missing events. It would also allow spotting extra events inserted into the middle of a player's history retrospectively. The method of deriving the hash could easily be open-sourced.

Because we'd have the full history of absolutely everything that's ever happened to an account, players could easily check that the state of their own account lines up with the published database. In theory the database could include the publicly-identifiable name for each account ("Alice", "Bob", whatever) rather than just an account ID, so you'd be able to tell easily if your opponent plays a card that the public DB doesn't say they own, but this would have privacy implications, as would anything that exposed how much money they were spending. Similarly, you might leave out the deckbuilding events so that you can't easily tell exactly what cards your opponent has in their deck, although you'd still be able to see the full set of what they own.

Because we wouldn't have the split between accounts and wallets, in this scenario we would be able to spot a discrepancy if 151 accounts played Super Awesome Card in a window where none of the 150 copies were traded.

The system still isn't foolproof. The Magic Wallet of Everything is still possible, but since cards now belong to accounts, not wallets, there'd need to be a set of accounts controlled by the devs that exist just to hold cards. A quick automatic trade before the game and another one to trade the card back afterwards would allow any of the privileged few with access to the system to get the cards they need. If the cards were internally marked as being non-tradeable by players, they could even stay on the account that used them until automatically transferred by the servers to someone else, so that weird short-term back-and-forth trades (which, under this system, would be visible to all players) didn't keep popping up and raising suspicion. Technically this wouldn't violate the card rarity claims, and players within this system might have to wait for the card they want to become available. We've implemented the Magic Wallet without any NFTs.

A step back: what's the business model here?

If the devs do want to cheat the system, presumably they want to do it for money. In a totally closed system, with no public declaration of card ownership, then devs could lie about card rarity relatively easily. With either open system, the blockchain or a database, the lies become much trickier to maintain. Neither system is foolproof, but both would require the recipients of these extra "stealth" cards to be in on it. Are you really going to sell a few extra off-the-books copies of cards, or access to a card library, to some high-rolling players and trust them not to leak the information? It would have the potential to destroy your business.

So, neither system is perfect, but both are good enough to make cheating the system hard enough for the devs that we can be reasonably confident it's not worth their while.

Conclusion: NFTs don't add anything

Having built and played card games for many years, I can say with confidence that minting NFTs of cards really isn't adding anything other than environmental damage and unnecessary complication. There are all kinds of other arguments that get made in their favour, like the ability to "reuse" them in other games (just as soon as you can convince the devs of the new game to spend money porting assets and sorting out copyright issues to let you use something you've bought elsewhere), but this post is long enough already.

In many ways a digital CCG, being the online equivalent of a physical game that really does involve trading physical assets, is the best-case scenario for NFTs. If they don't add anything to a CCG, they really don't add anything to games in general.


  1. At some point between then and now, the developer in question changed their Twitter handle and locked down their account so that only approved followers can see their tweets. I don't know what prompted this, but to honour their decision to go private, I'm using redacted screenshots of their tweets in this post. ↩︎

  2. A lot of the argument in this post is about whether blockchain tech deals with the issue of game developers doing dodgy things. I'd like to make it clear that I have no reason to believe that Immutable has engaged in anything underhand in the way GU works, and I'm not accusing them of doing so. I'm describing hypothetical scenarios to explain why card games don't really benefit from NFTs in the way the dev I was chatting with claimed they did. ↩︎

  3. Maybe that's implausibly large, you need duplicate cards to fuse with Flux. But even if so, that only changes the scale of the problem, not its nature. ↩︎

  4. This one-account limitation is more evidence that the "digital ownership" of cards in GU isn't really true. Sure, you own the NFTs, but it's Immutable that gets to decide how you can use them. ↩︎