Still pretty much the same thing. If you built nowadays to an Android device or an iOS device, in the end, you're still building a package, right? And as you see, at no point does the cloud or any form of servers come into play here.
Game developers are really specialized, right? They're front-end people who are really good at making things look great, feel great, performance, making games fun. But a lot of them are actually not very knowledgeable about the wider web world out there.
All right, let's set off, make a game, it takes a while, and then after three to six months, you have a game. Wonderful, maybe you made it in Unity, you ship it to mobile platforms, it is there, it's on device, right, it's single player, everything looks great. But it is not 1999 anymore, and people do have expectations. So, for example, when a player switches their phone, as people do, like every year, some of them, they expect to keep their saved games and not put them on a floppy disk. So we have to store them somewhere in the cloud. Right?
Another thing, people expect customer support, right? Customer support should be able to, within the game, directly give feedback or give rewards back to players. Right. Well, how do we start with that? Let's start with putting the player progress inside a database, right? How hard can that be? The progress is a single JSON document, it lives on the device. So instead of just having it on the device, we put it in a key value store, something like Firebase works really well. Big companies have their own solutions, right? There's an SDK for it. So we don't actually have to do any backend stuff.
Right. When the game loads, we load it, right? Whenever we do any changes, we write it back to the database. Works quite well. Cool. You notice something here. We can remotely change player progress now, right? Because we can mess around with the game state on the database. So let's do that and solve the customer service problem, right? OK, the case here is the player contacts us, the game misbehaved in some way, you know, something went wrong, and we want to reward them some currency or some items or something like that, right? And we want to write a small message in there. Now the customer service people should not like do manual entries in the database. So we should have a tool for this. What tools should we build? In what language? It should be usable by non-developers. Hmm, time to learn some React, right?
Case one, a customer service tool. You build a small React app, it talks to the database, right? Again, like Firebase, there is an SDK, you don't have to learn anything really hard, right? As a good pattern here, probably for stuff like this, don't write directly to the database and change the state, have the player confirm it, because it feels much, much nicer, right, as part of the customer service conversation. You can see here, the tool on the left schedules a command in the database. The device reads the command, applies it, and writes it back when it's consumed. Right, and then that is what this tool looks like, right? This should all feel very familiar to you guys, some material UI with some text boxes and maybe some custom editors, because you want to have these items in there and have some pickers and stuff.