Sometimes software designers create an application programming interface (API) for their product, meaning third parties can ask questions of, and get results from, the given software. That sentence may sound esoteric, but please bear with me. If a single server holds a lot of information – say in a database – it may be valuable to allow other programmers limited access, perhaps read-only access, to the data so they can use it, display it, or log it in their own way.
With the rise of massively multiplayer online games (MMOs), many publishers have gone above and beyond when it comes to opening their data so players can make good use of it. Games like Guild Wars 2, EVE Online, and World of Warcraft all have feature- and data-rich APIs available, meaning players can do things like check item prices, the status of their characters, or obtain statistics about recent player-versus-player (PVP) events. This has allowed the player community to create some truly powerful tools, phone applications, and other applications that enhance and enrich the playing experience, particularly when it comes to organizing groups for particular events or goals.
For a specific example, I created a website that helped my Guild Wars 2 friends track which items were most useful for us to store, and how many of them we needed as we worked toward some specific upgrades. Through the API I was able to ask the GW2 servers directly for the status of our inventories and present the data in a new way, letting the players keep tabs on our progress without having to log into the game itself.
Gamers with professional programming experience have made other tools for their own and others’ use, including wardrobes that let players see how their characters would look wearing any armour in the game, on top of far more useful and community-oriented projects.
APIs are enormously useful when trying to get players together for events, collect data points about game elements, or create independent game utilities or websites. Recently I’ve started branching out and playing other online multiplayer games, and it really chaps me when games with AAA-level budgets don’t include what I would consider this basic functionality in their games. Even the ability to detail whether or not the game servers are up is valuable and could help avoid players flooding support with questions if an outage is a known issue.
Mostly this post was spurred from my frustration at having to navigate nearly a dozen in-game menus to look at a particular piece of information, and the complete inability for me to share that information with teammates, other than taking a screenshot or typing it up manually, which of course can’t be done from the same screen the information is on.
Not that I’m likely to ever create a game, but any game I have a hand in will absolutely have an API that’s available to the playerbase so they can work on and create tools our internal development team couldn’t imagine.
I’m far from a professional programmer, though in my time I have more than played with perl and PHP, among other scripting languages, and would happily explain further the purposes behind and the uses of APIs that you interact with every day.
Real-World Example: Idle Heroes
A fairly straight-forward mobile game, Idle Heroes has a lot of depth to it where players could greatly benefit from a centralized API, let alone when it comes to managing guilds and measuring player activity. Just off the top of my head, here is a (truncated) list of things that would be very valuable to have at one’s fingertips, that all would traditionally be found in other gaming APIs:
- Daily activity check in – who has contributed to the guild recently?
- Current character roster and level list
- Current HP of the guild raid boss currently under attack
- Amount of gold that has been donated to the Guild Mill / amount remaining for the next upgrade
- How close the gold mine coffers are to filling up
- Reset timer for expedition ventures