AI War 2 v0.401 Released: “Ship Batch 6 of 7, And Gimbal Perfoooormance!”

New version!  Release notes are… here on the forums?  More on that a bit later.

First up, there’s a new video where I do a bit of show and tell relating mostly to performance and some of the visual things:

Regarding the sprite compound-batching thing, I wrote about that in the last release post, and now you can see it here actually in action.

Moar Ships!

There are 14 new ship types in this version, including the first of the golems.  There’s only one more batch before we have the original “target ship list for Early Access” done.  That isn’t all of the ships for 1.0, just to warn you — the spire ships, the interplanetary cannons, and the Nemesis stuff is all for during the early access period, not prior to it.

There may be a few other odds and ends for after EA starts, I’m not sure.  But basically the list of ships for implementation during-EA are ones that came from stretch goals on the kickstarter, plus a few that will require particular refinement for whatever reason.

What’s Up With The Wiki??

Well… okay, so we’ve had a bit of a saga going on since late last week.  Basically we had some admin human error on our end — it happens to the best of us — and we managed to corrupt our forum database.  That should have been no problem, because we have 10 days of rolling backups with hostwinds, our web host.  We’ve been using them for a few years, and have been happier with them than we had been with rackspace, hostgator, A2, and whoever else we hosted with in that time.  Gets hard to keep track over 8 years, sheesh.

Anyway, the short version of the story is that Quinn has been on the phone and on chat and email with them constantly, and they’ve had a really hard time actually restoring things properly.  It’s been quite unpleasant, and a real surprise after our previous excellent support interations with them.  We’ve had to do restores before with other web hosts, and possibly even with hostwinds, but this time things just haven’t been great.  It’s been a comedy of errors and other issues all around.


Anyway, the wiki is down as a casualty of that, at the moment.  So far as I know there was no data loss with the wiki, but I certainly wouldn’t swear to it.

Hey… The Forums??

Yeah, as part of the forums backup restore, we lost about seven days of data from there.  We definitely did not lose any data from mantis or the wordpress sites.  And obviously anything on Steam or kickstarter or backerkit is all unaffected.

