Paul Rayment is an experienced developer to a high professional standard.
I am qualified as a Games Developer and further qualifications in Information Technology. I have over 19 years experience of working in corporate environments including the Video Games and Financial Services industries.
After spending the last few years on various contracts working on Triple A gaming titles with Lionhead Studios as a Software Engineer, it is now time to look for my next venture that will use my existing skill set, draw from my resourceful, quick thinking, accuracy and efficiency strengths. I would also like to build new working relationships and continue to learn more of the gaming industry business and share my experiences with others.
Under a contract with Microsoft Studios being positioned at Lionhead Studios as a Software Engineer in Test, since March 2014 I have worked on three of Lionhead Studios titles. Fable Anniversary was the first, working alone to automate testing on the PC platform. Once Fable Anniversary was launched I joined the team of Software Engineers on Fable Legends with areas of Hero characters and Gameplay to automate testing on.
As Software Engineer it meant I was able to generate confidence in the games in multiple areas.
- Automation of the build verification tests that manual testers usually carry out
- Telemetry information including game events and performance information
- Performance capture and analysis
- Compatibility testing
- Test Coverage
The last project I worked on with Lionhead Studios was an unannounced project which was later revealed as Fable Fortune. Again, working as the only Software Engineer on the project, using my knowledge and experience from the previous projects meant that automation testing and coverage was setup and running quickly and effectively. The automation testing dashboard was visible in multiple locations providing up to date information on the latest build and how it was performing in areas of automated functional test passes, performance, and stability.
Fable Fortune was to be the latest release in the Fable franchise, a collectible card game combining CCG gameplay with pioneering game modes.
Using the existing established Microsoft/Lionhead automation test framework, I adapted it to connect to a Unity developed project instead of the usual Unreal Engine based Fable Anniversary and Fable Legends.
As the sole Automation Software Engineer on the project I had full responsibility of the automation approach, feeding back to the manual testers and management team on progress.
Within the short time I had to develop an automation strategy I managed to hook into the game code, have it successfully play a PVP match, create custom decks, and menu screen navigation.
As development of the game was by 3rd Party, instances of their developed code would overwrite the automation code that stayed within Lionhead. I managed to devise a process that would allow for quick updates to be applied and automation would be up and running again with minimum impact.
For the last few weeks of development before the project closed down, resources allowed for an Intern to join in with the automation development. I was quick to identify where their efforts would be most beneficial and got them working on backlog tasks to allow for better specific scenario playthroughs, while I focused on the automation tools development.
Three pairs of machines were setup to constantly play the latest version of Fable Fortune, allowing both development and management teams to visually see the progress and stability of the game.
Fable Legends was well into development when I joined the team of Software Engineers. The test framework they were using was already developed beyond the framework used for Fable Anniversary. This test framework made use of Specflow to allow easy to read 'Given, When, Then' scenarios to be written and the test framework translates them into C# code that launched the game, carried out the necessary tests, and then closed the game, collecting test artifacts.
The test framework had a communications layer that communicated with both Xbox One and Windows 10 versions of the game which I had a clear understanding.
I was involved with Heroes and Gameplay. within the Fable Legends title. The Heroes had a lot of functional tests around their abilities. The Hero tests were a bit different to other functional tests, they were written using Unreal Engine Blueprints, so all the test framework was responsible for was launching the game, initiating the blueprint script. The script then ran the tests sending pass or fail event messages to the test framework.
Gameplay tests covered a lot of areas within the game. This gave a greater coverage with little effort. The game was launched into a level with specific heroes, AI would be turned on, and the game would play out. Using telemetry events, gameplay would be tracked to make sure all events were firing and the gameplay was progressing successfully.
Eventually automation tests needed refactoring. This meant more coverage in a shorter time period. The tests were split into Short and Extended build verification tests and run after every build to give the manual QA team confidence in the latest build.
I became the main contact point for automation tests around Heroes and Gameplay along with Performance, AI and Audio.
The studio worked in an Agile environment with everyone attending daily scrum for each discipline making each days priorities clear.
Automation of a title is not just about making the game play itself, it is about testing everything as automatically as possible so the focus the manual testers can be focused on other areas. This proved to be the case on Fable Anniversary.
Automated testing of the following areas to confirm functionality meant the test team had a clear view on the status of the build before they started their days effort of planned testing.
- Game can launch and shutdown cleanly
- Main menu's can be navigated
- Saved game slots can be loaded
- Corrupted saved game slots can be handled cleanly
- Game can be saved
- The games teleport features work (all permutations of locations)
- Hero features are customisable
- Graphics options functioned correctly, taking screenshot for additional manual viewing when requested
- Hotbar functionality can have items assigned and used
- Game functions the same with Keyboard/Mouse controls as well as the possible Gamepad configurations
- Hero scars and bruises appear when attacked
- Glowing Will lines appear, and how much they glow at the different Hero progression
- Hero appearance changed with the alignment Good/Evil updates
- FPS and Memory usage is within expected margins
- Check of an item was there in game at a specific point. If it is not bug issue with DEF file configuration
- Playthrough of the key boss battles started, ended and rewarded as expected
These above functional automation checks took place after every successful build of the game on the build machines. The tests were also available for developers to run themselves as a pre-check in confirmation that their code changes had not broken any existing core functionality.
In addition to these quick verification checks after a successful build of the game, I had automation running continuously throughout the day on the latest builds of the game, both testing functionality along with soaking the test machines for stability.
- Walkthrough of all game zone areas from bottom to top of the map confirming loading times of zones was within acceptance margins
- Walkthrough of all game zone areas adjusting Hero appearance and customisations between each zone change for stability checks
- Mean time to death when playing on Hard and Easy modes to make sure sufficient difference was there with the newly added Hard Mode configuration
- Game no longer crashes when using combat on and off for an extended period
- Game stability was confirmed by going in and out of menus while in game
Automation testing of the title was achieved using a custom build C# Visual Studio solution and VSTest. With the use of TestClass and TestMethod attributes a whole suite of tests were in one place and could be run in many ways.
The solution also had a DataDriven section. Tests were populated at compile time with values from an XML configuration file.
With the use of a customised Unreal Console tool, communication between the automation test framework and the game written using Unreal Engine 3 was achieved. Commands could be sent from the test framework to the game, and events could be tracked from the game into the test framework. Using this communications layer it was great to tell the game to do something and wait for the game to send an event to say it had happened.
Telemetry information was very key to the success of Fable Anniversary. Telemetry was added to the C++ game code to allow for two areas of information tracking. All telemetry was logged to an SQL Database. The key telemetry captured that automation made most use out of are listed here.
- Game start and end time
- Session ID
- Frames per second
- Start and end level loading time
- Weapon used
- Spell used
- Test ID
- Test start and end times
- Test result (Pass/Fail)
- Test artifacts and log files stored location
- Test Machine
Compatibility testing was another area I was involved in for Fable Anniversary. Microsoft have a lab with configurations of hardware available to use. With the help of this lab I had to carry out the following tasks to get the compatibility of the game tested and then the results returned for analysis.
- Use of Powershell scripts to achieve all scripting needs
- Automatically install the necessary software, plugins, test framework and game to each machine
- Adjust configuration of the necessary files on each machine
- Launch executables to run the test framework on each machine
- Collect all test artifacts and logs from the machine and compress them for transfer back onto the network share
- Retrieve all files on the network share from the compatibility testing and process the results
- Present the results to the team advising of any issues or concerns with any hardware and software configurations
Automation was the key feature of the whole project that reinforced to Microsoft and other parties involved in the decision to publish the game, just how stable and compatible the game was, and how much coverage the game had been exposed to with automation.
Here are some of the key pieces of information about Automation on the Fable Anniversary project.
- A manual tester would take 8 hours 51 minutes to do what automation did in 4 hours 45 minutes. That is nearly half the time
- Automation testing averaged 1527.46 hours a week
- The overall Test Pass Success was 98.31% which includes failed tests during development
- 498,842 automation tests were run in the 4 months of development
I joined GallantCloud Games in September 2013 as a team who took part in the Microsoft Ventures first Accelerator Programme in the UK. As Lead Developer for GallantCloud Games it is here I have obtained the majority of my substantial 2D and 3D creations using the cross platform game engine and integrated development environment - Unity.
During my time on the Microsoft Ventures Accelerator Programme I worked with some very knowledgeable people including Gary Carr (Creative Director from Lionhead Studios), Andrew Webber (Microsoft), Lee Stott (Microsoft), Professor Berni Good (Cyberpsychologist), and Andy McCartney (Microsoft). All of these people have allowed me to increase my knowledge, not in just how to create great games, but also what goes on outside the game to influence the team, the thought process, and eventually the final product.
Due to the current NDA in place I am unable to reveal too much information on any of the GallantCloud Games development titles.
Ether, is a twist on the 3D tunnel runner genre, integrating social communication with gaming, with the aim of bringing fun and competition to email and social media.
The developer tools and assets I have used during the current development of Ether include
- Unity 3D game engine
- NGUI plugin for menu interaction sections of the game
- TouchScript plugin for input detection on touch screen devices
- PHP scripting integration and development for SQL database storage of information ready for data retrieval and manipulation
- PHP server side scripting to allow the sending of emails and messages to a specified destination
- Use of Object Orientated code and creation of controllers to manage the overall bespoke system that is the Ether game
The development of Ether took place during GallantCloud Games participation of the 12 weeks Microsoft Ventures first UK Accelerator Programme. During that period here are some key elements that are relevant to the development of Ether that I controlled.
- Working at an impressive fast paced speed to quickly turn around creation of functionality and interaction of both the main menu and UI systems along with gameplay elements and player input controls
- Use of the Agile methodology, Scrum, taking the role of Scrum Master, monitor progress and control development to reach the goals set for each week long Sprint
- Reaction to creative direction ideas, making changes to code and assets in real time for trial and further discussions and adapting
- Testing of newly developed code for correct functionality along with regression testing of existing features
- Live demo and explanation of the Ether game to potential investors and interested parties
Ether is still in development and has not yet been released.
A KNIGHTS TAIL
A Knights Tail is another development title from the GallantCloud Games team. This game is a 2D runner with a twist, but I can not yet reveal what that twist is! The knight is running from an angry mob collecting treasures, avoiding obstacles, blocking the angry villagers from reaching him.
The developer tools and assets I have used during the development of A Knights Tail include
- Unity 3D game engine
- Orthographic camera setting to create 2D visuals in a 3D environment, allowing for best possible visuals using the supplied textures at optimum resolution specified
- Custom built endless runner parallax background/foreground environment
- Visual effects customised from 2D assets to give localised and full screen positioning, including effects of fire, smoke and ash
- Custom animation manager that can have any sized spritesheet applied
- TouchScript plugin for input detection on touch screen devices
- Swipe interaction with on screen objects
- Use of Object Orientated code and creation of controllers to manage the overall bespoke system
The development of A Knights Tail took place during GallantCloud Games participation of the 12 weeks Microsoft Ventures first UK Accelerator Programme. These are some of the key elements I handled during the development of A Knights Tail.
- Working at an impressive fast paced speed to quickly turn around creation of functionality and interaction of the user control inputs, endless game environment creation and parallax scrolling both forwards and reversed, player character state switching
- Use of the Agile methodology, Scrum, taking the role of Scrum Master for the period of the development
- Understanding and discussing creative direction, advising of potential risks and difficulties
- Design and development of an alignment based system. Content of the game changes as you choose to take good or evil actions
- Monetisation plan for in game elements, allowing for the player to choose how they develop both their character and in game assets
A Knights Tail was a design idea taken into development for two weeks of the 12 week Microsoft Ventures Accelerator Programme. As a result priorities changed and A Knights Tail has yet to be fully completed and released.
The Train2Game Games Developer course covered a lot of areas within the games development process. Starting with the practical use of C++ with DirectX and eventually HLSL, the skills learnt allowed for creation with an greater understanding of games in 2D and 3D development environments.
DEEP SEA DIVER
Deep Sea Diver was part of the development work carried out during the studies of Train2Game. A very basic working level of the game was supplied as a starting point. With the knowledge learnt during the course and additional experience it was put into practise to achieve a fully featured working playable game with multiple modes, improved visuals, improved game play and many more additions.
The game was created using Visual Studio 2008. It uses Microsoft Directx 9 to create the 3D environment where the .x models are used along with other assets to create the underwater world of the deep sea diver and the adventures ahead. Making use of HLSL, various effects are created, for example the underwater shimmer for the final rendered image, the depth of field effect for objects further away from the camera.
The video shows the basic game and all the features that were added by myself during the development to obtain the end result.
ShadowPairs was developed as part of my Train2Game Games Developer 2D section Portfolio Project.
ShadowPairs is a puzzle based game written in C++ referencing Direct3D in a Visual Studio 2008 development environment. The idea of the game is simple, use the keyboard to move the selector around, press the spacebar to turn the card over. If it is the first card to be turned over then the game allows for the user to select another card to turn over in the same way. If both cards match then they stay visible and the score increases. If they do not match then both are returned to a face down position and the players turn begins again. If the timer runs out before all pairs are matched then it is game over, otherwise the player proceeds to the next level.
The concept and visual elements of the game may appear simple, but the code behind this game is very structured. There is a Finite State Machine (FSM, sometimes referred to as a State Manager) that controls the state of various elements ranging from which scene/level is loaded and playing, whether the player has won or lost, how many pairs have been found. All things you would expect to find in a logically thought out game structure.
All images used in the game are for conceptual illustration only.
Unfortunately while contracting with Lionhead, all documentation is their property so I am unable to share any here.
Over the contracting periods I was responsible for many documents. Some examples of these were One Note sections on how to setup and implement the automation test framework and get message communication working. All code had relevant comments where the descriptions of the classes and methods were not self explanatory.
Test Coverage reports were a high profile documentation type that I created. With the use of the coverage report it used the telemetry information from the databases to highlight areas of test which had not been covered in the selected parameters. These parameters were adjustable so manual testers could see data by build number, by play session id, by online matchmaking id, by date, by particular events, and more.
Performance was always a big part of developing the game titles. With the use of telemetry analysis, daily documented tables and graphs were created to show where performance was being impacted by the changes made by developers.
Gate review document, a document that outlines to the heads of Xbox and Microsoft Studios the current status of Automation within the game title. I created these with outlines of the current status of automation, goals and challenges experienced along the way, and a breakdown of all the different areas within the automation testing. A video demo was also produced showing automation running across multiple machines at once.
During my studies with Train2Game I had to produce a variety of documentation, both as a stand alone document and as a textual piece of work to accompany a coded game application.