Jump to content

MattScott

CEO
  • Content Count

    1297
  • Joined

  • Last visited

Everything posted by MattScott

  1. Hi everyone, This is going to be a shorter update with a follow up tomorrow or Monday. We spent the week fixing the bugs and crashes that plagued last week's play test. Yesterday did a new play test with ~30 players. Everyone started by getting on APB 1.20 and testing Asylum for about 30 minutes. Several of the players last week didn't have their logging setup correctly, so we re-ran that portion to establish a benchmark. With people jumping in and out it looks like we had a pretty solid average of ~22 players over the entire test. Next, they got back on APB 2.1 and tested Asylum for the same amount of time. Looks like we got ~22 players during this test too. There were a few crashes, so we have some things to fix this week, but overall the stability was way better. Unfortunately something was going on with the server. There was definitely a latency problem. There are a lot more logs to go through this time, and I had other obligations this weekend, so I haven't finished collating everything This process involves matching up CPU/GPUs to stats for both OTW1 and OTW2, and instead of 19 like last week, there are 29. However, here are the stats from the first player in my list. APB 1.20: AMD Ryzen 7 3800X 8-Core Processor + NVIDIA GeForce GTX 1070 - 102FPS with ~22 players Highest 1% FPS = 173FPS Lowest 1% FPS = 65FPS APB 2.1: AMD Ryzen 7 3800X 8-Core Processor + NVIDIA GeForce GTX 1070 - 125FPS with ~22 players Highest 1% FPS = 248FPS Lowest 1% FPS = 63FPS Thanks, Matt
  2. Hi all, Lots of good discussion. There is a strategy in the works, but I want to hold back the details till we get the combat systems in and can see how things are working. Thanks, Matt
  3. Hi all, This was a really good week for CS. Lots of tickets came in over the weekend, which put us even further behind. But everyone pitched in, and we ended up in a good place. As of today we have: 454 new tickets 672 total tickets We are responding to tickets submitted on 5/1, so we're at the 2 week mark. Thanks, Matt
  4. Hi everyone, I missed yesterday's post due to some hard core number crunching that needed to be done for this update. Sorry about that. My schedule has been extremely busy lately. That also means I'm several months behind responding to messages in my forum inbox. I plan on trying to squeeze some time in this week to catch up a little. With that out of the way, today marks the 2 year anniversary of Little Orbit taking over APB Reloaded in 2018. To be honest, I had hoped that the Engine Upgrade would be shipped by now. But once it was clear that many of the issues plaguing us were not going to be easily resolved, I decided to start this thread a little over 7 months ago. Here is a quick recap of where we are at this point. - We found a new way to multithread using an upgrade to an existing library in the game. We had avoided doing this previously, because the library was only supported on Windows. But the upgrade seems to support console now, so we took a shot. Our first test is focused on how we update lights in the game. The new system is far more efficient and has the capacity to manage more cores at higher utilization. This is still pretty experimental, but we're pretty excited about it. If this test holds up, then we'll likely implement this across the other multithreaded areas. - The team spent last week continuing work on UI optimizations to frame rate. As I said last week, there is still a significant difference in time spent rendering the UI between Live and the Beta. - We also found some clean up audio work that was causing an occasional crash. - And we are exploring a persistent crash popping up for the in-game browser. There has been light weight work going on there for the last couple weeks to get it sorted before we ship the Beta. That brought us to Friday and a rather quickly thrown together stress test to see how all the changes performed. This time we kept it private, because we knew were pushing the envelope. The plan was for each player to first spend some time on OTW playing the Live build of Asylum for a base line benchmark. We encouraged many of the players to load up their most complex customizations, and we tried to fill the district as much as possible. Then we did the same thing in our Beta environment. Each player submitted both logs to us, so we could process the results. At the same time, we had our devs in the Beta environment running around and capturing performance profiles to determine the functions that execute the most and require optimizations. In retrospect, I'm glad I kept things private, because the Beta portion of the playtest was a bit of a disaster. It appears that several of the "rare" or "occasional" crashes scaled up under more load and became "constant". I doubt anyone was able to play for more than 3-5 minutes without crashing and having to load back in. However, we did accomplish most of what we wanted. We got some usable comparisons from testers. We also captured many crash logs, and the devs got quite a number of good profiles that revealed some things we knew, some thing we suspected, and some things we didn't. Based on the logs we did get, here are the results. DISCLAIMER #1: This was a lot less scientific than I prefer, so please don't read too much into the results. Due to the consistent crashes, it was really hard to pull apples-to-apples comparisons, but I did my best by grabbing specific segments of time when things were more equal. At a minimum there might be some good data here for players on APB 1.20 looking to figure out how to improve their performance. DISCLAIMER #2: Our logs don't capture whether the machine is overclocked, so there may be performance discrepancies. I'll start with system configurations and their FPS stats for APB 1.20: AMD Ryzen 9 3950X 16-Core Processor + NVIDIA GeForce GTX 1080 Ti - 112 FPS average with unknown players (grapher bug processing log - but probably 3x as many as the 2.1 log) AMD Ryzen 7 3800X 8-Core Processor + NVIDIA GeForce GTX 1070 - 112 FPS average with ~13 players AMD Ryzen 7 2700X 8-Core Processor + NVIDIA GeForce GTX 1060 - 89 FPS average with ~14 players AMD Ryzen 7 1800X 8-Core Processor + NVIDIA GeForce GTX 1080 Ti - 65 FPS average with ~20 players AMD Ryzen 5 3600 6-Core Processor + NVIDIA GeForce RTX 2060 SUPER - 134 FPS average with ~8 players Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz + NVIDIA GeForce RTX 2080 Ti - 184 FPS average with ~11 players Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz + NVIDIA GeForce GTX 1080 Ti - 144 FPS average with ~13 players Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz + NVIDIA GeForce GTX 1080 - 92 FPS average with ~9 players Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (OC to 5.0GHz) + NVIDIA GeForce GTX 1070 - 151 FPS average with ~8 players Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz (OC to 4.60GHz) + NVIDIA GeForce GTX 1080 Ti - 117 FPS with ~13 players Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz + Radeon RX Vega - 117 FPS average with ~22 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (OC to 4.4GHz) + NVIDIA GeForce RTX 2070 - 111 FPS average with ~11 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz + NVIDIA GeForce GTX 1080 Ti - 127 FPS average with ~13 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz + NVIDIA GeForce GTX 970 - 61 FPS average with ~8 players Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz + NVIDIA GeForce RTX 2060 - 96 FPS average with ~13 players Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz + NVIDIA GeForce RTX 2060 - 72 FPS average with ~14 players Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz + NVIDIA GeForce RTX 2070 - 65 FPS average with ~8 players Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz + NVIDIA GeForce GTX 660 Ti - 62 FPS average with ~8 players Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz + NVIDIA GeForce GTX 1060 - 75 FPS average with unknown players (grapher bug processing log - but probably 3x as many as the 2.1 log) Next, here are their FPS stats for APB 2.1: AMD Ryzen 9 3950X 16-Core Processor + NVIDIA GeForce GTX 1080 Ti - 177 FPS average with unknown players (grapher bug processing log - player count likely 1/3 of the 1.20 log) AMD Ryzen 7 3800X 8-Core Processor + NVIDIA GeForce GTX 1070 - 123 FPS average with ~11 players AMD Ryzen 7 2700X 8-Core Processor + NVIDIA GeForce GTX 1060 - 132 FPS average with unknown players (grapher bug processing log - player count likely 1/2 of the 1.20 log) AMD Ryzen 7 1800X 8-Core Processor + NVIDIA GeForce GTX 1080 Ti - 117 FPS average with ~9 players AMD Ryzen 5 3600 6-Core Processor + NVIDIA GeForce RTX 2060 SUPER - 140 FPS average with ~5 players Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz + NVIDIA GeForce RTX 2080 Ti - 197 FPS average with ~11 players Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz + NVIDIA GeForce GTX 1080 - 214 FPS average with ~11 players Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz + NVIDIA GeForce GTX 1080 - 130 FPS average with ~9 players Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (OC to 5.0GHz) + NVIDIA GeForce GTX 1070 - 194 FPS average with unknown players ( player count likely close to the 1.20 log) Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz (OC to 4.60GHz) + NVIDIA GeForce GTX 1080 Ti - 169 FPS average with ~8 players Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz + Radeon RX Vega - 147 FPS average with ~11 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (OC to 4.4GHz) + NVIDIA GeForce RTX 2070 - 154 FPS average with ~7 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz + NVIDIA GeForce GTX 1080 Ti - 134 FPS average with ~13 players Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz + NVIDIA GeForce GTX 970 - 59 FPS average with unknown players (grapher bug processing log - player count likely close to the 1.20 log) Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz + NVIDIA GeForce RTX 2060 - 113 FPS average with unknown players (grapher bug processing log - player count likely 1/2 of the 1.20 log) Intel(R) Core(TM) i7-4820K CPU @ 3.70GHz + NVIDIA GeForce RTX 2060 - 72 FPS average with ~13 players Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz + NVIDIA GeForce RTX 2070 - 164 FPS average with ~6 players (don't read into this.. no idea what was happening or not) Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz + NVIDIA GeForce GTX 660 Ti - 62 FPS average with unknown players (grapher bug processing log - player count likely close to the 1.20 log) Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz + NVIDIA GeForce GTX 1060 - 112 FPS average with unknown players (grapher bug processing log - player count likely 1/3 of the 1.20 log) Whew! That is a relatively small amount of info, but took quite a while to compile. We are planning another play test this week, so I should have a better update on the 16th. Thanks, Matt
  5. Hi all, The team did a great job of plowing through tickets and bringing the numbers down overall compared to last week. We continuing to explore new CS resources. As of today we have: 469 new tickets 672 total tickets We are 2 away from responding to tickets submitted on 4/23, so we're slightly over 2 weeks to respond. Thanks, Matt
  6. Hi everyone, First, I want to acknowledge that I have been absolutely terrible about providing updates on Fallen Earth. Certainly COVID-19 has had an impact on the studio's ability to work on multiple titles at once, but this mostly rests on me. I kept scheduling an update for you guys, and then by the end of a 10-12 work day, I just couldn't seem to find the time. Second, I want to set expectations (again) for where we are and where we aren't. This project is #3 on our priority list right now. As a company we can only do so many concurrent projects with the staff we have. 1) We need to get the APB Engine Upgrade out the door. Internally, we have been forced to keep shifting the date out due to performance issues, but we have reached the "all hands on deck" point. This needs to ship, so we can free up developers to focus on other priorities. 2) After that, we have also committed to a Live stream of Unsung Story for those backers who have waited 5 years to get a glimpse of the game they funded. So the rest of the studio is working overtime to prepare for the June 1st stream. I want to be clear that Fallen Earth isn't loved any less in the studio. Temporary circumstances have forced us to be very specific where we are putting our resources. The team is excited to get back into the Wastelands, so we can get you guys the game you deserve too. We are still very much in the early, exploratory phase of development where we were testing various solutions to each system that needs to be ported. But here is a description of the short term roadmap to get to our first internal milestone: - Recreating the terrain This effort got fairly far along, but there is still work to do. While the basic shape of the terrain is in, there are 2 subsystems that haven't been ported. The first system uses image "stamps" to deform terrain based on where the original designers placed them. These stamps create more interesting geometry and help break up the height mapped look of what we have now. The second system uses nodes that form lines and areas to deform terrain for roads, hills, lakes, and other areas where geometry has been "carved" away by the remnants of humanity to build their structures. - Terrain texture layers This technology has gotten quite a bit better since Fallen Earth was written. The team was starting to identify the strategy for "splatting" or compositing textures on the terrain to create more variation and interest as the player moves through different ecosystems or biomes. - Foliage rendering This is likely one of the biggest areas where I think we can make the world of Fallen Earth feel more realistic. Foilage systems have become so much more powerful and now contain more realistic looking plants and trees. The team was exploring how to adapt the game's foliage data so it could be applied into Unity's systems. This combined with the above terrain enhancements should be impressive in the final product. - Streaming the terrain and objects The original code was very good at rendering chunks of terrain with only the nearest objects to you. In the new code, we've gone with an entirely new way of chunking up the map that will require us to stream in pieces as you run around. We had just started experimenting with a couple techniques, before the devs got pulled onto other projects. NOTE: We have a basic demo for the terrain that I took screenshots from, and this runs extremely slow because all of the terrain and objects across the entire world of FE are rendered. - Fixes to imported assets We also found some bugs in our importer that created inverted normal maps, didn't assign textures properly, or created rigs wrong. We were in the process of fixing these bugs, so we could delete the imported assets and reimport everything from scratch. Then we can re-run the process that builds the various layers to the map, so we can prep streaming. - Character assembly With all the pieces for characters imported, the team had started work on the code that assembles the player with the proper body proportions, head, tattoos, clothes and items. We hit an immediate snag on supporting "selection sets". These are lists of faces on the model that can be shown or hidden by name. The original code used them to hide the areas that are covered up by clothes. - Basic movement prototype This is our first milestone for the project. With all of the above tasks completed, the plan is to (1) assemble a character (2) load into the world and (3) run around the environment with active collisions preventing you from walking through objects. This wont be connected to any servers or running any multiplayer code. It's just a milestone to test everything all together and see how it looks. With all of that in mind, I thought it would be fun to post some WIP screenshots for classic Fallen Earth locations, so you could see how some of this is coming along. The shots below show the assembled terrain, buildings, objects and props for the entire world. You'll notice in the upper right hand corner, that we're sticking with the game's original coordinate system. This allows us to hop around the map to inspect things. There are no terrain textures yet because the layering system hasn't been implemented. Just imagine this is Fallen Earth in winter . Oddly, that effect is enhanced by a good number of the objects that are embedded too low into the ground. This is because we're still missing those two subsystems that I mentioned above that deform the terrain in smaller areas. You'll also see some texturing artifacts on the buildings and objects. Everything looked good as we inspected a couple buildings at a time during the import process. But when we assembled the whole map we found areas that still needed work in the importer. Clinton F.A.R.M. Embry Crossroads Los Alamos Haven Watchtower Odenville And a bit of a fail with Boneclaw… Apparently the ramps for this area are heavily carved out from the terrain, so much of it is buried. I appreciate your patience. Stay safe. Thanks, Matt
  7. 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
  8. Interesting format and questions. I'd be curious to see the results. Thanks, Matt
  9. 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
  10. Hi all, I’m definitely interested in seeing the results once enough people have weighed in. Thanks, Matt
  11. 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
  12. 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
  13. 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
  14. Hi all, Missed the post yesterday here. Instead we uploaded the highlights from our Beta stream on Friday. Here is the thread: Thanks, Matt
  15. I definitely want to do more of these. This is only our 3rd Q&A in almost 2 years. Thanks, Matt
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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.
  21. 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
  22. 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.
  23. The 2 new contacts featuring the EMP will be added when APB 2.1 launches.
  24. 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.
×
×
  • Create New...