Recently I’ve been talking about a pet project of mine that came about at the end of 2013. That project is of course, Viper, an opensource API for game developers, built on top of Laravel.
Just a little pre-warning, at the bottom of this page is a link to a google form for feedback, I’d greatly appreciate it if you took a minute or two out of your day to fill it in, thanks in advance.
But what exactly is it?
Viper is a cloud based product that allows game developers to introduce cloud based functionality to their games, without going down the costly route of hiring a developer, or the time consuming process of creating one themselves.
While the functionality list is still open ended and not set in stone, the intention is to offer the following.
Modular & customisable by design
The entire system is designed to be modular, so you can install just the core, the core and selected modules, or even create your own modules. The system has been designed in such a way that you can customise most points, but should you find that you require a fundamentally different user system, you can just fork that module and make your modifications. On top of that, if you then wish to release your new module, you can do that too,
Simple & Secure integration across multiple games
Viper will allow you to add multiple games, with each of these games being assigned a unique key and secret, to be used for communication with the API. Security and integrity is maintained by the use of HMAC (hash-based message authentication), meaning that the system will only act upon valid requests that match credentials. This also mean that a particular game can only access the information related to that particular game.
Universal user system
Viper also allows your users to create an account which is valid across all of the games running on you API. This means that if you’re a developer who releases multiple games, your users don’t have to go through the process of creating an account for each game. When they first login via said game, the appropriate record will be set, to say that they use this game. As another level of security, the token generated when the user logs in, is specific to that user and that game, meaning that the system identifies the user via this token, and allows the modification of that users data, pertinent to the game the token was generated for.
Cloud based progress
Via the game progress functionality of Viper, your users can have the data related to their current play session stored in the cloud, so that they can continue whether they play again on the same device or a new device entirely. This particular piece of functionality is something you have complete control over, allowing you to simply create the database table, required by your game progress, and a corresponding model within Laravel, to handle it for you, and just to make it a little easier, you’re provided with example models and table structures to give you an idea of how this is achieved.
Cross game support
Through the administration system you are able to setup cross game support so that actions within one of your games, will be reflected within another of your games. Perhaps you want it so that when UserX completes the game Platformer1, they are able to select a Platformer1 skin for their car in Racer1, or maybe when UserY beats Boss1 in Platformer1, they can then select that character in Fighter1. The cross game support doesn’t end here, if you’re using the item module for Viper, you can earn currency and/or items within one game, and have those items and currency shared across your other games.
Currencies, Items & Shops
One of the Viper modules provides you with a system to create Items and Currencies, then assign them to individual games, all games, or a select few. This means that you don’t need to update a game every time you wish to add a new item, you can call the API method during the loading of the game, and pull down a full list of items, as well as any required assets that aren’t already in the game. As mentioned above, you can have these Items or Currencies shared across multiple games, which acts as a nice incentive for users to frequently play multiple games. As a nice little extra bit here, items can have metadata assigned to them which can be used for absolutely anything, with the most interesting being the definition of characteristics and effects when a user equips or uses the item, allowing you to dynamically react to an items purpose without modifying the games code.
Is that it?
The above features aren’t the only pieces of functionality this system will have, but I feel that it gives you enough of an idea what Viper will do for you, and showcases some of the idea behind it.
When will Viper be released?
As of yet there is no definitive timescale regarding the release of Viper. This is down to this currently being a side project of mine, done outside of my professional commitments. Do not take that to mean that this is very slowly developed product, because it’s not, it just means that I need to pay for the electric and internet connection to actually work on it 😉
For the time being, there is a repository up at https://github.com/ollieread/viper, which is a pseudo modular system acting as a sort of proof of concept. Once it’s all down, I’ll be splitting this up into individual modules and getting ready for a release.
Will Viper always be opensource?
Viper will always be an opensource product, being freely available to whomever wishes to use it.
What are the plans for the future?
Seeing that this project is still in its infancy, the future is a bright wide open space awaiting our approach. I do however, have many ideas jotted down for future potential, ranging from game publishing platform, to premium hosted services and bespoke module creation, but for now you’ll have to just watch this space.
I’ll be posting updates on this project as frequently as possible, so you’ll be able to catch up on the news via those. Also, if you have a minute or two, would you mind filling out this google form to give me some feedback please, whether you’re a game developer, web developer, gamer or just a user of the internet.
Thanks for reading guys 🙂