In the “Tracking the Engine Update” forum post, an update by MattScott addresses a recent post that asks a simple question.
Where is Matt?
A very long post was made in response to address the recent absence. I’ll post the entire message below, and I’ll do my best to summarize it for those who just want to know if certain questions were answered.
- Started a large project with a partner in January
- Second new project that finished organizing and reached terms on.
- Changes being completed for Unsung Story
- Something about Descent and wanting to share news as soon as legally possible
- “…my primary role right now has been managing the major overhaul to APB 2.1.”
- Regarding APB 2.1, focusing on two main systems that were dropped during initial console work. Night lights / AO shadowing and Bulding Feature rendering, with Night lights being the main focus
- Don’t expect weekly updates like before.
Click here to view this post on the Gamersfirst forums.
This week I’m going to try and make up for all the missed updates.
Bear with me, this is a bit lengthy.
I’ve seen the “Where is Matt” thread, and I appreciate the concern. I’m fine. Just busy.
I figured I would start this update with a bit of context for what is happing in the studio before I jump into APB.
At the beginning of January, we started a very large project alongside a longtime partner of ours. These are important projects for the health of the studio because they augment our cashflow and ability to continue investing in projects like APB.
This first period of any game is a ton of work. The team is organizing milestones, delivery dates, the checklist for how to evaluate those milestones, and then the detailed overall schedule that has resource allocations for every staff member on the project. We are also working through wireframes for the user experience (UX) flow, doing mockups for the User Interface (UI), polishing up the Game Design Document (GDD), and writing the Technical Design Document (TDD). This project was based on some older tech that was written back in 2013/2014, so there has also been a technology upgrade effort to bring everything up to current standards. Per usual, I’ve been knee deep in all of that reviewing, asking for changes here and there, and generally building the momentum we need to finish pre-production and get into production. We’re submitting the deliverables for Month #2 today, so now I can step back and let my production team take over the reins to manage the staff and continue progress. Now before I start seeing posts and panic, the team working on APB are separate from this new project.
Alongside all of that, we have a second new project that we have finished organizing and reached terms on. Just waiting for paperwork and then we’ll start that one too. Yep. You guessed it, I’ve been handling the more complex parts of business development and scope on that title as well. Some of the work will be done in-house, but most of development will be with an external group we have used before. Little Orbit’s main focus is the publishing and launch for the game later this year. I’ve done the majority of my part already, so this is getting handed off to a producer for the next steps.
We also have a big round of changes being completed for Unsung Story to get back out to our Early Access backers.
And lastly, I saw mention of Descent on the forums. It’s been a long hard road. I appreciate the patience of all the Kickstarter backers and Early Access fans who supported that title. I want to get the game in their hands as much as they want to play it. I promise we will share news as soon as humanly possible when we are legally able to. We are nearly there.
TL;DR – 2021 has been insane for me so far, but I’m getting caught up.
So that brings me to APB.
Even with those various other projects happening in the background, my primary role right now has been managing the major overhaul to APB 2.1. As I mentioned in my last update, there are two main systems that were dropped during the initial console work. These systems were replaced with standard graphics techniques and removed, so it wasn’t obvious to us they were ever missing. The team managed to uncover these missing systems during a line by line comparison with APB 1.20.
The systems are:
#1: Night lights / AO shadowing
#2: Building Feature rendering
We’re focused on System #1 right now. As of today, we believe all of the missing code has been merged into 2.1, and it finally compiles again. Imagine spending a month moving code into a project and only now getting it all to compile. That’s how much was missing. I seriously doubt that all of the logic is perfect, so there are going to be bugs littered throughout. Regardless, this is a big first milestone. Now we’re recompiling the game’s Unreal scripts, which isn’t quite working due to some custom classes that can’t be autogenerated. Once that is resolved, then here is the rest of the steps to get this part of the project completed:
1. Get the Unreal Editor working with no crashes.
Let’s cross our fingers. In theory, this part shouldn’t take a lot of effort. There is some Day/Night Weather data that needs to be reimported from APB 1.20 through the Editor, and then this step is done.
2. Test in a very small Unreal test scene for both APB 2.1 and APB 1.20 that only has part of a street, a main directional light and a “night light” such as the street lamps.
We need to generate lighting for this small scene and then compare the results side by side. Not just the visual results – but stepping through both sets of code during the process and comparing the actual data. Night lights generate individual custom shadow maps that can be turned on and off depending on the time of day. Those maps light all the static geometry they effect, but it’s virtually free to render at runtime. Right now, every night light in APB 2.1 was altered during the console conversion to be a dynamic light.
There’s a double whammy here.
First, dynamic lights themselves are super expensive. But second, the shadows for night lights are being calculated all the time. They are just set to 100% transparent during the day!
3. Do the same test to work on the missing “ambient occlusion” map data.
In APB 2.1, they decided to go with Screen Space Ambient Occlusion (SSAO) which is done in GPU shaders and rendered at runtime. But even after selecting that system and getting it working, the console devs disabled it when APB was launched on console. We found out why when we turned it back on.
It doesn’t work.
During the Open Beta tests, you guys all saw the flicker that happens when running or entering a car. This is because the camera’s field of view changes which in turn causes the flicker as an artifact. We spent quite a bit of time looking for how to fix this, and nearly everything we found said it couldn’t be solved. The math just doesn’t work.
Back in APB 1.20 they cheated and baked out AO to a different style map that could be overlaid on the scene. Not only is this much faster to render, but it doesn’t flicker. It also solves another problem – small shadows. In Step 2, I talked about all those dynamic night lights. Each of those casts shadows on everything includes foliage/grass. You can imagine how expensive it gets during portions of the map that have lots of foliage. The AO map takes care of those small shadows without all the overhead we have today.
4. Merge Unreal 3 and Unreal 3.5 render techniques.
With all the data in place, then we can actually bake lights for a simple test district and run around. This is the trickiest part. We want to preserve the dynamic lighting from Lightmass, the new lighting engine in Unreal 3.5. Lightmass has a very slick pre-calculated grid of light samples that are used to cheaply light moving or animating objects in the scene without having to resort to expensive dynamic lights. But for static objects, we want to use the older shadow map / AO data combined with our newer multithreaded techniques. That’s a bit of a jigsaw puzzle to work out, but there’s already been some work being done to try and identify all the shaders that need to operate together.
As soon as step 4 is done, we’ll benchmark everything again. It’s possible we may be able to launch APB 2.1 based on this single system, and then we can work on System #2 in the background for more improved performance. Additionally, for all those players who felt the districts were too dark or the lighting was odd, my hope is that we’ll capture the color corrections from APB 1.20 but with slightly better looking techniques.
I know this sounds like a lot, and it is. Unfortunately there aren’t a lot of small milestones that I can talk about in between each step, which makes these updates more difficult to write.
I’ll do my best moving forward. I’m hoping once we get to Step 2, I can start posting screenshots. But right now I can’t commit to the same weekly updates like before.
That’s it for now.
Again, sorry about the lack of updates or responses to my inbox or discord.
My schedule is nonstop right now. We want to get this completed for you guys as soon as possible.