Discussion in 'Developer Depot' started by Chris, Apr 5, 2017.
Time to get busy on performance!
So after a few discussions on player concerns, I just agreed to take on publishing a roadmap of plans for the next 2 years. :O
Seriously, I think this is probably long overdue. Lots of players have things they are looking forward to and I think it would be helpful for them to know that it is on our list as well and coming. I think it could also help us identify and prioritize these things AND also get players more passionate about the future of the game. I know there are plenty of features that players only hear us mention briefly during telethons when we're drunk that they would go nuts over. Probably time to start putting some of those ideas out in the open for players to see, give feedback on and get excited about.
Today will be a short day for me. I think after yesterday, I'm done with reddit for a long while. Today my goal is to make sure the team is working on the right stuff in Starr's absence and then focus on a real overhaul of long duration buffs.
The current plan for the buffs is to make most buffs long BUT have some attached penalty to them. As they were, people felt they had to keep them up and they only lasted a few minute which left players constantly casting and recasting the buffs each fight. For R42 I changed most buffs to be long duration BUT without a downside. For R43 I will likely extend all buffs but make them include a negative aspect as well. So for instance, I will probably make buffs last 1 hour plus BUT each buff might have a minus some amount of attunement to the opposite magic school and minus a little focus.
So for Strength of Earth, it might add 12 strength but subtract 6 air attunement and 12 max focus from your pool. It needs to be a choice that the player has to make vs just something that must always be there. The old choice was do you spend the time and effort to recast it over and over, which was a good balance but tedious.
Thoughts? (BTW, writing this from home as the amazing Maxine is sleeping in and making me late)
Today is all load times. This starts with a war on shaders! RAR! While we preload and preparse some, many are not loaded until entering a level. For Ardoris, something like 10 seconds is spent just parsing shaders that are unique to that scene. Today I begin my war on old shaders!
Made some MAJOR headway on load times yesterday. Testing in the client was blocked by a Unity upgrade issue which was blocked by Unity cache server not working as advertised BUT looks like I'll have a build waiting for me this morning to verify improvements. The other major improvement is that hitching should be GREATLY reduced.
Three major improvements and a number of minor ones. First, due to changes in how unity loads scenes, the load time priority was getting set to Low before the map load started. That means we only spent 2ms per frame on actual load work. Second, our shader preload file was woefully out of date. That means that maps like Ardoris spent more than 10 seconds just building shaders variants. Also, it meant that seeing someone in gear that had a different shader variant or some one or thing use an effect with a different shader variant while in combat could cause a long hitch when you first saw them! Third, a huge number of sounds were incorrectly set to not load in the background and then decompress on load. These were all fixed and caused about 2 seconds extra load time all by themselves.
Still a few items left to hit but the big nasty left in the room is figuring out ways to improve the NPC creation and their AI state tables. Other less challenging things that will each take a second or more off load times include not rebuilding the UI from scratch each map load and also preloading animations for NPCs.
Today will be a short day for me as I have to go to jury duty around lunch time but I'll try and get some numbers posted ASAP. Improvements should be visible in all maps.
So my guess is no programmers will have to shave their head this release and we'll easily smash through the 2X load time improvement. Next on my list of stuff to tackle is working on CPU load some more. I have tasks on Wizardsmoke and Undone to deal with some frequent memory allocations items. Making some fast progress!
Also, I started on the promised RoadMap for the next 2 years document but Starr is going to be out another week and I won't publish it until he has time to look it over.
That is what today has been about.... I'll be doing a tech talk on Tuesday with @Violation Clauth and showing off the progress we've made. Frame rate work and hitching work are making huge leaps and bounds. Load times are better but still some elusive elements.
So, how much performance? I'm able to run around Ardoris and never have the frame rate dip below 40 FPS while running on "Good" and hitting 60fps in a number of spots. BAM. Some of that work work was system based and some Ardoris based. Central Brittany is close to 30fps but needs some love before it will be solid 30fps for me and lots more work to get it to a target system 30fps.
Memory memory memory
Yesterday I spent the entire day crawling over memory allocs, fixing some on the spot and making tasks for others. Also did some more big prefab work and simple code optimization on my quest to get Ardoris to run 60fps on my box!
For those not clear, on the fly memory allocs are bad. c# uses a garbage collector to free allocs. The problem is when you have TONs of tiny allocs you can get some nasty hitches when the garbage collection runs. Also, having tons of allocs means it is harder to spot leaks!
My goal was to have 100% of memory allocs identified and 95% of them fixed by the weekend.
Performance performance performance......
Today I'm working on issues in other low performing towns, starting with Aerie. About to spend some time investigating water solutions. or disabling camera reflections in the new system. Lots of SSR options out there are essentially free
After investigating multiple 3rd party water options, they all have way too many issues. Instead, I worked on solutions with our existing system. For R43 it will run on the GPU and also, only Beautiful and Fantastic settings will have water reflections.
Worked from home a bit yesterday but mostly was dealing with house issue. Could be out again on Friday. Today, continuing work on performance. Currently working on a crazy experiment to dramatically improve load times on Novia and Hidden Vale. If it works out, it should also have the added bonus of improving load times of all maps FROM those scenes as well by a few seconds. RAR.... Here's to crazy experiments!
Doing a "Tech Talk Tuesday" later today with Violation. I plan on talking about all the optimization work we're doing as well as cover lots of topics on performance and why drawing a few dozen shrubs can sometimes take longer than drawing a castle!
Booh... only got to hit a fraction of my tech talk stuff. Apparently an hour isn't enough time to explain how to do our job.
Also, for those that missed the tech talk, I announced an exciting change for R43 that I hadn't mentioned before. The return of the daily xp bonus. Current plan is that you'll get a daily login bonus of 10,000 xps added to your adventurer and producer pools. That isn't 10,000 adventurer experience but rather, just xps added to your pool to counter decay losses and also to help lowbies level up skills.
Missed a couple days of blog updates due to just being head down in work stuff. Lots of performance work. Some is paying off, other stuff, meh... Load times continue to improve but mostly just after the first scene or two. Still can't seem to come up with a way to reproduce the difference between shader variants in the built client and outside of the built client. This means we're still getting some big hitching but mostly just on scene load and just once per variant we've missed.
Today I'm taking off my performance hat to work on features and balance for R43. First up is balancing the various long duration buffs!
POOF... and today was devoured by AMA plus tech talk Tuesday!
For dev plus people, QA should be going live. Burningtoad tested it earlier vs current live. His frame rate in Ardoris in all the places he tried was double what it was on the current version of live. Still not to our target goals but we're going to call this the first, significant step toward making the frame rate not suck. I think we still have some more work to do but on my high end CPU(i7-6700k) and low to mid-range GPU (AMD 460, $89 on Amazon), I'm now seeing 30+ fps in all parts of Ardoris and from any angle and many spots are 60fps.
For those screaming, "FOR THE LOVE OF GOD, OPEN UP QA TO EVERYONE!" I think that is still under consideration but not for this release mostly due to Starr being out for the last 5 weeks and turning everything upside down.
BTW, tech talk can be watched here: https://www.twitch.tv/videos/153192680
Time for some "get **** done" days! Yesterday I got a little work done from home but I was home dealing with a few house issues including our AC going out which is not acceptable in Texas!
Increased camera zoom out range for outdoor scenes (not over world) by 50%. I'll be testing this today to make sure it doesn't cause any crazy town behavior.
Added a "Capped" attunement value to limit just how much attunement helps some things. For instance, the attunement bonus for celestial blessing for how much bonus it gives you is capped but the duration will use the regular attunement. Current cap for these things is set at a 2X bonus. Only planning on using this for a hand full of beneficial/buff type spells.
After much teeth nashing and discussion, for R43 we're going to be adding reagents as the "cost" to force a choice for longer duration buffs. Also adding these skills to the "Unlearn for free" list.
Added Strength of Earth, Enlightement, Celestial Blessing, Air's Embrace, and Douse. to the unlearn for free list.
Fixed a but with "tab targeting" where it would always pick the best target the first time you used it even if that target was your current target. So if you hadn't hit tab lately, then hit it and the current target was the best target, it would appear to do nothing until the second press.
Started to dig into why creatures constantly want to get in your personal space, AKA combat spacing. Turns out there was a bug and they were picking bad distances.... always. :/ Fixing this and adjusting some of the worst case situations.
Friday and Monday were filled with bug fixing and some minor performance tweaks. I gave Skrekk a serious performance pass and also fixed a few things in Aerie.
Today, is going to be spent looking at repairing some of the damage done to the economy by the removal of a handful of items that were the primary gold crop. This likely won't make the first release but will be in the first patch.
Fixing bugs! Fixing performance! Gold candidate in the bag as of last night. Today working to improve it a bit more
Brittany Estates residents should see a performance bump now. Lots of issues remaining there but I think I made a good dent in the insanity
Last week was all bug fixing and performance work and not a ton interesting to log about.
There are a couple of LARGE outstanding performance issues I'm going to try to deal with today but likely won't make it to a player build until Wednesday morning.
First, our effect field code is scary bad in terms of performance. I discovered this by attending the dance party where 3 people were playing instruments in a crowd. This also applies to lots of other stuff as well though so I'll get this cleaned up asap.
Second, somewhere along the lines the LODs for the houses were changed. The exterior LOD for houses is now super clean and efficient but in the process of setting that stuff up, all other elements were removed from LODs or culling layers. Sadly, this is about 80% of the performance cost for houses. I'll be getting those cleaned up today and checked in. This is a huge amount of work. :O
Busy week coming up with the holiday, the telethon, and then Rooster Teeth Expo! Also, I will be taking my first vacation in 3 years next week to go camping in Colorado which will eat up some of my time this week to get packed and ready for it.
Working on fixing a few more bugs for ONE...MORE.... PATCH!
Working on fixing a few more bugs for ONE...MORE.... PATCH!
Preparing for RTX tomorrow by getting a few machines prepped.
Oh, also doing a half marathon later... correction, that is a half TELETHON!
Did you miss me? Just got back from my first vacation in 3 years. We did a hiking trip to Colorado and camped for 7 days and hiked a few mountains including Quandary Peak, a 14'er. Here is the shot from the top with BurningToad, who joined me.
Today is going to be catching up on 1000+ emails, leads meeting, AND working on a few new heal spell options. If I wrap all that up then I will work on effects for the dread artifacts.
Updated to the latest Unity version as it appears they might have fixed the threaded renderer crashes we reported months ago. If so, should be another performance bump for all with 3+ core CPUs
Updated some shaders we use to make use of more efficient transform functions
Changing dodge to only work vs targets in your front half. This is one we've been considering for a while. Trying it our for R44 to see how much rage ensues. Feeling like it is really needed for melee types to stay competitive in PVP.
Healing Blast, tier 5, roughly 4x healing ray, 2x casting time and focus, only usable on others. So usable in party situations for dedicated healers and also usable on companions and pets for single player.
Fixing a few overdue design items today.
First one, attunement for magic schools will only use the ten highest skills in that school. This not only makes sense but will also address the rage that I encounter every time I add a new spell to a tree.
Currently working on dread artifacts. Their effects are extremely powerful and hard to recharge so I'm thinking I would not make them just add a new skill. Instead, I believe I will be making them so you have to click on the equipped item on your paper doll to trigger it. Still thinking on this...
Separate names with a comma.