Mailing list! Backer Club! Performance! AI! Oh my...
Lions and tigers and...?
Chris here! It's been a long weekend without any update posts, and I apologize for that. I have a ton of things I want to update you on regarding the game and the campaign itself, but things just move a mile a minute and I seem never to have quite enough time. The campaign page itself has seen a ton of updates visually and so on, I don't know if you've noticed. Jack has an update incoming soon as well, so that will have some good meat for you.
First up, here were two very interesting questions you may have missed in the comments section:
Q: Can you write an update about the AI "intelligence" in first part, what do you plan for it in AW2 and what would you like to achieve with it in future even if you don't know how to do it nowadays.
Writing about the general AI improvements and so forth is definitely something that I want to do (adding to my existing series of articles that go way back), although it might be better for Keith to do it. A lot of it has been reactionary to the 10/10 players or a few others in terms of what changed since my last articles compared to now. I actually talked about that some in the Three Moves Ahead podcast last week.
In terms of what is changing in AIW2 versus Classic -- aside from things related to performance of the AI on your CPU -- a lot of that was already discussed in the design document (here) relating to things like the AI capturing planets and some other new capabilities.
To be honest, the AI was the least of the things that needed to be improved for the sequel, which is kind of ironic. Not that that means we aren't doing that, but it wasn't a case of us going "oh man this AI is a mess, there's so many ways we need to improve it," but instead "well... how can we actually improve on it?" And a lot of that came down to game design choices with things like more variance throughout the solar system (AI Personalities!) and the ability to go back and forth on planet ownership, etc.
Whereas with something like the GUI it's like "man where do we even begin, this needs to be burnt down for the most part." ;)
Q: How will our PCs cope with the 10,000 ships on one screen?
Generally speaking your computer will not cope with 10,000 ships on screen most of the time. Most of the time some of those would be icons thanks to being too far away from the screen. Others would draw, but probably not 10,000.
Then again: in all those various screenshots, there are 20,000 asteroids orbiting the planet. About 64k vertices in those, animated, at easily 600fps or more without anything else going on with my GTX 980M.
Most ships that we have are a little more complex in terms of shaders, but using LODs we could make them much simpler at further distances, or even go to billboard (in which case they are sprites). In general mipmaps for textures kick in for things like normal map textures at distance, which helps in any case. And the overall calculations to show how much of the screen actually gets any ships is pretty darn small when things are very different.
The trail renderers are by far more expensive, and throttling those when there are too many is a bigger priority. Anything else that uses transparency (not cutout) is also something that should either switch to cutout after a certain distance from the camera (again that's just LODs), or should stop rendering entirely after another certain distance. Those things can be easily calculated as well as scaled by machine time. That refers to things like the direct exhaust (not contrails) or possibly shots. In some cases I'm able to get around that for shots, though, by using solids that then have an emissive map that plays into the post-processing glow, so those calculations are in screen-space (and thus very cheap) rather than game space.
Overall things like that can make a huge difference in performance and look virtually identical (there is a difference in look, but it's not a "that looks worse" look; it's just slightly different). Anyhow, each ship is made up of some number of parts. For the smaller ships, most of them are made up of 3 parts at the moment. The bigger ones are made up of many more parts. The light capital ships shown are made up of around... I would say 14 parts? I don't remember exactly. Anyway, so 10,000 fighters would be 30,000 objects, and 2 draw calls because it's two textures. However the max vertex count per batch is 64k, so in reality those 10k fighters use about 250 verts per object, so that's 250*10000*3 = 7.5 million verts, so divide that by 64k you get roughly 118 draw calls, although that's going to differ some depending on exactly how many verts are used by each material. Could range from 105 on the low end to maybe 140 on the high end.
By contrast, in a huge battle in AI War Classic, we're in many cases rendering 4000 draw calls. SLOOOOOW. Way more textures used, way more pipeline swaps, although definitely fewer draw calls. It's all triangle strips for the most part, so 4000 draw calls is probably along the lines of only 12k verts in total. But the killer there is the textures and the overdraw, and the inability to do things like LODs or use meaningful mipmaps thanks to the need to be pixel perfect, etc.
Graphics cards really stink at 2D, at least in the sort of scale we're talking about there. I used to think that 2D was such an advantage for AI War Classic... and in some cases that was true, certainly for the time. Dynamic batching wasn't good enough in unity back then for this to work, and it was all bound on the main thread, so it would have been a disaster trying to do it in 3D like this. The lower-end GPUs out in the wild in 2009 were often from the 2005 era, and so their capabilities were utter rubbish in a huge variety of cases, with support for even things like Shader Model 2.0 being iffy in some cases.
GPUs are massively parallel, which is why they're so good for doing things like processing the SETI data, for instance. Or other various CUDA tasks. But for parallel operations like that to work, they have to be both independent and low-data. Geometry, particularly the opaque variety, has that in spades. And then post-processing effects like the glow effects have a linear cost to them based on your screen resolution, mostly independent of whatever is actually on your screen.
So, I guess TLDR: magic? Or maybe a better example is "using a nailgun to put in a lot of nails really fast, instead of using a nailgun as like... an icepick or something." There's more about this on the design document (because of course there is).
Hey, we now have an official way for you to sign up for our mailing list. The original AI War has over 300 thousand players on Steam, but it turns out we are only able to get in touch with about 9 thousand of you directly, best case. If I could go back in time seven years, I would have put more emphasis on a mailing list back then.
Cliff Harris was actually after me to do that as far back as 2011, but I thought it was... an outdated concept or something. "What is this, a guestbook and hit counter?" So now that's something I regret for sure, but we have gotten together about 9.2k email addresses that we did have from our forums and so on and have let those people know today. So that's the big spike in pledges that you see -- and thank you hugely to all those people!
This is among the various other marketing-y things we've been doing, and I'm excited about the prospects of this. BACKERCLUB.CO has chosen this project to feature on their site! Here is the information on them:
BackerClub is an exclusive club for people who love Kickstarter and back a ton of projects. BackerClub is featuring our campaign in the Club this week. We're excited about what they are doing and hope you like it too!
I'll have more for you tomorrow!