News

MCC Development Update - August 2019

By -

MCC Development Update – August 2019

Hey Friends,

Welcome back to another edition of the monthly MCC Development Update series. With all the mini updates that have been posted over the last few weeks (1, 2, and 3), it’s crazy to think we’re already back again for our full-sized monthly development recap. If this is your first time joining us, you have some reading to catch up on. Below is a list of all the previous development updates covering Halo: Reach coming to MCC and MCC coming to PC.

In this blog we are going to talk about all the places MCC PC has been, how flighting has been shaping up for the future of the project, and get an update from the Senior Producer regarding Xbox Development. We also have the treat of both a Duck Tales & and Scoops section to share with y’all.

Let’s start off with some housekeeping regarding the recently completed game type and map migration.

MCC Map Migration

Last month we talked about how we were planning a one-time process to migrate legacy game types and maps from Halo 3, Halo: Reach, and Halo 4 to MCC for players to use. This month, we have successfully copied all files and are in the process of ingesting over 9.2 million pieces of user created content to the new backend that will support files and file shares in the future! Y’all made a few things and we are very excited to bring these into MCC when Halo: Reach releases on both platforms.

 

Gamescom Update

Now for a few words from John who was supporting MCC across the pond.

Although it feels like I just got back, about two weeks ago I began my adventure out to Germany for Gamescom. While there, our team partnered up with the Xbox Game Pass team to bring Halo: Reach on PC to our fans in Europe, and it went extremely well. Even though it was the same build we had at E3, featuring a 10 minute demo of the Tip of the Spear campaign mission, Halo fans and PC enthusiasts came in droves to go hands on with mouse and keyboard.

Thanks John! It was great to have more people experience this milestone build. And speaking of other milestones, let’s talk a bit more about flighting.

Flighting Progress and Recap

Over the past few weeks, ske7ch, the Publishing Team, and I have talked about ways to improve how we communicate with the community about flighting and development. In order to continue growing our transparency and shore up dry spells of flighting news, we have established a new cadence for information drops. Going forward we are looking to conduct monthly blogs such as this one, and then end of week updates that will be status reports on as it regards to flighting. We are already receiving feedback that this approach has been improving our communication with the community.

The first article was one that outlined our entire flighting process and philosophy which you can read HERE. Subsequent updates can be located in the living thread over on the Insider forums HERE.

Where are we at?

FireFlight has come and gone. We sent out invites on Saturday, 8/24 and the flight ran until the morning of 8/27. The primary goals was to test Firefight matchmaking on PC, via Steam. We were able to gather valuable feedback in the form of bug reports, online posts, and from a post flight survey.

For the FireFlight, we invited 10,000 users along with some additional friends and members of the studio. Across the board, we had roughly 55.5% participation rate. Some may think, “PEOPLE DIDN’T PLAY!!!???!!! I would sell my first born for an invite!!!” But, in terms of using such an invitation method, the participation is higher than average for joining in and playing which is good! Each flight is made up of user groups that are selected based on the specific needs of the flight. This could be availability, specific PC configurations, or even experience with a specific game mode. As flights progress, not everyone will get in, but the goal is to continue growing the number of users invited for subsequent flights.

Saturday, we saw our highest number of concurrent players on at any given time during the flight. At one point, we had over 800 players searching at the same time with roughly a 24 second wait time prior to finding a match. Across the entire weekend we saw a total of over 90% success rate for players who matchmade.

Participants also took the time to submit tickets via our new Halo Support site! We saw over 400 unique tickets come in from the community reporting bugs - a huge thank you to those who took the time to do so! We sat down this past Wednesday to review, prioritize, and work on getting the issues you reported fixed.

Looking Ahead

We are currently in the process of reviewing all of the flight data and planning how we move forward. We are looking to gain additional insights in a few areas and there is talk of conducting an additional FireFlight to gather that data. More details will come as we analyze and reset goals for any additional flights.

Barring any additional flights joining the mix, the next flight on the docket is the Xbox PvP flight. There isn’t an ETA yet as the team is shifting gears over to focus on this next major milestone. We will have more info to share in the future, but right now everyone is catching their breath and evaluating what remaining items are needed to complete and get ready for the next flight on Xbox One.

By next week, I will hopefully have some more information to share as it relates to the Xbox One flight so stay tuned on that front. In case you haven’t registered, please head over HERE and sign up to be a Halo Insider! Or, if you already are, make sure to update your profile if any of your preferences have changed or your PC specs are different. Make sure you have verified your email address or we will be unable to send you a flight invite.

Xbox One Development Update

