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."
CTO and Co-Founder, PKR
Jeremy Longley is CTO and co-founder of London-based PKR, one of the original pioneers of online gaming. Geoff Pate is PKR's senior build engineer.
Perforce Easily Scales to Meet PKR's Demanding Continuous Development Process
London-based PKR is one of the original pioneers of online gaming. They host the world's most advanced online poker room, with over four million registered users around the globe having access to near-infinite customization. New features and functionality are introduced all the time through a continuous development cycle supported by Perforce. PKR uses Perforce to manage multiple and simultaneously developed pre-production test streams and production streams.
In 2005, the founders of 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."
Profile for Success
PKR has become a gaming phenomenon, operating in most global territories where online gaming is legal. In 2011, the company was voted International Gaming Awards Online Poker Operator of the Year for the second year running. They also hold the 2010 title of eGaming Review Poker Operator. PKR was also named the UK's fastest growing technology company in the Sunday Times Tech Track 100 list in 2010.
This is a highly competitive market, however, 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'. Users can click a button to have their 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.
The look and feel to the outside world is just one part of the massive IT infrastructure that drives PKR. Built by the team from the ground up primarily on .NET, the infrastructure consists of a huge database and network; several websites; various systems including random number generation, payment processing and administration; all of which are essential to the smooth running of PKR's 24x7x365 online business.
Automating Perforce for Continuous Development
As for the continuous development process, Perforce lies at its core, managing all versions of code and art assets, as well as all of 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 to fully automate the process and working in one environment. We have up to seven builds in development at any one time, which enables us to continually rollout new features."
When PKR first started, they used Subversion for version management, but they quickly outgrew it thanks to the company's success and expansion. Jeremy was familiar with Perforce 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."
Perforce is Fast and Flexible
"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 more importantly we do not have to spend valuable time resolving conflicts and making sure the right changes have made it to the right place, as Perforce does it all for us. This is where we saw the real time savings when we switched to Perforce. The excellent quality of the visual tools enables us to track integration history and the flexibility of the APIs allows 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 4,000 stored procedures which is pretty big for one database."
Perforce in a Distributed Environment
Perforce was first installed in 2007, and by spring 2011 the total repository—code, database development, and art assets—was around 400GB across three separate depots. 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 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 a branch to see how a piece of work relates to other releases," says Geoff. PKR also makes use of the lazy branching feature, which stores a reference to the original file instead of copying it in its entirety, thus minimizing storage consumption.
Branching also helps to support tracking of different stock-keeping units (SKUs), which are necessary because, Geoff explains, "We have to release slightly different versions of our software for different territories in order to comply with individual government regulations around the world. In France, for example, users must log in with a user name, password and their date of birth, whereas in the UK the date of birth is unnecessary."
Geoff also cites the benefits of Perforce's shelving feature for carrying out code reviews. Shelving 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.
Says Geoff, "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, "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."
PKR needs to release stable versions of the code to independent third party testing organizations in different countries. By using Perforce for version management, development and testing can progress simultaneously, without hindering the audit trail or slowing down the process.