Our code and game hosting stuff is on Amazon,, and elsewhere.  Our code, for instance, is backed up by our hosting provider for that (, as well as being on at least 3 computers and also backed up by another service on at least my machine.

TLDR: We’re super-duper-extra careful with the data that really truly matters — anything to do with customer data, code, tools, or whatnot.  We thought we were being careful with the website stuff as well, but we were relying on a single point of potential failure (one service and their own backups) rather than having a second tier of backups or a secondary service for the backups.

That was… clearly a mistake, we now see.  In the past we’ve used a secondary service to back up our website, but now we’re clearly going to need to be in the market for a service like that again.  If anyone knows of one they trust, please drop us a line. :/

Anyway: The Game

We’ll get the wiki updated with the new stuff when the database issues get sorted out there, but the good news is that since Quinn has been handling all of this (hugely frustrating) stuff, Keith and I have not been interrupted in our coding at all.  I like keeping our productivity tools spread around a bit partly because there’s then not one single point of failure, to be honest.  It’s come in handy at least once in most years we’ve been in business. 😉

More stuff soon.



Notes For Keith – “Ship Buttons” in AI War 2

Working notes, and a bit of a tutorial of sorts (as well as a request for help) for Keith. Also includes essentially some working notes for Blue, our artist. And there’s some technical tidbits that an avid modder could pick up here, if they’re so inclined.

AI War 2 v0.400 Released: “Usability and the GUI Pipeline”

New version!  Release notes are here.

There are also two new videos, one of which was for Keith, and the other of which is for Blue.  You might also find them interesting if you like the dev diary videos that we’ve been doing.

7 Days Between Releases Again?

Yeah, that bit isn’t my favorite.  But holy smokes this is a big one.  Hence the version upgrade to 0.400 instead of the 0.302 it was originally going to be called.  It warrants it!


So first off, this still has a long way to go, but there are some notable strides made in this area already.  There’s still a lot to do, but a lot of the things done in this version were aimed at making such updates easier in the future.

GUI Process Overhaul

This is one of those things that was designed to make things easier later, AND it also really improved our visual fidelity immediately and solved all our current GUI-related performance woes.  So… this was a big deal.

That said, embarking on this wasn’t really intended… yet, anyway.  As I noted to Keith in an email:

I was trying to fix that stupid sidebar, then realized several things couldn’t work the way I needed them to without some changes, then realized I could get a ton more efficiency out of better prefabs, then saw a bunch of other low hanging fruit, and suddenly I was waist deep in guts and there were tarps on the windows and I was trying to get rid of DNA evidence of what just happened. 😉

Wow that metaphor went off the rails fast. Accurate, though, to an extent.

The sidebar is indeed working again, by the way.  It is in need of severe TLC on the visual attractiveness and readability front, but that part is pretty straightforward now in terms of not letting the tech get in the way of the designers.

Amusingly, within the same minute that I sent the above note to Keith in a larger email, he was sending me a note back that included his own humorous analogy:

So I think that’s everything from my end on the UI circulatory-system-transplant. (“What kind of operation did you need?” … “A transplant.” … “A transplant of what?” … “Yes.”)

Again, quite accurate. 😉

Performance Of Those Darn Icons Over Squads

That’s a bugbear I’ve been chasing for the last week, and every approach I’ve tried has resulted in failure (although I have been able to shave the overall load from it down by about 20%, I’m aiming for a lot more than that and feel it’s reasonable).

GPU Instancing is something that is awesome and amazing for the ships that we have, but when you start getting to just tons and tons of icons (each individual icon is actually I think 8 icons on top of one another), then there come problems.  I had my own custom batching solution that I developed for either Starward Rogue or Stars Beyond Reach, can’t recall which, but those don’t work with complex MaterialPropertyBlocks, which I need for this batching.

Ironically, inefficient matrix math is the biggest thing holding back my specific use case.  I wrote a lengthy bug report to unity, with example code on how to fix it (I got a 120% or so performance boost with a trivial change on my end), so hopefully we see improvements there in a near-term version.

Longer-term, they’re expanding upon their ideas of CommandBuffers and open-sourcing the C# parts of their GPU pipeline, which will be wonderful for me on a number of fronts.  That said, that will be “sometime in 2017,” which to me means it could be after this year, frankly.

So I started thinking more and more about this, and was ruminating on a recent frustration of mine of not really being able to do much with vertex ids, since those are a bit on the limited side in terms of hardware support, and they just don’t quite do what I want, but ALMOST do.

As I was googling around the problem looking for some ideas on telling shaders about different surfaces, I came across an idea to just use the uv2 channel for sending custom per-vertex data.  Duh!  I felt a bit silly not having thought of that, because I’ve used various other tools that do exactly that sort of thing.  Anyway, using that general idea I can combine the 8 parts of a sprite for a squad into a single instanceable mesh, and then extend my existing shaders to handle that with a minimum of extra instanced variables.  I’m quite excited about that, because I know for a fact that works, and I’ve done that sort of general logic before.

There’s a slight chance that I might run into trouble with shader instruction counts, but I don’t think I will.  Thank goodness for the more recent shader models and their wide support on all platforms.

Enough Rambling

Anyhow, there’s a variety of other things in this new version, too.  Tractor beams are no longer so darn strong, and there’s some new ship graphics in a few areas, etc.  Performance in general is up yet again in a ton of areas, and there are some bugfixes.

Hopefully the next version comes sooner than 7 days from now!



AI War 2 Early Access: Good News and Bad News

Please see our latest update on Kickstarter for all the details.

What’s The TLDR?

1. We’re going to delay the actual Early Access launch on Steam until something like late June or early July. Previously it was intended to be May 29th.

2. BUT, for all the “Early Access” level backers from Kickstarter and BackerKit, we’re going to give you your keys on May 29th anyway, as promised.

Seriously, there’s a lot of details there, and if you have any questions please let us know.  Thank you so much for your continued support as we take this game to bigger and better places than we had anticipated.  Speaking of, we just dropped a massive new release an hour or so ago. 🙂

AI War 2 Alpha v0.200 “Decisive Battle” released!

This release has… just absolute tons of stuff in it.  First of all, it has the 5th batch (out of 7) of pre-Early-Access ships.  Lots of goodies in there.

Secondly, it has an enormous overhaul of the visuals, which you can see in video format in this post from last week.  This does indeed affect the minimum system requirements for the game, which you can read about in both of those links.


The gains we get from those changes are absolutely staggering, though.  On my GTX 1070 and latest-gen i7, there was one particular savegame (with 5000 ships in it) in which I was getting about 30fps even when paused.  And it was a ragged 30fps.  Now I get more like 90 to 100fps when paused in that same scene, thanks to all the improvements made here.

When it comes to actually unpausing and having ships move around, there is a dip in performance again back into the 60s fps on that hardware, but that’s largely to some half-measures that are in place right now optimization-wise.  Some of that has to do with frustum culling and other optimizable things on my end, and others of it has to do with some optimizable and/or better-multithreadable stuff in the simulation on Keith’s end.

Performance: Todo

On this particular savegame I am referring to, it’s possible to send those 5000 ships through the wormhole to its neighbor.  Once you do that, the performance absolutely tanks on my machine, even with all the improvements that have been made thus far.  I get a ragged 5 to 25 fps.

Some of that is related to things I still need to optimize better in the graphics code (the frustum culling itself is 30-40% of the CPU-side graphics load right now, which is ludicrous and something I intend to work around).

Other bits of that are simply bits of the simulation code that need some looking-into by Keith. I don’t dare really speculate on that, since it’s not my part of the code, but it’s the sort of thing that he notes will take a few hours of investigation at least, so we didn’t want to delay this release over that.

Smaller-scale battles are running better than ever, after all.

But there’s always more to be done, and I’m hoping that we can get those battles of that scale up to a buttery-smooth 60fps or higher.  Seems doable, but we’ll see — in AI War Classic, those were hard-locked to 20fps most of the time, and would run extra slowly under the load, too.  So we’re already pulling ahead, and we haven’t done remotely a full optimization pass on the simulation code.

I’ve had time to do that sort of thing on the graphics code because it’s a lot more limited in scope, despite being super intricate; so I’ve been able to focus on iterations over and over again, while Keith has been splitting his time between improvements and additions, since the simulation is so much larger.

Oh: also, right now the battles are throwing out metric tons of particle effects, which will largely be going away.  I have fancier things I can do without all that wasted CPU/GPU time. 🙂  People talking about “ships breaking apart” being a neat thing got some ideas into my head.  Giant things will still do explosions, but we’ll make those look more epic, too.  And since they will be comparably more rare, they’ll stand out better as well as not adversely impacting performance.

Anyhow, that’s another big big area that will really improve things during battles, performance-wise.  Just haven’t had time for that bit yet, on my end.

Other Stuff!

There’s a lot of other goodness in this release, too.  Things like more ship models, way more ship icons and flair, and so on.

The sidebar is temporarily semi-busted because I just frankly ran out of time and will get to that tomorrow.  It works, but it’s not colored properly and doesn’t have the proper flairs on the ship icons.  And its icons likely still don’t show up on linux right, although they will once I’m done with that bit.

Coming Soon: Sound!

Craig (Pepisolo) has been taking on the process of getting the sound effects going for battles, and I’m going to start actually integrating that soon.  I’m really excited to finally start hearing these battles, rather than just seeing them.

Going along with that, at the suggestion of a number of players I’ve started working with a variety of voice actors to do human-side voice responses to commands that you issue.  More on that soon, but I’ve got the first four sets back and I’m really pleased.  I’ll be integrating those soon as well, and then tuning them with your feedback.

Onwards and Upwards!

Thanks for reading. 🙂