In general took about an hour to release this morning, but I was doing other things while waiting for various compilations and builds and uploads to do their own thing. Once I stop having to rebuild the executables every release (which should happen before too long), this time might be cut in half, if not more.

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

The new content in this one is mostly incidental, to be honest. The big focus for us has been performance, performance, performance, and that's something that is still heavily inwork. It's coming along, though! I'm getting a somewhat choppy 25-50fps during heavy combat where I was in 0.201 getting a hugely-halting start-and-stop 20fps at most, and where in 0.200 I was getting even more halting 5fps.

What has been surprising is the various techniques that have NOT worked. Matrix math is something that I figured I could shortcut in a variety of ways, but that didn't work out so hot. The Graphics.DrawMeshInstanced route actually had a variety of issues, and then Graphics.DrawMesh doesn't avoid the culling problem after all -- frustum culling just won't die unless it takes efficient z sorting and transparency sorting down with it.

There are still a variety of other changes that I'm working on, though, to reduce CPU bottlenecks that presently exist. It's all about moving gameobjects around and the expense of the matrix math that entails.

That in turn leads to a variety of required changes relating to the hierarchy of objects in the tree, throttling and pooling of updates on more distant objects, and so on. Thus far my focus is almost solely on shots, because they are relatively simple compared to squads and ships and gimbals, but I'm going to be after those other things next with my findings from shots. Shots are no longer the largest slowdown on the CPU except when there are north of 5000 of them at once, so that's a big win. I need to get that even lower, though, and then I'll be happy enough to start in on the squads. That way I'll be confident in the results there without having to then take yet another pass on all this stuff too soon from now.

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Yep, I've got part of it sorted out already by quasi-inventing a new data structure. It's something I'm sure other people have done before, but it's new for these sorts of purposes at least so far as I know.

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Yeah, these are just two small pieces of data out of huge streams of ongoing data I watched going by. I had graphs I could watch, and spot check, etc. I picked out a few points of interest to show, but even they are not fully representative because there are small variances in every frame that have nothing to do with the list and instead with the operations that may or may not happen at iterations of the list. Hence some of the variance where I say something is "30 nanoseconds more" but actually it's more like 60 nanoseconds in the example given.

With that sort of thing, I'm kinda eyeballing it based on the averages of what is being sampled over a few million frames. I didn't bother actually keeping a real average, because based off of visual graphs I can already see what's going on well enough for any practical purpose. Getting super-precise average numbers would just be kind of a waste of time to show off, more than anything else.

Logged

Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Yeah, that makes sense. The performance numbers from the SwizzleList don't really matter in and of themselves. I'm glad you're making some progress!

I'm a bit curious what Keith is up to. I see he did a bunch of performance work, but since then I can only imagine he's been back in his mad scientist lab, cackling maniacally in a cloud of green smoke lit by lightning flashes, bringing the AI to life....

Oh good. I also spent a few minutes poking at the "zoom-to-cursor" code yesterday. Getting it to work "just the way I'd like" is challenging! Is there an obvious reason I'm missing for why the scrolling only adjusts on the X and Z axes?