Its been awhile since I’ve done anything on this blog. I’m not entirely certain that people read blogs anymore here in mid 2015. But I’ve been doing some cool stuff lately and I thought I’d push myself to take some time to write about it periodically.
I’ve been at Valve for 15 months now and its been a pretty exciting place to work. Its the sort of place where you can pretty easily move around between projects to be taking care of the stuff that is important with the nice side effect that most of the time it stays pretty fresh. I’ve done a bunch of stuff so far but the two main things so far are the Steam Inventory Service and VR stuff (SteamVR, OpenVR, HTC Vive).
Most of the fun stuff to share involves the VR stuff but today I’ll just mention a couple of things about the Inventory Service. The PC games industry has been more vibrant than ever the past few years and we have been looking at ways to help enable developers to deliver even better experiences, hopefully focusing mostly on the gameplay and less on the extra stuff outside the game itself. Dealing with servers, databases, scalability and all those fun things are some of the things that can be challenging to deal with for all but the biggest game developers. With the Inventory service a game developer can add persistent items to a game without having to run any servers themselves. Further, if their game is successful we are already setup to handle massive scale on this service and its especially efficient for us to run it across the multiple games using it with Steam.
Diving into game development has involved learning about some new types of problems. For example, its a pretty good assumption that any game will have its client code hacked at some point. So if you design something like the Inventory Service where the client grants items (“you just killed an Orc so here is a magic ring”) people will be able to cheat. Some games might not really care about this, but for many the value in the items can often be their rarity. Players feel really special having gotten that extra rare item and if everyone can get it normal players will be unhappy.
So to combat this, we have a couple of modes you can use the Inventory Service. If you are running your own trusted servers, they can talk to our service to drop specific items. But in the case where you aren’t running servers at all, the main safe way to drop items is via timed drops. Steam measures how much time you spend playing the game and after a specific amount of time you are eligible for a random item. If the game wants some semantics associated with that there can be different buckets of random items, but the key is that nothing the client can do can force a specific item.