Jump to content

MattScott

CEO
  • Content Count

    1316
  • Joined

  • Last visited

Everything posted by MattScott

  1. Hi all, Sorry for the late post today. I try to get these out a bit earlier, so they can be read by our European player base. We had another big push this week to try and clean up remaining items for the Beta. We completed a lot of the audio re-work late on Friday, but I had an SPCT member go in, and we saw many of the issues were fixed. Still a couple stragglers, but with the limited testing, it looks like we got about 80-85% of these bugs. Next, let's deep dive frame rate issues. Last week, I walked through our work on optimizing the UI during missions in Asylum. Today, I thought I would post some of the performance statistics from several builds. These all came off the same machine with the following specs: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz with 16GB of ram and an NVIDIA GeForce RTX 2080 SUPER The test is based on the average frame rate running around for 10 minutes in Asylum while actively doing objectives and missions. I should make the disclaimer that we always accept these benchmarks with a grain of salt, because with an online game it is impossible to recreate the same exact testing conditions. But we use them as a general feedback mechanism to let us know if we're on the right track. I'll apologize in advance for not having any of Skay's pretty charts. We started with the performance on Live with ~18-19 players in the district: Mean Frame time = 8.08ms Mean Frame rate = 123.75 FPS Average Frame time = 8.125ms Average Frame rate = 123.07 FPS Maximum 1% Frame time = 6.95ms Maximum 1% Frame rate = 143.8 FPS Minimum 1% Frame time = 11.12ms (ignoring hitches) Minimum 1% Frame rate = 89.87 FPS UI accounted for 1.41ms on average We actually pulled two logs from two different sessions during the 4/17 Beta. I'm going to share them both, because it illustrates the variance in benchmarking. Session #1 during the Beta stream with ~19-24 players in the district: Mean Frame time = 12.02ms Mean Frame rate = 83 FPS Average Frame time = 12.19ms Average Frame rate = 82 FPS Maximum 1% Frame time = 6.62ms Maximum 1% Frame rate = 151 FPS Minimum 1% Frame time = 18.16ms (no hitches) Minimum 1% Frame rate = 55 FPS UI accounted for 4.43ms on average (more than 3ms higher than Live) Session #2 during the Beta stream with ~19-24 players in the district (but only half that for the last couple minutes): Mean Frame time = 10.98ms Mean Frame rate = 91 FPS Average Frame time = 11.21ms Average Frame rate = 89 FPS Maximum 1% Frame time = 5.55ms Maximum 1% Frame rate = 180 FPS Minimum 1% Frame time = 16.94ms (no hitches) Minimum 1% Frame rate = 59 FPS UI accounted for 3.49ms on average (only 2ms higher than Live) You can see that just dropping some opponents during the stream for the last couple minutes made a significant difference in the frame rate between Session #1 and Session #2. All three of these tests had real players running around firing and jumping a lot more often in concentrated areas with customizations. The bots don't do that. There is literally no AI at all. They randomly path around the district, fire and interact with things. They are great for us to trace code and diagnose issues, because we can start up missions in Asylum without gathering a bunch of real people. In retrospect, I wish we had a bot run from the 4/17 Beta build. We got an original benchmark today, and I had to throw it out because we didn't have enough bots running and the bots that were in the district were super far from each other. So the stats were clearly skewed and too good. We fired up more (although couldn't get 19-24 to compare), and this time they clustered up a bit near the Criminal spawn point. But even this next benchmark wont represent an apples to apples test with the first three. Here are the results from today's session in the new Beta build with 15 bots: Mean Frame time = 6.03ms Mean Frame rate = 165.78 FPS Average Frame time = 6.07ms Average Frame rate = 164.8 FPS Maximum 1% Frame time = 4.82ms Maximum 1% Frame rate = 207.4 FPS Minimum 1% Frame time = 7.80ms (no hitches) Minimum 1% Frame rate = 128.2 FPS UI accounted for 2.56ms on average (we are still running both Unreal UI and Scaleform for now during game play in APB 2.1) Based on this test, the next step will be to organize another large playtest between SPCT, the streamers, and LO staff so we can get a better benchmark. I'll let you guys know when that will happen. FOOTNOTE: Also for those that are interested, we started work on the unfinished DAM (District Allocation Management) system that was designed by Reloaded. This system dynamically collapses and expands threat by spinning down and spinning up new districts during the day. This is the first major system we will launch directly aimed at solving match making in a new way. It requires APB 2.1 to work, but I wont hold back the Beta for it. I wanted to make sure we get that feature pushed out as soon as possible. Thanks, Matt
  2. Interesting format and questions. I'd be curious to see the results. Thanks, Matt
  3. Hi all, We worked hard to make up ground this week despite the rising tide of tickets. We also brought on a new CS person. As of today we have: 493 new tickets 685 total tickets We are responding to tickets submitted on 4/17, so we're at 2 weeks to respond. Thanks, Matt
  4. Hi all, I’m definitely interested in seeing the results once enough people have weighed in. Thanks, Matt
  5. Hi there, We had to turn on this feature recently when our registration / login pages were getting hit by bots. This isn’t a DDoS attack, but it’s similar in that attackers direct lot of traffic to fill out specific page to make them unavailable. Thanks, Matt
  6. Hi all, This week started a bit unorganized. I think the team was a bit burnt out having worked long hours to prep the streams last week, so some staff took Monday off. The rest of us took the day to digest all the data from the streamed playtest of APB 2.1, so we could create a new dev plan to finish the Beta. Problem #1: Poor frame rate Initially we thought the slowdown was from all the characters in the district. In order to test that, we needed to revive some old code that allows us to run Bots in districts that can emulate players for missions. Don't get excited. These Bots are horrible. They literally move around the district firing and interacting with things randomly. SPCT has been fascinated by seeing these AI abominations running around and trying to determine where they are going. After some testing, we determined the major part of the slowdown isn't tied to the number of players in the district. However, the Bots did allow us to spend some time identifying game loop areas in missions that were underperforming. We got a build out to testers by Wednesday and there was some improvement. We also found that Scaleform continues to drag our framerate down, so we have decided to remove it entirely from the game play HUD. That will free us from having to constantly update that system for the couple screens that use it. We optimized the Scoreboard HUD, Actionmessage HUD, and Taskmarker HUD. Problem #2: Audio issues This is the last part of the code that we haven't touched. I'm sure many players noticed how bad it was in the streams. Right before the playtest we pulled down a new version of Wwise, so this week we dove into that part of the code where we found... a mess. It looks like during the port to console (and possibly even in Live) the dev team didn't really implement sound to utilize all of the proper features. We did make progress, and we're hoping to get a build to testers soon so they can verify some of the worst sound issues are corrected. We rebuilt the PS4 and XB1 sound banks, fixed a threading issue with audio memory, and reduced some info calls to improve performance. Ongoing work: We carried over a task from last week to implement a new SSAO shader to get rid of the flicker when you run. The flicker is caused by changing the Field of View which breaks the math in the shader. It's a known issue in Unreal. Thanks, Matt
  7. Hi all, This week was brutal. We got hammered with tickets, and many of the active tickets they started were very difficult to solve. That means we lost significant ground. Hoping to make it up next week. As of today we have: 563 new tickets 700 total tickets We are responding to tickets submitted on 4/8, so we are at 16 days to respond. Thanks, Matt
  8. Hi all, Missed the post yesterday here. Instead we uploaded the highlights from our Beta stream on Friday. Here is the thread: Thanks, Matt
  9. I definitely want to do more of these. This is only our 3rd Q&A in almost 2 years. Thanks, Matt
  10. Hi everyone, For those that missed the streams, the Q&A or my bad posture yesterday, we decided to edit down the demo and Q&A on Little Orbit's channel. You can see the highlights here: A full transcript of the Q&A section of the video was made by @Kevkof and is posted further in this thread. Thanks, Matt
  11. Hi all, The team is getting through tickets as fast as they can. As of today we have: 409 new tickets 553 total tickets We are 2 tickets away from responding to tickets submitted on 4/5, so we're were at 12 days to respond. We have started interviewing for more CS. Thanks, Matt
  12. Hi there, For clarity, we didn’t invite anyone except the previously approved streamers in our program (which isn’t very large). From there we announced the streams, and then evaluated everyone who applied. I think one of the names you mentioned contacted us after we posted the list, and the other didnt contact us. This wasn’t intended to be exclusionary at all. There were very few we had to say ‘no’ to for one reason or another. Thanks, Matt
  13. Hi Alisha, Your criticism is fair. But I think you're making massive assumptions about our content management tools. The CMS used to administrate ARMAS and those items was home grown. It is ridiculously clunky and slow based on ancient tech. Back in November we had a plan to clean everything up by importing newly formatted descriptions directly from exported game data. However that effort turned out to be a bust because some of the items on ARMAS were hand edited with flavor text in addition to the stats. We then backed up to start looking at a rewrite of the CMS (or entirely scrapping ARMAS and moving to a new store platform), but that effort quickly got put on hold when everyone was put on the Engine Upgrade. At this point there can only be a single #1 priority. Thanks, Matt
  14. Those improvements have already been made. We are hoping the PC Beta will help us work out all the bugs first. Then we can submit to Sony for approval so we can launch the PS4 version.
  15. Hi everyone, I hope you are enjoying your respective holidays this weekend and connecting with family and friends either virtually or in real life. Several players reached out to me asking if/how we managed to fix the problems I discussed in the last update, and one even sent some ideas on how to fix the issues. After responding to them individually, I realized that I had nearly written a blog. So I thought I would share those answers here, since I didn't post an Engine Update yesterday. First, a little bit of history. When the upgrade to Unreal 3.5 was started at Reloaded Productions, they were faced with the difficult task of exporting all the geometry for the districts from Unreal 3 to Unreal 3.5. You might think this is easy, but Unreal 3 has very limited export formats. The final solution was to write a commandlet in Unreal 3 that exported meshes through the OBJ format as pieces along with some extra data. Then they wrote a commandlet in Unreal 3.5 that reconstructed all those individual files and imported everything, and when they were done, they exported a single FBX file for each mesh. This is a pretty impressive bit of code, because now we have a decent starting place for all the basic buildings (like that lighthouse entrance from last week). It's important to know that APB was the result of a different project at RTW which was focused on procedural world building. As good as that tech was, it was also somewhat messy. So a lot of manual 3D art work had to be done to clean things up. Since the RTW days everything has been done in 3DS Max. So that's what we used. When we hit issues like last week for a specific building, we often have to fix it in the original FBX and then re-import it back into Unreal. But that leads to 5 basic problems: 1) There are unwelded verts all over the place that leave stray polygons (polygon soup) detached from each other. The easy fix for this is to select all the verts in 3DS Max and then weld everything within a specific tolerance back together. But you have to find the right weld tolerance. APB is modeled in centimeters. When we welded verts within 1cm of each other, we ended up welding verts that needed to remain distinct, and some texturing got ruined. The best tolerance ended up being 0.5cm. Here is an example of what unwelded verts look like when the lightmapping tools try to bake lighting. 2) Since these FBX files were programmatically exported, they have no smoothing group data. Bad smoothing groups is another place where lighting will bake extra seams and edges that you don’t want. There are thousands of building pieces in APB and many of them have LOD variants, so we needed an approach that could be run automatically across a number of files. We tried automating "autosmooth" in 3DS Max and generated disastrous results. In the end, since the majority of buildings have squared off edges, we wrote a maxscript that was able to sample faces for 30 different vectors (angles) to rebuild the smoothing group data. From there everything else had to be hand tweaked. Here is an example of a more complex dock building after we applied autosmoothing. I have selected the faces from a specific smoothing group. You can see how some faces on the same side of that building are not highlighted. This means they aren't in the same smoothing group and can cause problems when we bake lighting. Here is the same smoothing group after using our custom script. All of the faces on the side facing the camera are in the same smoothing group. This will insure they will all be lit more uniformly together. 3) After those two issues, then we get to the uvs. In many cases, the original set of lightmap UVs can simply be repacked to use the texture space better. But if you had stray polygons to begin with, then chances are those will still be messed up in the UV channels. So in about 20-30% of cases, we had to create all new unique UVs required for lightmapping to work. Again, the automated uvmapping tools failed us because they all use a single angle to determine where to unwrap the mesh. So this had to be hand tweaked by artists mostly selecting chunks of contiguous walls where we wanted uniform lighting, then planar mapping those selections as a single set of uv faces, and then repacking the whole uv channel to fit 0,0 to 1,1 with no overlapping faces. For those who are unfamiliar with what uvs are, they are best described with a picture. UVs are a 2D coordinate system for mapping textures onto a 3D object. Each face (triangle) of an object is defined by 3 vertices in 3D x,y,z coordinates. In order to texture those faces, we have to map each vertex into 2D space with just x,y which are renamed to u and v so we don't confuse them with the 3D coordinates. Each object can have multiple uv channels. For lightmapping, we need a channel where none of the faces are overlapping. The building above looks like this: And here is an example of the lighthouse itself when we tried to use Flatten uvmapping to generate a set of unique UVs and then tried to bake lighting. Since the lighthouse tower is round, you can't apply a technique that unwraps faces based on angle. 4) Sometimes we simply needed to increase the lightmap resolution. When the districts were rebuilt in Unreal 3.5, part of that commandlet tried to guess the surface area and set the appropriate lightmap texture size. In some cases that estimate was way too small. Increasing the size fixed a lot of lighting artifacts. The problem with APB is that texture memory is already stretched pretty thin. So we have to be careful when increasing these. Fortunately we have tools in Unreal that allow us to view the entire district with lightmapping resolution grids turned on. Larger / darker will be worse with chunky shadows or visual artifacts. Smaller / lighter is better and more defined. Here is what that looks like on the same dock building. Some of the areas that appear solid colored actually have a grid so small you can't see it in this shot. 5) Lastly, for hyper detailed meshes, there is an option in Unreal to use high precision UVs. I’m guessing by default they use traditional floating point values, which lose accuracy for small numbers with a lot of decimal places. Checking this option probably switches to double precision which preserves better accuracy. In any case, this also cleared up some lighting artifacts. Hopefully some of this information will help you understand why the Engine Upgrade has taken so long - even from the point that we took over. It's also one of the reasons we decided to launch the Beta with only Asylum and Social, since those districts are farther along in being cleaned up. Thanks, Matt
  16. The streamers this Friday will be showing off the APB 2.1 Beta. It will only include Asylum and Social for the time being. The next version of the Beta will have all districts, and then we'll launch the full APB 2.1. Console will be running the same code, so once that gets approved by Sony and Microsoft, those players will get all the new content from the last 2 years + new content as it arrives on PC.
  17. The 2 new contacts featuring the EMP will be added when APB 2.1 launches.
  18. It's not really possible for us to run a Beta like this on console. However, it's the same code base, so there has been progress. In the meantime, we are hoping the PC players can help us work out the bugs before we submit to Microsoft and Sony.
  19. Hi everyone, There isn't an Engine Update this week. Instead we are announcing the first Live stream of the Beta on Friday, April 17, 2020 at 11am PST. You can get more details here: Thanks, Matt
  20. Hi everyone, 6 months ago I decided that the community had been kept in the dark too long about the Engine Upgrade. In development all kinds of things can and do happen, and even the best teams run into issues and blockers. So to help pull back the curtain, I started posting a dev diary of sorts focusing on our weekly progress. If you haven't been following it, you can check it out here: This week there is no update - at least not on the engine itself. Instead we are going to try something different with the community. On Friday, April 17, 2020 at 11am PST we have invited a number of APB streamers to show off the new Beta live. Over the coming week, we'll be posting a list of Twitch channels that will be participating so you can support your favorite. Each streamer will start with some quick benchmarks on their system from APB 1.20 (Live). Then they will load up the Beta and do another quick series of benchmarks before jumping into a couple Fight Club matches on Asylum with our dev team. Everyone will have codes and goodies to give away, and they will be gathering your questions and comments to give me for later. After about an hour all of the feeds will hand everyone off to the Little Orbit Twitch channel (https://www.twitch.tv/littleorbit), where I'll do my best to answer your questions and talk a bit more in-depth about the upgrade and the upcoming timeline. EDIT: Below are the names of the streamers that will be showing off the Beta on Friday. This was a bit difficult to manage, because many of these are controversial figures in the community, but I didn't want to get into the politics of approving or denying streamers. The idea behind this is to allow the community to take a good look at the game with your favorite streamer. You can choose to watch any of these, so let's not flame this thread with criticism. This is a big milestone for the game. Let's enjoy it! Here is the list: WitchQueen https://twitch.tv/witchqueen Frosi https://twitch.tv/frosi Lie https://twitch.tv/liee Rich https://twitch.tv/cuve RuschGaming http://twitch.tv/ruschgaming Kempington https://twitch.tv/kempington Flaws https://twitch.tv/Flvws Gordo https://twitch.tv/gordoismyname CombatMedic02 https://twitch.tv/0utbreakgaming Exo https://twitch.tv/exoticzlol Zeal https://twitch.tv/zeal PoundOfFlesh https://twitch.tv/thepoundofflesh Shini https://twitch.tv/shini Jam https://twitch.tv/amsterjam Ntec https://twitch.tv/ntec Sadira https://www.twitch.tv/sadira SKay will be joining Matt Scott on twitch.tv/littleorbit for a Q&A at 12pm PDT / 7pm UTC. Thanks, Matt
  21. Hi all, Still trying to keep the response time low, but there has been a massive surge of new tickets. The team is working hard to keep pace. As of today we have: 318 new tickets 490 total tickets We are responding to tickets submitted on 4/2, so we're were at 8 days to respond. EDIT: Sometimes a picture is worth a thousand words... Here is a report showing how many new tickets we have been getting since the beginning of 2020 through last week. We went from ~200 new tickets per day in late February up to nearly 400 tickets on a single day last week. In order to stay current with tickets right now, we have to close ~1500 tickets per week. Here is a report showing our average response time since January 2019. At the beginning of 2019 it was taking between 30-36 days to response on average. For the most recent 12 weeks we have been responding between 6.8 days and 4.9 days. Thanks, Matt
  22. Servers were back online at the time of my original post.
  23. Hi everyone, This is just an informational post to let you guys know that the Citadel servers got hit extremely hard this morning. Our normal DDoS protections weren’t enough, and those districts were affected intermittently for about an hour. If you had connectivity or latency issues, that wasn’t your provider. It was on our end. It’s been quite a while since we have had an attack get through. The network team has made corrections to block this form attack moving forward. Apologies, Matt
  24. Hi everyone, This was another productive week. We fixed the blown out ColorLUT issue that I posted pictures of last week. We are knee deep in fixing an in-game browser issue that causes a crash when opening up ARMAS. We are also working through more collision and game-play issues in Asylum. And lastly, that's right, we are working on lighting issues in the districts. I know this is something that has been taking forever, and several players suggested that we release the Beta with unfinished lighting. However, just to show you some of what we are fixing, I pulled some images that went back and forth between the team this week. Building lighting in Unreal is actually 2 different processes: (1) Baking lightmaps and (2) building indirect lighting 1. Baking lightmaps This is an ancient technique for generating fast lighting that doesn't require very powerful graphics cards. The primary downside to lightmaps is resolution. Lighting is baked to a texture and then wrapped around objects just like normal textures, but if your lightmap is too small, then you'll end up with very jagged results. Conversely, if your lightmaps are too big, then you'll eat up a lot of texture space. Also, you can only build lightmaps for objects that are static - meaning they don't move. So it's not a technique you can apply to everything in the scene. Ultimately, even though this technique is very old, lightmapping works well if you blend it with several other techniques. In our case, we don't build lightmaps, we build shadow maps. This enables us to change their color and how much they influence the scene at different times of day. We can only build shadowmaps for static objects that don't move, and those objects require a separate UV channel to map that generated texture into. Buildings are the best example of objects that we bake lighting for. However, Unreal is very finicky about the UVs it maps into. For those that don't know, UVs are a 2D position on a texture that is assigned to each vertex in a mesh. This defines how textures map onto the mesh. Lightmaps require "unique" UVs. That means each vertex maps to a unique spot in the texture, which makes sense because the lighting generated into the lightmap would be unique for each part of the building. If any of those UVs are slightly overlapping or touching the edge of the texture, then Unreal errors and aborts lighting that object. We run lighting with error color coding turned on to see which objects have issues. This looks something like: The orange area indicates that part of the lighthouse entrance doesn't have correct UVs. This specific case likely wouldn't be a big deal for Beta. However, this next case is, because every ceiling in this part of the district has no lighting and looks terrible. As you imagine some districts have thousands of individual meshes that require lightmap UVs, so we have been going through by hand to fix all the areas that aren't building correctly. Corrected lighting ends up looking like this: 2. Building indirect lighting This is a new system that was introduced in Unreal 3.5. I'm sure Reloaded felt this would be the biggest visual upgrade for players, and they aren't wrong. However, the new lighting engine in Unreal 3.5 also costs quite a bit more to render, so all of our initial performance tests were terrible. We have spent a lot of time optimizing so that players will get the benefits of better lighting, but not take a huge performance hit. Indirect lighting is built into a 3D grid and it samples the various lights in the scene at that location, so that when a moving or dynamic object is in that area, it is quick to apply the lights. This next image shows off some of the better lighting which is a combination of overhead dynamic lights, dynamic shadows, baked shadowmaps, ambient occlusion, and built indirect lighting on the player). It also shows off one of the big flaws in how indirect lighting is built. The indirect lighting in this shot is the orange light casting on the player. The flaw in the shot is that there is no obvious source of that lighting. In fact, that orange light is coming from just inside that building. This only happens if they get too close to the wall because the 3D grid is 4ft x 4ft, which doesn't have the resolution to sample lighting from both inside and outside the building. To fix this, it requires us to build lighting volumes that "trap" the light inside the volume by inserting extra cells in the 3D grid for indirect lighting to emulate where walls would prevent light from leaking outside. The art team has been building lighting volumes for these cases. Lastly, we had a couple players mention that we needed to turn on ambient occlusion. It's there, it just has problems. Here is what ambient occlusion looks like right now in Asylum. It's very faint, and it's being calculated on a very dark frame buffer in the pipeline. That's also being looked at. Thanks, Matt
×
×
  • Create New...