It is no secret that adding Reach, new features, and all the bells and whistles that the team has been working on, into the Xbox One MCC build has been challenging. We have previously discussed the memory limitation issues we have been hitting while getting ready to add in Reach. The team has been making progress on this, but it is no easy task. I spent some time with Senior Producer, Michael Fahrny, from the Publishing Team discussing how things are going and where the team is currently at in the interview below.

Postums: When you are looking at the project as a whole, what do you think the most challenging thing left to do? 

Michael Fahrny: Getting MCC Console to run within memory constraints with the addition of UE4 and our additional feature set. We’ve been working at this for a long time now and are making good progress but there’s no magic bullet. It’s a unique problem that just takes a lot of trial and error, figuring out what worked, what didn’t work, and continuing to iterate. We are tweaking these games in ways that they were not designed or architected for. 

Beyond that, we have a lot of additional UI screens that have been added in Unreal due to PC centric features. UI in most games can be delicate and we’ve found this is especially true in MCC. Getting UE & Scaleform to play nice has its challenges and when you add the general complexity of all the UI flows, player options, screen states, M&K and controller support, etc. it’s a great recipe for a ton of bugs – which we’re currently working through.  

Has this issue been mostly a problem on the Xbox One or is it an issue with the Xbox One X as well? 

MF: Memory is a problem all up, but we do have the game running on both and our test team is currently running what we call a “pulse” on the builds to get a good understanding of where our total bug count lies, what regressions may have been caused by some of our recent memory work, etc. It’s a work in progress, but steadily moving in the right direction. While the bug count here isn’t large compared to say UI, these are the complex issues that take time to solve. 

On top of this, we must ensure each title fits within memory, not just Reach. In most cases there is not a universal solution to these problems.  

It sounds like what your saying is, that the team has a lot more work going on than just bringing Halo: Reach into the collection? 

MF: Yes. I can approach this from a couple of fronts. For memory constraints side on console, we are doing all that work now. As we bring each new title online for PC, we will need to revisit each game on console to ensure our memory constraints are still in line. There will always be work to do there and room to improve as time goes on. 

In addition to Reach, we’re also getting most of the new PC front end and subsystems up and running as well as additional features. These are things like M&K support, gameplay feel, new settings, uncapped framerate, resolution support, progression, customization, etc. There is a huge amount of work here that needs to get done that I think a lot of people overlook. 

Once all of that work is done and we move onto other games in the collection, we will revisit as we can to update additional UI, features, revisit bugs, and continuously make the collection even better. Post Reach our new challenge will be to split our development streams so that we can support a live game service model as well as the future game releases. 

What has been the best part of the project for you? 

MF: I think it’s been surprising to me how quickly we were able to get Reach up and running and feeling pretty good. Then getting it out to flighting and receiving a lot of positive feedback on how it feels on PC. We’ve been consistently receiving positive feedback around the feel of the title. It was something I and everyone have worried about. You can take a game and slap updated UI onto it and drop adjust memory constraints and put out a game onto PC. That’s not a very hard thing to do. If it doesn’t feel good, then your player base will not be happy and can be a bust. Proving it out for PC and being able to hit that mark of feel good repeatedly with those who have tried it, has been a very good feeling and a win amongst the team. 

We have received a lot of positive feedback from the events and flighting around how great the game feels on PC. Going into this project and from previous experience making “ports”, this is always one of the most challenging aspects. It’s been a great lighthouse along this journey to remind me that we’re moving in the right direction. 

The other area that’s been extremely humbling to me on a personal level are the fans. I don’t often have time to participate the many events, but I did participate in our E3 presence this year. Everyone that waited in our very long line was so excited to be there and just very thankful for what we’re trying to accomplish bringing MCC to PC. Couple that with the feedback I’ve seen coming out of events like Outpost Discovery, Reddit (yes, I lurk), and other outlets it’s been amazing. 

Support from all of you does really make a huge difference to everyone working on this so from me to you -THANK YOU 

Thank you Fahrny for taking some time to sit down and talk through development on the project all up! Next up, Dana ‘PsychoDuck’ Jerpbak has some words he has put to paper and is coming at you with some insider info in this month’s Duck Tales!

Duck Tales

Hello again. Today, I wanted to break down some of the work we’ve done on Campaign Metagame for Reach. Campaign Metagame, if you’re not familiar, is a collection of systems surrounding core campaign gameplay. These systems are intended to extend the life of PvE content and give players reasons to replay missions and take new approaches to how they play.

