PC Technical Alpha - Developer Blog

Senior Software Engineer Ian sheds some light on the work that went into our first PC Technical Alpha.

Hi all,
my name is Ian Norris and I head up the Win 10 Engineering Team on Sea of Thieves. Ted has already shared some details of what’s to come in last week's video update, but I wanted to share some more technical aspects with those in the community that care for that.

The team I lead is focused purely on the Win 10 version of the game. That includes features like video settings, customisable keyboard layouts, fixing PC specific crashes and optimising for all your lovely PCs! All the effort of the PC team is going to building the best version of the game possible for PC.

Because we built our Xbox One and PC versions in parallel, any work that goes into the Xbox version also benefits the PC version. All features that come to Xbox also come to PC at the same time because the game content is built in complete parity for both platforms (and soon to be Scorpio!).

So, you’re probably asking yourself, if the PC and Xbox versions are developed at the same time, why are we only now letting players have their hands on the PC version? There are actually a few reasons:

Stability

Developing stable games is hard. Developing stable games on PC is even harder. With so many different variables, developing games that can make the most of multi-core processors takes a lot of effort.

In a studio like Rare, to make development smoother we have a ‘homogeneous’ development environment. That means most developers have the same “beast” PC configuration with the same CPU, GPU and version of Windows. This is to help reduce issues where Bob the artist runs into a problem that stops him from working that Jenny the engineer can’t reproduce on her own machine. (Jenny and Bob may or may not be their real names to protect their identity).

To help find performance issues the PC team has a bit more hardware than most in the studio. We have our main ‘dev’ PCs that are the same as everyone else, but we also have additional PCs to test on such as older hardware and laptops. We ordered machines designed to match common configurations too and we use these for regular manual testing in our own compatibility lab. In addition, we have made good use of the SHIELD labs within Microsoft that Ted has also talked about previously. Using this lab, we have found and fixed several issues that would have otherwise ruined the day of our most dedicated and important players.

A small number of users in the technical alpha reported problems booting the game at all. Over the next few weeks we will be investigating this issue as a matter of priority so that all our TA participants get to play the game with us!

Performance

Nothing irks me, and the rest of the PC community more, than a poorly optimised game. People want to feel like their hardware is being made full use of. We expect the game to look its absolute best and we expect solid framerates while doing so.

We can’t promise a completely smooth experience in the initial round of technical alphas for PC, there is still so much work to be done but this is exactly why we want you to have an input on the game now. Knowing when we’ve reached the ‘good enough’ point is a tough call to make, especially as every performance improvement we make potentially lowers our min spec a bit further and allows another huge group of people to enjoy the game.

This is a huge part of the reason why we haven’t released any info about our minimum specs yet – we simply don’t know! We think we’ve narrowed in on a reasonable minimum, but running a technical alpha with our auto-detect feature enabled allows us to verify how close we are to this and if we can lower it further. With more tweaks to come though, we may find we can go even lower and someone ‘bucketed’ as min spec today might be medium spec tomorrow. Our mantra is simply, "How low can we go?!".

Getting our auto-detect code right is a big deal. The clear majority of PC players will not even enter the video settings screen so for those people we absolutely need to make the right decision automatically for them.

Initially we won’t be revealing to players what ‘bucket’ we’ve put them in. This is for two reasons: most won’t care what settings we picked if the game looks the best it can; and those that do care don’t like knowing we’ve detected them as minimum spec! Once we’re happy with this code, players will be able to see their auto-detected settings on the video settings screen when we enable it in a future update.

So, how do we know if it worked? With Telemetry! Telemetry is our way of measuring how players are playing the game. It also reports things like framerates, and the video settings they are playing with. By combining this data together, we can see if players are getting the framerates we expect them to with the hardware they have.

We shipped Technical Alpha 1 with a known performance problem, with at the time an unknown root cause. This didn’t affect our ability to make use of the auto detect data we collect as we’re able to mostly identify when the problem occurs, but we also thought your feedback might be able to help us track it down too!

This gives us a Rare opportunity to give you a behind the scenes look at fixing a real performance issue!

The first step is our Test team finding the issue. This usually results in a bug coming through to the relevant team lead, in this case me. This is the actual bug report:

Obviously, performance issues are taken very seriously so this bug was assigned the ‘Critical’ severity. Test will continue to experiment with the issue trying to find more information about it in the hope they can aid Engineering in fixing it. In this case, we found one specific machine that was very good at ‘reproducing’ the issue on a pretty common machine spec!

Knowing this we asked the Test team to reproduce the issue with me present. I then used a tool called ‘xperf’ to collect more information about the problem. Unfortunately, this tool generates a monumental amount of data, so it can be very difficult and time consuming to identify the issue within it.

There are a few different tools we use to find performance issues depending on the person or the problem. My ‘weapon of choice’ for this bug was Media Experience Analyzer. Here's what my screen looks like when using this tool (and a few other tools too):

As a result of this analysis (over several weeks) we actually identified 3 separate issues that were all contributing to very long pauses. Our next step is to test that the fixes work for all machines, don’t break the Xbox version of the game, and don’t cause any new problems! If our Test concur then we can ‘close’ the bug. Of course, the final step is to let our Technical Alpha participants have another go as well!

PC Features

It may come as no surprise that getting through all the work mentioned above is a tall order on its own, but rest assured these fixes and more PC specific features are coming and we're working hard towards our second Technical Alpha for Win 10 right now!

One thing that caught us off guard was the demand for a 'push to talk' feature. It was something we planned to add further down the line, but we had a lot of other features ahead of it. The number of people asking for this on the forums though has made us bring forward this feature in our roadmap – so we'll be looking to add this before our next technical alpha.

We know our PC audience is eagerly awaiting seeing what our video settings UI is going to look like. A huge amount of work is required to create user interfaces and we wanted to make sure we get it right first time. Creating easily navigable user interfaces for games like Sea of Thieves is no easy task. We've looked at tonnes of settings screens from other games and we've combined them into what we think is the best settings screen you'll have ever seen!

We're really looking forward to letting you all play with these exciting new toys, especially when we decide it is the right time to invite more players to the Win 10 Technical Alpha, soon...

Thanks for reading!

Ian, Senior Software Engineer