So after the second Test Weekend, player numbers were up, per-player playtime was significantly up, and bug reports were down - so I'm pretty pleased about all of those trends.
A bug a couple of people ran into that I found quite surprising at first (because I couldn't imagine how it occurred) was the renderer running out of textures. The renderer has 1000 available, there are only about 250 textures in the game for models plus two for each terrain block and one for each unit. A busy player might hit 500 but I couldn't see how they could possibly hit 1000. I came upon the answer by accident when I clicked on a unit to move a very long way and I noticed the number of textures available plummeting as the CPU fan roared. I realized that the pathfinding was loading in terrain to do pathfinding, but when it did that, the terrain was also being set up for rendering. Hundreds of terrain blocks were loaded, set up for rendering and then immediately discarded. This caused a huge CPU load. Setting up the terrain for rendering is quite complicated, so I was a bit hesitant to make any changes there, luckily I was inspired to modify the terrain loader so it knows if terrain needs to be set up for rendering or not. To my great surprise that worked first time! The CPU load for pathfinding went way down, texture use was reduced to zero while pathfinding, and I spent the rest of the day goofing off playing Fallout 4. To make it even less likely players will run out of textures in the future, I also reduced the per-unit texture to just one texture per thousand units.
A number of players reported problems with the harvester wandering around resource fields without actually harvesting anything. Players should find a lot less of this the next time they play (although the final solution will involve some big rework to Miranda's collision detection which I decided to leave for another day.) I also fixed the annoying bug that the harvester repeated "Harvester standing down" over and over if there was no refinery.
All those many players who ran into crashes attempting to change the display mode by hitting Alt-Enter can rest assured that is now totally fixed. Ok, actually I gave up on that particular feature. Graphics changes now only take effect on game restart. The problem with that feature was that it was super-fragile. Every time I would change something I would break the code that unloads and reloads all the rendering data. There was no good way to make it not-fragile, and constantly re-testing it is error-prone, so removing it seemed like the best choice. While I was working on the settings screen I also fixed the volume controls and made it save the settings to disk as soon as you leave the settings screen so there should be no more lost settings changes.
If you had problems with the Loot screen on the weekend, you should find it much improved. Its big problem was that if you tried to pick an individual loot item, the game would crash. Looking over the UI code, I'm pretty sure I never actually tried using those buttons - I always just Take All and I'm done. While I was in there I also fixed the tooltips which annoyingly overlapped the buttons and added some spiffy audio to the screen.
Late one afternoon I was lucky enough to reproduce a bug that had been reported in a crash dump which had really left me scratching my head. The game would crash trying to remove a unit from the collision system because it wasn't in there. The unit should have been added previously, but that apparently wasn't happening for some mysterious reason. I modified the game to record the comings and goings of units more thoroughly then spent the rest of the afternoon trying to reproduce the bug again. I couldn't. That evening I sat in front of the TV watching Mr Robot and logging in and out for over two hours until it finally occurred again. I had my smoking gun! I was able to confirm that the unit was never added to the collision system when it was loaded, even though it should have been. Unit loading on the server is done on a separate thread, and multithreading is hard, so that was immediately suspect. Looking over the code I realized that the code that puts units into the collision system wasn't thread-safe and it could see partially-loaded units and think they didn't need to be in the collision system. Some slight reordering of the loading code and I was able to add an I'm finished loading flag to each unit. Easy peasy (once you can reproduce the problem.) This also explained one players report of large numbers of mysteriously disappearing tanks.
I want to thank everyone for submitting the survey feedback. The biggest concerns reported were about vendors, and difficulties with laying out the player's base. Thanks to that feedback I was able to come up with ideas for some really great improvements for both features that I'm really excited about.
Next week I'll be putting bugs aside for a while and getting back to making the game playable with multiple servers. That should make for some nice new bugs for everyone to find next playtest weekend.
We were unable to retrieve our session cookie from your web browser. If pressing F5 once to reload this page does not get rid of this message, please read this to learn more.
You will not be able to post until you resolve this problem.