Build vs. Buy - Which online service is right for my game
At Microsoft, our goal is to meet your online services needs as game developers no matter where you are on your development journey. We understand different teams and projects require a wide variety of technologies to achieve great gaming experiences, and there are several world-class tools to choose from to achieve this. But with choice comes complexity to understand which tool is the best fit for the job you are trying to accomplish. As a Global Black Belt Technical Specialist for game development my job is to help game developers to make the right choices for their backend needs and in this article I want to share some of our experience in choosing the right technology.
Managed Services vs Custom Development
Microsoft has two world-class solutions as part of Game Stack that support the back end of your game – Azure PlayFab and Microsoft Azure. Azure PlayFab is an abstraction of solutions common to games with online features, including managed Multiplayer, LiveOps, and Analytics services and more. Even with the abstraction Azure PlayFab provides you, you still have a degree of control to customize its behavior to fit your specific needs. You can adopt it fast and it's easy to use as it's a fully managed service.
Azure on the other hand is a broader toolbox that contains over a hundred different services that enable you to build complex systems as easily as possible by outsourcing complexity and operational responsibilities to the platform. It supports a wide range of operating systems, languages, tools and services you already may use, that enable you to run any workload. Azure helps you solve the challenges that come with developing for the cloud and for scale.
An analogy that I like to describe it as, is a similar decision you make when you choose if you want to go for a game engine off the shelf or build your own game engine.
Picking the right tool for the job
So now that we have a choice of two great tools, how do you decide which one is the best for your project? To answer this question, we must look at different aspects of your business and dig deep on your development practices as well as experience.
The first topic you need to think about is whether you or your team have experience in building and operating backend architecture in a production environment. If you have not done this before, this may be a challenge. Running a multiplayer heavy game with a complex architecture with just one developer, or a very small team is not recommended. If you do not have the experience or have the ability to invest in a backend team, Azure PlayFab is a better fit as it'll enable you to tap into managed services.
Although that said, even if your team does have experience and resources dedicated to backend development, Azure PlayFab could still make your life easier by adopting parts of Azure PlayFab's managed services that are a good fit to your problem space.
When abstractions become a limitation for your vision
So, why use Azure if Azure PlayFab has these capabilities? The answer to that depends on your problem space and existing experiences.
Let's say you want to run a custom leaderboard system that implements multiple divisions, much like League of Legends or StarCraft 2; and has specific rules that need to be enforced such as seasons and promotion or demotion of players. Azure PlayFab's 'off the shelf' managed solutions would not make sense here, and you would need to build your own solution. In this case, Azure provides you with the services you need to design such a feature -- an example of how this might look can be found in our reference architectures.
The best of both worlds
If you are looking to relieve your backend team from developing and maintaining commodity features to focus more on the next major backend system, you can offload those features to Azure PlayFab and utilize Azure to be more productive in your custom development work. There is nothing that stops you from taking advantage of both the abstractions Azure PlayFab provides and the opportunity to build highly customized solutions at scale with Azure.