MCC has a pretty deep suite of metagame features including basic and competitive scoring and timing, leaderboards, and achievements. With Reach, we of course wanted to include all these same features. But, now that MCC has been out for almost five years, we also have a great opportunity to learn from what did and didn’t work with the other titles back in 2014 and to make some improvements to our approach for Reach.

One of our metagame features is the mission segment tracker. Each mission is broken up into several segments. If competitive scoring or timing is enabled, players’ performance within each segment is compared against a rival. In the other titles in MCC, we probably leaned towards having a few too many segments. This resulted in some segments not feeling very well-defined and some being skippable (which caused some issues with the segment tracker).

With Reach, we set out to create segments which encompassed more recognizable chunks of gameplay (think specific encounters). This way, players have better-defined goals for how to perform within each segment. We hope this makes the experience of replaying a segment again and again to shave a few seconds of your speedrun time or squeeze a few extra points into your score a much more intuitive and enjoyable experience for players.  Additionally, we set out to make each segment theoretically unskippable. We did this by watching world record speedruns and ensuring that every segment would be triggered in even these extreme cases.

Another area we were able to improve from the titles in the original MCC release was in the setting of par times and scores. For Reach, we used some of the same telemetry events we use to monitor health and investigate issues in retail to gather data to determine these values. We gathered timing and scoring data from our QA team's internal playthroughs and used them to set par times and scores based on the difficulty level we were targeting for the associated achievements. Our difficulty target for these achievements is intended to be a bit lower (but much more consistent) than for the other titles in MCC. Leaderboard standing is intended to be the longer-term chase for speedrunners and score enthusiasts. Our QA team also helped us ensure that all the key speedrunning tricks from Reach’s original release were still fully functional in the MCC version.

One of the more fun aspects of working on metagame for Reach was going through all the missions’ scripts to set the segment definitions. It was a little surreal digging through the mission scripts written for the original game nearly 10 years ago. Mission segments weren’t the only thing to come of this work, however. We’ve also made several quality-of-life (QoL) improvements. One of these, a bug fix around low-LoD flocks on Tip of the Spear, was outlined in last month’s Duck Tales.

Another QoL improvement we made within mission scripts was to make a certain trio of cinematics skippable. Long Night of Solace (or M45 internally) was the E3 demo mission for Reach back in 2010. The demo prevented cinematics from being skipped. Unfortunately, this was never changed for the game’s full release, resulting in about four and a half minutes of unskippable cinematics within the mission. This wasn’t an issue for most players, but for speedrunners (and internal testers) repeatedly playing through the mission, it resulted in a lot of wasted time.

So, we made these cinematics skippable. However, working within 10-year-old code presents some challenges and can sometimes lead to unexpected results. One such result was the temporary introduction (and subsequent correction, fear not) of an unforeseen and rather hilarious issue. The cinematics during the space battle sequence required the switching of zone sets (basically the main areas within each mission). At one point, skipping one of these cinematics wouldn’t properly load the next zone set and would despawn the player's Sabre. This resulted in the player’s biped being repeatedly ejected into space as captured in the video below.

It’s time for me to duck out. I hope you enjoyed this look at some of the work we’ve been doing to improve and enhance Reach’s campaign experience for players of all interests and skill levels. See you next time!

Thank you so much Dana for the in depth look at this issue. I will sidestep again out of the way so we can take a deep dive right into the latest Scoops from Mr. Cooper.

Scoops

Feels like a long time since I last wrote something for an update. Technically, I think there was the Q&A I did with Andrew, but that was more of a Postums asking us questions and taking notes from our answers. So, I got off easy for that. There's a lot I could talk about...but at the same time, a lot of what I could talk about can't really be touched on just yet.

Probably one of the more forward-facing parts of MCC that I've had to work on recently is the UGC migration feature. There's two parts to this: the migration of legacy file share data, then the migration of MCC-specific data. The former I've been assisting with, but really the bulk of that work has been tackled by a Certified Ninja on our Services team (this person likes their privacy, so I'll avoid calling them out by name). The latter (MCC-specific data) has required a lot of work on the Pub team's side. It has roots that date back over a year ago now. Way back then, we wanted to pull in some select Halo 3 variants from legacy file shares for matchmaking updates. Sounds easy, right? Just copy and paste, right? No, not right.

The Xbox 360 used a PowerPC processor. The Xbox One and your Windows PC uses an Intel/AMD x64 processor. You can watch this old video that was a tour of Bungie for some aspects of PowerPC vs Intel differences to the right (fun fact: that building no longer exists now, it was recently demolished).

