PKR is one of the original pioneers of online gaming. It hosts the world’s most advanced online poker room, with over four million registered users around the globe having access to near-infinite customisation. New features and functionality are introduced all the time, through a continuous development cycle supported by Perforce SCM. PKR uses Perforce version control to manage multiple and simultaneously-developed pre-production test and production streams.
The story began in 2005, when the founders of London-based PKR spotted an opportunity to bring the rich play experience found in computer games into online gaming. Says Jeremy Longley, PKR’s CTO and co-founder, “The user experience had been very basic up until then. PKR was breaking new territory by introducing characterisation and video imagery from the computer games industry and enhancing the visual aspect of online poker. We occupy a strong niche in the marketplace: no one is able to match the online poker experience we deliver.”
PKR has become a gaming phenomenon, operating in most global territories where online gaming is legal. It was awarded the 2011 International Gaming Awards Online Poker Operator of the Year for the second year running, as well as holding the title of eGaming Review Poker Operator of the year 2010. PKR was also named 2010’s UK’s fastest growing technology company in the Sunday Times Tech Track 100.
However, this is a highly competitive market and rather than resting on its laurels, PKR continually releases a new stream of content to keep its customers engaged. “This includes keeping the feel of our avatars fresh, with new clothing, voices and what we call 'emotes': where a user clicks a button to have his or her on-screen avatar perform an action to express how they are feeling, for example bang on the table, cheer or dance,” explains Geoff Pate, PKR’s Senior Build Engineer.
However, the ‘look and feel’ to the outside world is just one part of the massive IT infrastructure that drives PKR and which was built by the team from the ground up - primarily on .NET - back in 2005. The infrastructure consists of a huge database and network, management of several websites and various systems including random number generation, payment processing and administration, all of which are all essential to the smooth-running of PKR’s online business, 24x7, 365 days a year. As far as the continuous development process is concerned, Perforce SCM lies at its core, version-managing all code and art assets, as well as all the database development.
Says Jeremy, “We are always working on new versions, so the build process – from individual to team development, staging, release management and supporting different languages – can become very complicated. The complexities involved, plus the tight timelines and need to work with third parties, is a constant challenge. We are able to keep it all on track by using Perforce SCM to fully automate the process and by working in one environment: we have up to seven builds in development at any one time, which enables us to continually roll out new features.”
When PKR first started, it used Subversion for its version management, but quickly outgrew it, thanks to the company’s success and expansion. Jeremy was familiar with Perforce SCM from his days at Kuju and knew from experience that it could scale to meet PKR’s needs, without sacrificing performance or increasing internal workload. Geoff Pate explains what this means in practice: “Our main reason for switching from Subversion to Perforce was Perforce's superior branching and merging architecture.”
“What matters to us is not how long the raw operations take, but the amount of man hours we need to invest in tracking changes and making sure things have been integrated, built, deployed and tested correctly. The speed of merging in Perforce is great, but what is important is that we do not have to spend valuable time resolving conflicts and then making sure the right changes have made it to the right place. This is where we saw the real time savings when we switched to Perforce. The excellent quality of the visual tools enable us to track integration history and the flexibility of the APIs to allow us to develop our own bespoke tools to fill our specific needs.”
One example of this is the database and version management integration tool that PKR has built in-house, using one of the Perforce APIs. “All the database development is done fully through Perforce. The database is split into three parts: the data (and within that, the schema or structure of the data), sequences and stored procedures. We have 600 tables and 4000 stored procedures – which is pretty big for one database.”
Perforce was first installed in 2007 and by spring 2011, the total repository – encompassing code, database development and art assets – comprised around 400Gb across three separate depots, according to Geoff Pate. Approximately 40 employees are using Perforce, including 30 developers (mainly in the London office but with a few remote workers) plus administrators, website managers and the QA team.
As well as its scalability, other key features within Perforce SCM get PKR’s vote. “Branching – which we do a lot of – works well in Perforce. We use it to support simultaneous development of new features in separate branches and then merge those back into the mainline. By integrating with IDE systems, we can check into a branch to see how a piece of work relates to other releases,” says Geoff Pate. PKR also makes use of the lazy branching feature, which stores a reference to the original file instead of copying it in entirety, thus minimising storage consumption.
Branching also helps to support tracking of different stock keeping units (SKUs), which as Geoff Pate explains, “Are necessary, because we have to release slightly different versions of our software for different territories to comply with the different government regulations around the world. So, for example in France, users must log in with a user name, password and their date of birth, whereas in the UK, the date of birth is unnecessary.”
Similarly, PKR needs to release stable versions of the code to independent third party testing organisations in different countries. By using Perforce for version control, development and testing can progress simultaneously, without hindering the audit trail or slowing down the process.
Geoff Pate also cites the benefits of Perforce’s shelving feature for carrying out code reviews. This enables temporary storage of work that is in progress without having to submit a change list. This is useful when carrying out multiple development tasks on the same set of files or shared files, before they are committed to the depot.
Geoff Pate says, “We plan to explore other features within Perforce and will be interested to hear about some of the new developments that have been announced.” In the meantime, it is clear that Perforce plays an integral role in managing the internal development processes at PKR. Concludes Jeremy Longley, “With our often intense continuous development cycle and a service that has to be available to customers at all times, our version management system has to be right: Perforce is fully embedded in the development process and has unquestionably contributed to our success.”