Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

13494 Excellent

About MattScott

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi all, I was pushing right up to tonight to see if we could get something to show for the progress this week. But I want to stick with at least an update every week, and I'm out of time. Oh well. We're quagmired somewhere between re-compiling the last of adjusted shader code, sorting out an optimization that relied on 3 lighting coefficients so APB can store light tangent vectors in the alpha of each one, and serialization issues nested deep down in LOD data for static meshes. The work continues. Thanks, Matt
  2. Sorry for the delayed response. 2.0 has the old version. We upgraded it once we started 2.1.
  3. Hi all, Another slightly frustrating week, but only because we had to backtrack a bit. We have decided to go back to the APB 1.20 assets and reimport them. It was a tough call, but I feel it will eliminate any further hidden land mines. As we prepped to reimport, we found issues in the previous import related to how collisions were handled and a couple other items. Last week was spent going over that code. Reimporting will likely also involve a little bit of debugging and possible bug fixing to make sure the missing data can be loaded properly from the old 1.20 files and saved into the new 2.2 files. Then we can go back to debugging and fixing the issues that were blocking us in 2.2. Welcome to Development 301, how the sausage is made. Thanks, Matt
  4. Hi all, I know many of you have been asking about Vivox voice chat. It has been down for a while, which has been a concern for our console players in particular. We have been reaching out to Vivox to try and resolve the issue, but the long and short of it is that the code in the APB client that interfaces with Vivox is quite old. Vivox has been doing us a favor by supporting us with specialized servers for some time now, but they are unable to continue doing so moving forward. We are looking at solutions, but unfortunately this means that voice chat will be down until we are able to update the client with the Engine Upgrade. You can follow my regular updates on the subject here. In the meantime, I encourage those who wish to chat with their APB friends to make use of 3rd party solutions until we can get the in-game chat running once more. Thank you for your patience and understanding, Matt
  5. Hi all, This was a bit of a frustrating week. The main issue right now is a combination of data that was discarded in the original upgrade and the fact that between Unreal 3 and Unreal 3.5, Epic started compressing lighting textures. Epic did this to reduce texture memory by 1/3rd for Directional Lightmaps from 3 to 2. So all of the maps for APB 2.1 ran code during the conversion to get them into the proper format. However during this conversion, the original dev team also dropped other data that they felt they wouldn't be needing. In order to finish, we need that missing data. On top of that, the newer districts have been modified so they are no longer 1:1 with the APB 1.20 districts. This puts us in a weird spot. We can try keeping the newer APB 2.1 districts and then work out how to recreate the deleted data. Or we can modify the conversion process to properly handle the data they deleted and then go back and re-convert the APB 1.20 districts to APB 2.1. Doing that will mean losing all the work that Reloaded Games did on the newer districts to spruce them up. We'll make the decision on that this week. Either way, we are adding new resources to the upgrade project next week that will be able to focus on specific problematic areas, so I'm hoping that progress will pick back up again. Thanks, Matt
  6. Hi all, I took off last weekend to celebrate Easter. I hope everyone got a nice break. There isn't much to talk about this week. We can now load very complex scenes into the Editor and they render fine. There are bugs with Decals and Skeletal Meshes that are being hunted down. We tried running the game to see how the login scene rendered, and it wasn't pretty. There were a number of really bad shader issues that made that scene look like a nightmare. We'll be working on clearing the Decal and Skeletal Mesh issues this week so that all levels load properly in the Editor. Then we'll start troubleshooting in-game rendering which goes through a much more complicated pipeline. Thanks, Matt
  7. Hi all, I'm going to try and keep up the schedule of posting at least one update a week (even when they are small). We are now on Step 2 from roadmap I posted here. This week was spent testing, fixing, and testing again the work that has been to done. So far we have merged a ton of code, recompiled UE scripts, recompiled shaders, and patched up that code for the two systems we are merging over to get the editor fully compiling and loading without crashes. As I mentioned in the roadmap, now the goal is to get load a simple scene. For this first test, we created a small scene with a sphere primitive in APB 1.20 that has the default material on it. After fixing a number of crashes, we finally got that map loading successfully in APB 2.2 (the internal version for this new expanded version of APB 2.1). Unfortunately the sphere itself didn't render in any of the editor panels. So there was still work to be done, but we can see that all the data is there properly. Just to experiment, we spent some time attempting to load a more complex scene. For that test we used the simplest APB map that can actually be loaded by the game as a district to play in. We use this empty district to test various gameplay elements while they are being worked on. Again, this is a map that was created in APB 1.20 that we tried loading in APB 2.2. The reason we're loading APB 1.20 maps is because that engine fully supports the two systems that are being merged over. So those maps have data that we can use to properly test. And after a bit of hunting down crashes and bugs, we got that scene to load. Right now there are about 10 objects in that scene that are dismissed by the editor due to bad data. But in all cases, they are objects from the two systems we're merging over. Aside from a couple brushes, nothing rendered properly in that scene either. From there, we set about diving into the scripts, shaders, and code to find the needle in the haystack preventing objects from rendering. For the coders following along at home, we use a Visual Studio tool called the Graphic Analyzer for this. That tool allows us to capture a renderer frame and then step through every instruction sent to the Graphics Processing Unit to see what the data was that it sent. To make this exercise a bit easier, we took a rendered frame from APB 2.1 using the same scene that renders properly and compared them side by side. The tool itself is invaluable, but it has one big drawback - it crashes very very frequently. Fortunately the frames are saved, so it's fairly easy to reload. But that involves finding where you were and continuing another half dozen instructions before it decides to crash again. Along the way we discovered lots of places where code hadn't quite been merged over properly and where some smaller systems were overlooked entirely. Friday was pretty frustrating, because we knew were close but couldn't quite get anything rendering before the close of business. So today, we put in a little extra time, and finally got the test sphere rendering properly. Tada! Impressive, right? Behold a completely unlit sphere. Look upon its greatness and marvel. I know this does not seem impressive - at all - but given how much of the code in this game we tore up, it's good progress. There are still bugs with rendering. Some panels in the Editor go completely blank at odd times and you have to reset their view to get them start rendering again, but this demonstrates a clean path through the most basic rendering pipeline. It also means once we clean up the leftover issues, we can get into the heart of Step 2 - adding the rest of the code one chunk and a time to support the new rendering pipeline for the 2 missing systems and baking out the missing data in APB 2.2. As an final experiment this week, we also loaded our simple gameplay scene and that rendered as well, but I can't post a screenshot because it contains some proprietary info onscreen I can't share. Till next week. Thanks, Matt
  8. Hi all, Just a small note to say that we got the Editor up and running. Now comes the fun of fixing bugs so we can open a map. Thanks, Matt
  9. Hi all, I'm still on Central Europe time for another couple weeks, so I'm posting this on my Saturday morning. We made our way through all of the blockers for compiling scripts. Looks like there is definitely a lighting calculation issue that we will have to come back and adjust after everything is working. But for now we have set that aside in order to move on. This week is a bit of a boring update. The team was able to start fixing actual coding bugs this week that occur during the Editor start up process. Lots of them were just missed bits of code from 1.20. We seem to be making good progress so far. I'll keep you posted. Thanks, Matt
  10. Hi all, I'm going to keep the weekly updates going as best I can. Last week, I walked through our four part plan to get APB 2.1 optimized properly. This week we finished troubleshooting the scripts and got those compiling. For those that aren't familiar with Unreal, script files are written in Unrealscript. It's sort of a janky language that Epic has since done away with in Unreal 4. Devs in Unreal 3 used it as glue between the engine and C++ files to expose variables and functions for non-programmers to build off of in the Editor. Now we're working on #1: Getting the Unreal Editor working. I'll admit upfront, I shouldn't have tempted fate when I said "In theory, this part shouldn't take a lot of effort." Turns out all of the shaders for the game have to be compiled and working before we can open the Editor. All modern day engines use vertex shaders and pixel shaders to render geometry and perform calculations on the Graphics Processing Unit (GPU). Vertex shaders handle data that relevant to geometry you're rendering. Triangles. Normals. Vertices. Pixel shaders handle data at the pixel level which can output textures or entire screens. I'm going to make some sweeping generalizations for illustration sake, but during each frame, the game grabs batches of geometry it needs to render or process. It runs that geometry through a vertex shader and then it pumps those results into a pixel shader which results in.. wait for it: a color for a single pixel. Unreal has a modular design that allows the behavior of both vertex shaders and pixel shaders to modified and then compiled over and over with different features. In fact, vertex shader and pixel shaders are reusable. They can be mix and matched to produce different effects. APB has hundreds of shader files that each have inputs and outputs with a bunch of logic in between. That logic is written in yet another language. High-level Shader Language (HLSL). Original, right? Fortunately it reads very similar to C. Right now we're going line by line through all of those shaders to diagnose areas where code was merged from 1.20 into 2.1. There are two categories of issue here: The first is that the shader is simply invalid and doesn't compile. The second is that the shader compiles but the results are broken based on data that is missing or not processed properly. For Getting the Unreal Editor working, we are only focused on the first category of shader issues. Once we get into the editor, then we'll start sifting through maps and characters to find shaders that fall into the second category. This week we made steady progress, but until every shader compiles 100%, I wont be able to show any screenshots. Thanks, Matt
  11. Hi all, 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. Thanks, Matt
  12. Hi all, It's been far too long since I posted an update. I'm actually working on the Engine Upgrade project as a dev, so my free time has become pretty heavily impacted. At this point we are focused on two systems that got removed during the initial console project. One involves a custom lighting solution that eliminates the overhead of dynamically lighting and shadowing thousands of objects in the scene. We found just enough hints of it to have the guys find the rest of it in APB 1.20. It's a lot of code to port in, and it touches the editor, tools, and the runtime game. Work is well underway, but I won't have a sense of how long it will take for another couple weeks. It's not as simple as copying code in and hitting compile. Unfortunately there are extensive differences between the rendering pipelines. I'm sure this is why it wasn't brought over in the original console work. Alongside that, there is another custom solution that Real Time Worlds created to batch render and efficiently handle building features and interiors. Again, there is a lot of code that was removed, but this part will be slightly more difficult. We are also missing all the data that drives the proxy system. That will have to be gathered from APB 1.20 and then imported into 2.1 once we are done. Work continues. Thanks, Matt
  13. Hi all, It's been a while since I have had to address this, but recently we have had some significant network issues. First, a couple days ago, our provider had an emergency maintenance to replace and move equipment around for our game. It's unfortunate we didn't get more warning, but sometimes we are at the mercy of other companies and their schedules. Second, and more important, we have had some bad network latency in the game. This is NOT our servers or a performance issue. This is due to an extended series of DDoS attacks that began when we announced the Open Beta for today. From the network graph below, you can see that we are consistently getting attacked for between 150 gigabits and 200 gigabits with the occasional spike up to 250 or 300 gigabits. These are big attacks. They take special rules to mitigate, and the attackers keep shifting the form of attack to make things more difficult. It's a shame. We're just trying to ship this new engine. Hopefully we will keep things smooth today, because these sorts of attacks skew our results and make it nearly impossible to finish the network optimization. Sorry, Matt
  14. Hi all, It's been a little while since my last update. We ran our 4th Open Beta test on the 21st/22nd, and last weekend was a holiday for me, so I'm just getting caught up. I will admit that our 4th Open Beta was very frustrating. The team worked hard to clear up the issues from the 3rd Open Beta (or so we thought), but yet once we started testing many of those same issues popped up again. Fortunately this time we had a lot of extended data logging and devs online capturing specific moments to narrow down items. More than 250 players submitted feedback and logs. We've still got a lead developer out on holiday, but here is where we stand: SSAO caused client slowdowns (this was supposed to be disabled in this build) Shadows and time of day lighting not finalized Server spikes in both the world server and hosting code (world server has been fixed) Character baking issue (we believe this is an alternate UI flow to the previous issue that we already fixed) Scaleform/UI tearing (mostly on the opening screens like login) Audio problems (very clear what the issues are with the Vegas) Chrome showing up on cars (we think this is a settings issue where anyone running below a certain graphic setting will see the chrome) Keybinds not being able to be rebound (reported but not confirmed) To be clear, there were many other issues reported, but these were the largest that we felt we needed to fix before diving deeper to start addressing collisions or other gameplay issues. I'll keep you posted at the end of this week on our progress. Thanks, Matt
  15. Hi all, This will be a shorter update this week, and I think it will be obvious why in the next couple days. At this point, we have run 3 Open Betas, and we need more information related to the player hardware along side the performance data. We have a lot of players who say they have had good experiences, but we also have many players who have given negative feedback. We took the time this week to significantly improve our stat collection technique. It will now also include any latency tests. So if you're experiencing what appear to be server lag, then please run /latencytest once before you exit the game. The new data collection will run and upload a dxdiag as well. Before the data had nothing identifiable, and while it is still anonymous, it does contain added hardware specs and other info. With that in mind, we have added a popup when you exit the game that asks whether you want to contribute data. We don't want to violate anyone's privacy, but we hope that as many players as possible submit data on this next test. Aside from APB 2.1 work, we also continued work on console. The build is edging right up to the memory limits on PS4, which is creating some issues debugging. But we're making good progress. Lastly, there will be more info soon on the next Open Beta, but this time we're going to do things in 2 parts. The first part will be a shorter more concentrated stress test, and the second part will be another normal play period. I would love to see as many players join for both tests, and as a little incentive we have added something fun to check out in Social. Thanks, Matt
  • Create New...