Two Scoops This Time

So very early in May I tweeted out a question to the community on what y’all want to know about the MCC PC project. I also spent time digging through Reddit and other social media sites to try and get top question answered. To say there were a lot of questions regarding various features we have discussed would be a massive understatement. Taking the most commonly raised topics helped me narrow this list down. What follows are the big ones: uncapped framerate, FOV sliders, centered reticules, bullet magnetism, auto-aim, Xbox Live integration on Steam, and many more.

To help answer these, I sat down with a couple of the Publishing Team’s engineers, Andrew Schnickel and Sean “Scoops” Cooper, to discuss how the technical side of work has been going regarding implementation of these features. Are you ready? I hope you listened to me about that snack. It’s time to get nerdy my friends.

Postums: Hello gentlemen, thank you so much for joining me today to discuss how things are going for our May Development blog.

Andrew Schnickel: Happy to be here.

Sean Cooper: Thanks for inviting us.

To kick things off, since our April Development Blog people want to know more about features such as Uncapped Framerate. Can you dive into how work is going on it?

Andrew: Definitely. Things are going well. There are a lot of challenges, but we’re making good progress. We know it’s a highly requested feature, so there’s been a lot of focus on it.

When you say challenges, what sort of things have you run into that are making this difficult? I mean, isn’t it just copy paste or save file as?

Sean: I totally forgot about that trick. Let me save as > Uncapped.fps and we will be good to go.

Andrew: Hahaha. It would be nice if it were that simple.

Actually, there was already an “infinite framerate” flag in the code. Unfortunately, there are a lot of rendering artifacts when it’s enabled; its purpose was to render frames as quickly as possible for performance profiling rather than being a shippable feature. But it has been a good starting point!

One of the big challenges with these titles is that many systems were designed to update on tick intervals, not time intervals, and those tick intervals were implied to be 1/30th of a second. When those ticks get shorter, things end up playing too fast. We generally addressed these issues while moving from 30 fps to 60 fps, but there were a number of cases where the most expedient fix at that time was to make the systems treat the update interval as 1/60th of a second, rather than make them able to accommodate arbitrary length update intervals. To support uncapped framerates, we’re now needing to make more extensive changes to handle arbitrary update intervals in more cases.

A related issue is in sampling and interpolation for VFX and animations. Many effects sample from input functions to drive their behavior. Depending on what that function is, sampling more frequently can result in different patterns. For example, if you sample a sine wave every half period, it’s not actually going to look like a wave – you’ll always get zero. But if you sample twice as frequently, then you’ll get oscillation between 1 and -1. So, we’ve had to change some input functions to make the behavior look consistent regardless of how frequently they’re sampled. Similarly, for animations, you can get weird interpenetration and other artifacts when rendering interpolated frames that don’t exist at lower framerates.

As you can see, there are systemic changes we can make, but it’s also a matter of having to go through a bunch of different areas and individual assets and identify problems. We’re focused on things that we expect will have the most impact for players.

The community has had a lot of questions around FOV Sliders, Centered Reticules, Bullet Magnetism, Auto-Aim, and how these pieces are all being handled for both PC and what will be brought back to console. I know the decisions on these features are design questions, but I was curious how implementation has been going and what has been investigated to potentially carry over to console at this point?

Andrew: It’s something that’s been on our mind, but it’s not something we’ve really spent time investigating. We’re focused on getting these features done for PC, and then we’ll work with Design to see what makes sense to bring back to console.

As the line gets blurred between console and PC, with Xbox One supporting numerous resolutions, FreeSync support, keyboard and mouse, etc., it’s reasonable to consider these features on console. At the same time, we’re mindful that these things affect performance, gameplay, and competitive balance in ways that haven’t historically applied to consoles. We want to ensure we have the right systems in place to meet player expectations.

When you say investigate these features, are there any you have already dug into that have posed challenges on PC and would be even more problematic on console?

Andrew: Field of View is one that comes to mind.

Sean: Each Halo game, including the remastered visuals, had their first person render models tailored or otherwise tested for specific FOVs. These FOVs are not the same from game to game for various reasons (design, technical, or a mix). Each Halo has had slight differences even within them from Multiplayer, Campaign, and even split screen being they were built within these constraints.

Example of FOV Turned up to 120 and left arm displaying as a floating arm when throwing a grenade.

But since they were made with only a given FOV in mind, the original authors most likely never caught that at higher FOVs your view clips through some larger weapon’s geometry. You can already see this in H1's remastered visuals. Pick up a Rocket Launcher, then look all the way down. You should end up seeing partially inside the remastered Rocket Launcher model. This is due to an update we pushed last year which increased the FOV (it was a bug I worked on, and IIRC, SP did not match MP, so we were trying to fix that).

This clipping is a very specific edge case (who looks down at their feet with a RL, unless they are going to launch themselves to Hades?) so we felt it not a big issue.

Example of FOV turned up to 120 while sprinting showcasing poor visual representation.

Now fast forward to PC FOV and I assume we have a whole new set of technical challenges to overcome with this change?

Sean: True. Due to design constraints and how the titles were scoped depending on the FOV you pick, you will run into design limitation issues. What does this mean for competitive space? Players no longer make a trade off picking up the Spartan Laser which obstructs their view normally. Models don’t appear appropriately and can even cause things to start looking… Weird. We are working through various scenarios while design is defining what default scope they would like the FOV to be capped for certain activities, but also to leave the door open for those who want to explore even wider views. This will likely be a setting in a .ini file as well where a warning appears saying, “if you got past here – things will break.” This way those who want to see what Halo looks like in the extremes can, but users who just want to play within the confines of it looking acceptable can enjoy some of these adjustments.

Thank you for the info, I know people will appreciate the openness on this. My last question of the day to engineering that was brought up in the community was regarding how Xbox Live integration is being handled and just how it’s going with Steam?

Andrew: Overall, it’s going well. It’s the same Xbox Live system we’ve been using on console, so we really haven’t needed to make many changes. Most things just worked. It’s one of the reasons we chose to leverage Xbox Live on PC. Matchmaking, dedicated servers, achievements, stats, progress – all those things are already in place. The biggest challenge has been reconciling the social experience between Steam and Xbox Live. We want to make it easy for players coming from Steam, who have Steam friends but may not have Xbox Live friends, to find each other and play together easily. So, there’s still work going on there. But, in terms of overall implementation, it’s been pretty straightforward.