The major factor at play here, and the first thing touched on in that video, is the byte order of these processors. A.K.A., the endianess (technical spew can be found here). To support Halo 3 game and map variants made on the 360, I had to add support for byte swapping that data. Which I had to do very carefully so I didn't forget a field or perform the wrong byte swap operation. I didn't want such mistakes to end up going unnoticed (there's waaaaaaay too many options in game variants), as it would be very bad to ship those files then have people start creating and sharing copies of misinterpreted data. It honestly wasn't complicated but involved a lot of fixup coverage and validation. Another aspect to supporting the legacy files was that when they were uploaded from the legacy games, they were first compressed. With that, I had to spend more time adding support for detecting if a variant file is compressed, decompressing it, then feeding that back into our variant processing workflow. Thankfully, when it came time to do the work for Reach and Halo 4, that code could pretty much plug and play without any changes.

There was a lot of found work related to working on all of this too, especially with proper PC support. A lot of refactoring and cleaning up old (non-Halo) code. But, at the same time, working on the intricacies of legacy content support gave me time to start thinking about how some...things could be supported down the road. Hopefully it all pans out so I can talk about it one day :).

Outside of that, there's been a whole lot of under the hood work I've had to tackle. Build size, code size, memory usage, security...that's the gist. Coming from a low-level/reverse engineering background I'm already familiar with how to analyze assembly code. This comes in real handy when needing to figure out why an EXE is so large or figuring out what can be changed to reduce its size. Knowing what the various compiler/linker settings do is also key.

Oh, I almost forgot. I fixed this bug (video to right). The reason this became a thing was related to Reach changing how head health works. There are individual damage sections for the Spartan/Elite's 'body' as well as their 'head'. The biped's 'head' section transfers damage received to the body (but the body does not transfer damage to the head). However, there's no likewise mechanism for health to also transfer. When you pick up a health pack (or a bunch of other things that can heal you), that restores the biped's 'body' health. Or, if you play as a Spartan, the recharge fraction (red, yellow, blue colors of your health bar) only applies the health recharge to the body. So, to solve for both cases, health regen and health packs (or anything that can heal you, really) I ended up implementing a system which basically mimics the damage transfer functionality, but for health.

Now, there's some intricacies to this. Remember, head health is separate from body health. You can have a different amount of head health than you do on your biped's body. Say, someone only gets body shots on you. Your head health will still be 100%, while your body health is say, in the yellow. When your body's health regens to the highest value of the yellow recharge fraction, it will also transfer health to your head. But your head already has more health, so it stays the same. But, say someone is shooting you in the head while playing a TU game variant that has bleed through enabled. Then you're going to be taking damage to your head which is then also going to transfer damage to your body. But then your body is going to recharge. That recharge will apply to the head now too. Didn't take enough damage for your health bar to go yellow? Good news, both your body and head health will regen to 100%. If you pick up a health pack, the fact that your body is now recharged to 100% also means your head is 100%.

There's also a pretty significant quality of life adjustment in Reach that I suspect many bumper jumper players will be jumping to put to use. This work led to some ancillary investigation into something else cool but took some cycles during down time to get working. I'm not sure of this other thing’s destiny yet, but it could boost some game variants to another level.

Closing Time

This has been a crazy month! With it has come a lot of flighting updates, more progress on building the games we all want to play, and some FireFlighting!

There is one piece of housekeeping that I wanted to take care of before we go. A few months ago, Scoops reached out to me because we had an error in the credits for MCC HERE, specifically in the “Additional Sound” section. Adam Tews's name was misspelled to read as “Adam Tewes.” This has now been corrected. It took a little bit for me to get it into an update, but better late than never. Also, congratulations on your wedding Mr. & Mrs. Tews!

Well, that wraps everything up on our end. We will catch you next month with our next big update. Be sure to check out the weekly update thread HERE for the latest news on flighting through the Halo Insider program. See y’all online!

Cheers,

Postums

Related


Halo Insider MCC Flighting Update

Halo: The Master Chief Collection

Halo Insider MCC Flighting Update

By Postums -

A more in depth look at the process for flighting and how it is handled prior to going out to Halo Insiders.

MCC Development Update - July 2019

Halo: The Master Chief Collection

MCC Development Update - July 2019

By Postums -

Back at it again with a Halo Insider MCC Flighting update, answering more community questions, an Outpost Discovery recap, migration details for legacy content, and an all new Duck Tales.

MCC Development Update - September 2019

MCC Development Update - September 2019

MCC Development Update - September 2019

By Postums -

This month we are covering a project update, providing clarification on UGC migration, showing off some sweet customization images, giving a flighting update, and much more. Dive on in!