Can you talk to us about iCache?
TL;DRiCache is a set of services that cache needed data between game servers and the backend database for faster, fault-tolerant access; the backend is largely done and the game code is now being hooked up to it.
iCache is effectively shorthand for a collection of services that are interfacing with the game servers and backend databases to allow us to both write out and query data efficiently and in a fault tolerant way. So this is really important because right now the way the servers are working, they're using an in-memory kind of database for this global data. Ultimately, that's not feasible. We need to build it out so that things can work in a mesh. And in order for that to happen, we need to actually write this out into a place that all the servers can look at it and agree on what the state of the world is. So the iCache is our solution to make that access scalable. And right now, the iCache infrastructure on the back end is actually largely done. Now, at the point where game side, we're hooking up our game code in order to correctly write out the data efficiently, acquire the data efficiently, as well as fix up some of the game code systems that had previously maybe had some assumptions that don't work correctly within the new context. So that's kind of where we're at at the moment. Effectively, what we're trying to do is cache certain amounts of certain data that we know that we need, and this prevents us from hitting the database, which is a more expensive access. So by caching it, we're optimizing our access, and we're also able to build in a certain amount of fault tolerance in this system through various techniques like duplication and regeneration. So this gives us fast access for the information that we need when we need it.
So it's effectively like you mentioned, the difference between having a hard disk where the data is stored for long-term storage that's more permanent, and your RAM that effectively gives you faster access that you're happier to write to, but you know that it's temporary. So the iCache storage is storage that's not meant to actually capture and define the state of the world, but rather is an intermediary between the final state of the world, which is the actual database.