project-image

AI War II

Created by Chris Park/Arcen Games

Finally a sequel to the award-winning, genre breaking, asymmetric strategy cult classic. The most sentient AI in gaming.

Latest Updates from Our Project:

v2.604 Released! "A Thousand Screaming Idiots"
over 3 years ago – Sun, Oct 04, 2020 at 03:22:24 PM

It's been six days since the last major release writeup, with four releases in all, and notes starting here and ending here.

We are in multiplayer alpha!  If you want the full info on multiplayer's current status, the place to look at that from now on is here.  We've had the first victory over the AI in multiplayer happen, and we're knocking down MP bugs steadily.

AI Improvements And Additions

Okay, this is a really big release, actually.  Far more than we had intended to do, but so it goes.

First off, the star of the show is definitely the new "Tsunami CPA" option in the galaxy options screen.  You can turn it on for existing savegames or new campaigns, but temporarily it is off by default.  It turns Cross Planet Attacks into the sort of... scary tidal wave of doom or glory that the pre-3.0 days of AI War Classic used to enjoy.

We'll always keep the option to have boring-style CPAs in this game, where basically the CPA just releases a bunch of threat that join the Hunter fleet.  That's... fine.  But as a number of people have noticed, that's a very anticlimatic result after a scary countdown timer.

The hunter is its own thing, and is intelligent and scary in its own way, but it's also cautious and coordinated.  That's the very opposite of what a Cross Planet Attack used to represent, 8 years or so ago, in the first AI War.  A Cross Planet Attack is meant to be a flood of ships from all over the galaxy, only lightly coordinated at best, that wash up on the shores of your defenses and either dissipate or carry the wreckage inland.

So that's what happens now, if you turn on the Tsunami CPA option.  It's basically a thousand screaming idiots running at you from every direction, only sort of avoiding danger.  And they go for the throat, too, if they can get past your external defenses.  It's thrilling and quite unlike anything the AI War multiverse has seen since maybe 2012.  How I've missed this.

However, here's the thing that makes this extra cool and also quite new-feeling: the hunter may be cautious, but it also is quick to capitalize on openings.  And it operates alongside the Tsunami CPAs.  So while those are washing up on your defenses, and you think you're going to be okay... sometimes the hunter shows up at just the wrong time and tips the balance.  It turns out that a meticulous and ruthless planner, given a thousand screaming idiots for cover, is even more effective.

Moving on from the keystone feature:

In a whole bunch of other areas for the AI, there are things that look on the surface like nerfs to the ship budgets for the AI, but actually are not quite what they seem.

The changes are complicated enough that it's really easy to misunderstand the implications of them even if you read really carefully.

But to summarize the most important one, essentially the AI is... less reactive in how it applies its budgets when it feels like its king is under pressure.  It now trusts that it has been building a good and solid defense for a long time, and keeps pressing its own attacks on you.

Previously you could run into REALLY protracted final battles with the AI homeworlds, where the AI was being super defensive and making it really hard for you to win... but also really hard for you to lose.  Now the AI final fights won't be quite so hard to win... but at the same time there is a dramatically higher chance of you outright losing during them.

Aside from this, there are what amount to some legitimate nerfs to the AI in the warden and praetorian guard sub-factions, if those are at their full cap for whatever reason.  Rather than donating excess income to general defenses (which made some AI types turn out to have generalized defenses that were way inflated in an inappropriate way), they just lose that budget.  This is more in keeping with the first AI War as well, and should not affect most games.  A few specific AI types may wind up needing a buff, but let us know how those feel (Special Forces Master and Praetor, mainly).

Oh, also speaking of the AI's intelligence, the highest-level AIs (difficulty 8 and up) will now underestimate their strength a bit when deciding to engage you.  This will make them tend to engage you with overwhelming force more often, again like the first game.

And in general, turrets were being undervalued in terms of strength, which was hurting the decision-making of all factions.  So the strength values of those have been tweaked upwards (how the strength is reported, not what the damage of the actual turrets is), and that should lead to all factions making more sensible decisions on heavily turreted player planets.

Oh, and it's harder to bait the hunter into your meat grinders on difficulty 8 and up.  You're welcome. ;)

What's Else Is New?

  • There's a bunch of new little lore bits that now appear in the game when you are getting started!  This includes backstory on the Spire and Zenith if relevant when you find them, and backstory on the AI.  Some of these bits of lore are brand new information, and other are things that were easy to miss.
  • The Civilian Industries mod not only now works again, but also has been getting a number of substantial updates by its author, StarKelp.
  • Lots and lots of bugfixes.
  • One bugfix in particular fixes an issue where all of the fireteam-based faction ships were being lobotomized upon loading a savegame since September 3rd.  So that made the hunter, the nanocaust, scourge, etc, all really stupid for at least 30 seconds after loading a savegame.  That was a one-line typo on my part, but is now fixed.
  • The Nanocaust has seen a bunch of buffs in general, since they were starting to seem lackluster compared to the newer factions that are more powerful.  The devourer golem is coming up soon in terms of getting some new power levels (in its case those will be lobby options instead of a straight buff).
  • In the arena of multiplayer, we found an interesting bug a while back that was causing any ships in transports to get duplicated endlessly on clients, which led to all manner of bugs and eventually crashes.  The bugs we've been fixing since then have not been nearly so serious, and it's really great to see how a variety of people are playing a variety of multiplayer scenarios with success now.  There are still plenty of missing MP-specific features and MP-specific bugs, but it's coming a long way fast thanks to testers.

More to come soon!

Looking for more information about multiplayer and DLC2?  A recent post on September 25th has a lot of details.

Please Do Report Any Issues!

If you run into any bugs, we'd definitely like to hear about those.

The release of this game has been going well so far, and I think that the reviews that folks have been leaving for the game have been a big help for anyone passing by who's on the fence.  For a good while we were sitting at Overwhelmingly Positive on the Recent Reviews breakdown, but there have been a lot fewer reviews lately and so that has definitely had a material negative effect.  Go figure.  Having a running selection of recent reviews definitely is helpful, but at least we have a pretty healthy set of long-term reviews.  If you've been playing the game and enjoying  it, we'd greatly appreciate it if you'd drop by and leave your own thoughts, too.

More to come soon.  Enjoy!

Problem With The Latest Build?

If you right-click the game in Steam and choose properties, then go to the Betas tab of the window that pops up, you'll see a variety of options.  You can always choose most_recent_stable from that build to get what is essentially one-build-back.  Or two builds back if the last build had a known problem, etc.  Essentially it's a way to keep yourself off the very bleeding edge of updates, if you so desire.

The Usual Reminders

Quick reminder of our new Steam Developer Page.  If you follow us there, you'll be notified about any game releases we do.

Also: Would you mind leaving a Steam review for some/any of our games?  It doesn't have to super detailed, but if you like a game we made and want more people to find it, that's how you make it happen.  Reviews make a material difference, and like most indies, we could really use the support.

Enjoy!

Chris

v2.600 Released! "Multiplayer Alpha"
over 3 years ago – Sat, Sep 26, 2020 at 09:25:26 AM

Can you hop into multiplayer and play now?  Why... yes, you can!  There will be bugs, at this point, but we're well into alpha now, and the first waves of testers have helped us fix a lot of things.

Since the last update post fifty-seven days ago (WHOAH), we've had thirty releases, starting with notes here and ending here.

If you want the full info on multiplayer's current status, the place to look at that from now on is here.

What's New Other Than Multiplayer Stuff?

  • Heck of a lot of bugfixes and balance tweaks, as you might imagine.
  • You can have multiple Devourers and Zenith Traders if you like.
  • The Imperial Spire (in DLC1) has a number of improvements.
  • Ion Cannons are particularly more effective now.
  • Melee units now do battle far more effectively, too.
  • The way the galaxy map is drawn has had a lot of improvements, most notably in the lobby.  This feels SO much better in singleplayer and multiplayer.
  • Some features from the upcoming DLC2 (which is now pushed until January 2021) have been backported to the base game.  Notably, you can now hack Dyson Spheres like an ARS.
  • Dark Spire got a number of improvements, including more interactivity with other factions that hate them.
  • Hit the R key to reset the camera rotation and orientation, at long last.
  • Improvements and flavor updates to Human Resistance Fighters.
  • Lots of changes to AI Eyes to actually make them formidable again.
  • Lots of improvements to mod compatibility, which broke code-based mods temporarily, but ultimately make them work better in both singleplayer but especially multiplayer.
  • Scourge (from DLC1) intelligence improvements.
  • Civilian Industries By StarKelp has been added as our second off-by-default mod that we're distributing for the mod author.  It may be broken at the moment because of some of the overhauls relating to multiplayer, but we'll have a working build again as soon as that is ready from the author.  It's a very cool mod.
  • More Starting Options By ArnaudB has been added as our third off-by-default mod.  This one adds a lot of new options for starting fleets for you.
  • There is a new "Find Planet" command (cmd:findp yourtexthere) that lets you find planets by name, which is super useful.
  • Better Default Screen Resolutions!  This has been bugging people for a while.  It's now defaulting to your desktop resolution and fullscreen windowed mode when you start the game for the very first time.
  • More voice lines related to the nanocaust and a few other factions.
  • The AI difficulty descriptions have been completely rewritten and are way more clear as to what you can expect, without making you feel bad.  Huge thanks to Tzarro on this!
  • "Fireteam dynamic resizing" is a new feature that leads to massive performance gains in very late-game situations with a lot of enemy factions in play.  Huge win by Badger.

More to come soon!  Read on to hear about multiplayer and DLC2.

What's The State Of Multiplayer?

If you want a truly exhaustive writeup about multiplayer, this has everything.

We have now been in multiplayer alpha for sixteen days, in a "soft launch" status.  Basically, we only told people who were really paying a lot of attention in the Steam forums or on Discord.  We had enough testers out of that smaller group to run into a whole slew of issues, and thanks to them you are now not going to be one of the folks to run into things that are that bad.

At first it was a situation where errors were immediate, and then it was a case of maybe being able to play 20 minutes at a time.  As of a day or two ago, Suzera and Ipsum were able to play for about three and a half hours without major errors, until they hit a game-breaking dead-stop issue.  However, the host was able to save their game, send it to me, and now on the new version they can keep playing as if nothing had happened; this may well be the first completed "real" multiplayer game of AI War 2 (assuming they win, heh).

At the moment you can definitely still expect some bugs, and things are not quite as smooth (visually) on the clients as we would prefer.  But we've made a huge number of strides, and it should be playable from start to finish aside from whatever unknown bugs you run into.  There's a list of many of the known issues, but most of them are not that serious at the moment.

What's The Difference Between Alpha And Beta?

Beta means feature-complete.  We're not there yet, on multiplayer.  Things like sharing a faction between two players doesn't have an interface yet.  Spectator mode has only been somewhat tested.  Lots more testing is needed in general.  Balance needs to be thought about by people who are actually playing it.  There are some features like gifting between players that are an obvious need.  Etc.

There's a list of questions for multiplayer alpha testers that can have a major material impact on what beta (and later fully released) multiplayer functions will be like, so if you have an opinion, please feel free to let us know!

What Makes Multiplayer Beta?

When we have all of the major features missing from the alpha, then that's a relatively feature-complete multiplayer experience.  When sync issues are not routinely a problem, and other bugs are not prevalent, then you can basically have an expectation of a "normal multiplayer experience."  Connect, play, disconnect when done.

The purpose of the beta period is to have lots of people attempting that, so that we find the strange edge cases.  Or other features that are needed that we are missing.  Or balance problems that are specific to having multiple players.

At this point, the schedule is such that we'll be hitting beta status sometime in October.  But we're in a more-robust-than-I-expected alpha status at the moment, so there is that.

If you're wondering "when can I play with my friends and actually just have a good time doing it," my hope is that the answer is... maybe now?  Depends on your tolerance for bugs.

If you're new to the game, or have a low tolerance for things that break, then my real answer to that question is "it should feel like finished and polished multiplayer in November," based on how things have been going so far.

What About DLC2?

This is something we haven't really been talking about too much, mainly because it seemed in poor taste to be talking about it before multiplayer was ready.  At any rate, Badger has really outdone himself on his part of it, and I'm very excited by what is there.

For my part of it, I have yet to even start it, and probably won't be able to until sometime in October at the earliest because of multiplayer work.  So the end release for this expansion will probably be in January, which is when we'll likely also call multiplayer "fully gold" in order to maximize the chance of marketing.  But realistically, hopefully multiplayer is there for you in every meaningful respect in November.

What can I tell you about this new expansion?  Well, it's much larger than the first one.  It's also not free to kickstarter backers, as an aside.  It's called Zenith Onslaught, and it does live up to its name.  I look forward to being able to share more about that with you in the future, but for now I need to keep my eye on the multiplayer ball.

Please Do Report Any Issues!

If you run into any bugs, we'd definitely like to hear about those.

The release of this game has been going well so far, and I think that the reviews that folks have been leaving for the game have been a big help for anyone passing by who's on the fence.  For a good while we were sitting at Overwhelmingly Positive on the Recent Reviews breakdown, but there have been a lot fewer reviews lately and so that has definitely had a material negative effect.  Go figure.  Having a running selection of recent reviews definitely is helpful, but at least we have a pretty healthy set of long-term reviews.  If you've been playing the game and enjoying  it, we'd greatly appreciate it if you'd drop by and leave your own thoughts, too.

More to come soon.  Enjoy!

Problem With The Latest Build?

If you right-click the game in Steam and choose properties, then go to the Betas tab of the window that pops up, you'll see a variety of options.  You can always choose most_recent_stable from that build to get what is essentially one-build-back.  Or two builds back if the last build had a known problem, etc.  Essentially it's a way to keep yourself off the very bleeding edge of updates, if you so desire.

The Usual Reminders

Quick reminder of our new Steam Developer Page.  If you follow us there, you'll be notified about any game releases we do.

Also: Would you mind leaving a Steam review for some/any of our games?  It doesn't have to super detailed, but if you like a game we made and want more people to find it, that's how you make it happen.  Reviews make a material difference, and like most indies, we could really use the support.

Enjoy!

Chris

v2.112 Released! "Steam Networking Complete" (Multiplayer Alpha Approaches)
over 3 years ago – Fri, Jul 31, 2020 at 11:18:14 PM

Multiplayer is not ready yet -- but this is a big milestone on that path.  We expect to be into the alpha for multiplayer sometime next week.

Since the last update post sixteen days ago, we've had ten releases, starting with notes here and ending here.

I recently talked a lot about multiplayer and our plans for that in the short and middle term.  I think all that is still accurate, but I'm going to talk about things again based on what I now know.  Our release notes page also has a section with the current multiplayer todo list for your easy reference.

What's New Other Than Multiplayer Stuff?

  • Relating to DLC1, the Scourge have gotten a number of new tweaks and fixes.
  • Various other UI tweaks and improvements, including a few to the lobby.
  • A fix to a memory leak and a crash to the desktop that were possible for some people to hit in the last month.  Those had to do with some newer ways of loading assets faster that didn't always agree with everyone's computer.
  • We fixed a handful of cross-threading exceptions that were possible.
  • The imperial spire now always give you vision properly.
  • Several ship behavior improvements.
  • The music selection/change window is now much improved.
  • The Dyson sphere got a few buffs.
  • A couple of speed improvements in parts of the codebase, and a couple of serialization fixes.
  • A fix for the self-building ships owing extra metal above their actual cost.
  • Several improvements to how stacks of ships behave, balance-wise.  This most notably improves Vanguard Hydras.
  • Campaigns in the load menu are now sorted by how recently something was saved in them, not alphabetically.  Oh my goodness this feels so much better.
  • Some minor nanocaust tweaks, and AI Exogalactic War unit tweaks in general.
  • Some balance tweaks to the Fallen Spire ships.

More to come soon!

What's The State Of Multiplayer?

This is a screen (edited to blur out some names) that makes me very happy:

For multiplayer, the intent is to have three general solutions for HOW data is transmitted across the Internet.  Two our of three of those are complete.  This doesn't mean that the game is ready to play, though, because WHAT data is transmitted across the Internet (or LAN) matters a whole lot more, and that still has a ways to go.  But we'll talk about that in a minute.

First up, how do we connect to players and how does data get between them?

  1. LiteNetLib.  Originally FORGE Remastered, but that was not performing well in my tests, so I swapped it out.  This is fully working.  This is what you would use if you want absolutely no central services or servers, or you want to play on a LAN or a VPN with friends.  It's extremely fast, and will try to do NAT traversal if you are playing across the Internet, but there's a very high possibility that you would need to use port forwarding with this.  I built in a lot of things to make it easy to find your IP addresses with this, and it should support IPv4 or IPv6 with no troubles (though only IPv4 has been tested).
  2. Steam.  This is fully working.  Basically, the host opens the lobby in multiplayer mode, or loads a savegame.  The client clicks join game and sees a screen like the above with all of their Steam friends.  Click connect next to the one who is hosting, and Steam brokers a route through any firewalls you have, sets up a very fast relay through their own servers, and connects you with your friend without ever revealing the IP addresses of either of you.  It's not possible that you would have to worry about ports or port forwarding or any of that sort of thing, as it doesn't use any of that in a traditional sense.
  3. GOG Galaxy.  Not yet working.  This solution will only work for Windows and OSX right now, and not also Linux like the other two solutions do.  This one will work a whole lot like Steam, although with less in the way of relay servers.  I'm still working with GOG to figure out a few technical bits at the moment.

At this point, this covers HOW data gets around.  Other than GOG, which I'm waiting on information for, I'm completely done with this work (any future found bugs aside).

The work of this stuff is:

  • Getting you and one or more friends connected.
  • Then keeping you connected and data moving fast between you.
  • And finally, making sure you know when someone disconnects.

These have no idea what is being said while you are connected, or really any concept of what the game is or what it is doing.  Their job is immensely complicated, but it's all about the shipping and transfer of data, and not about what the data is.

What's The Barrier To Multiplayer Alpha?

In order to play multiplayer at all, you first have to get connected and stay connected.  That's done.  The game also then has to have a system for talking between clients and the host, and keeping everything in sync.  Someone clicks a button or gives orders to a unit, and everyone else sees the result.  Etc.

A huge amount of that sort of data-sharing is already done:

  • The initial sharing of the state of the galaxy, so that everyone is on the same starting point, is done.  It nicely pauses things until everyone is caught up, so that if someone is popping in in the middle that's not a problem.
  • The actual routing of all the GameCommands that the AI and players issue, and the central time clock ticking, and that sort of thing has been done since 2017, and something we've been continually working on keeping up to date.  I'm sure there will be bugs, but I can verify that the vast bulk of this is working correctly already.
  • With the lobby itself, there's a bunch of UI stuff that is particularly complicated, more than the rest of the game in some respects, and that is partially done.  Right now there are a number of known bugs in there that I'm sorting through.
  • We also have to know which players are controlling which factions, or who is choosing to just be a spectator, etc.  That's on my list for early next week along with the lobby bugs.
  • During gameplay, certain things will drift out of sync because of the multithreading that we do, and because of floating point inconsistencies between machines in a few places.  We need to have the game roll through and self-analyze itself and fix those sync errors.  A lot has been built out here in terms of design, but the basic version needs to be implemented before people can play for too long without sync errors being hilariously in the way.

And in terms of a multiplayer alpha, that's kind of all that we have left to do.  The main time question mark is just how many bugs I run into.  I also do want to convert the GameCommands into a new format that is more efficient, and that will probably introduce even more bugs, but that will ultimately be a speed boost for both single-player and multiplayer games.

What Will Multiplayer Alpha Be Like?

Buggy, probably.  And definitely not feature-complete.  Hopefully you can play with a friend for at least 20-30 minutes before there are catastrophic pileups of sync errors, and then saving and reconnecting is fast (3-10 seconds, probably).  But I would not expect to be able to play an entire game.

I also expect to see some funky things that we did not expect, such as trouble using certain interfaces or issuing certain commands.  Those should be pretty quick to fix, on average.

There's also a bunch of features that are multiplayer-specific that will be missing.  Want to trade ship lines with a friend?  Too bad, at first.  Text chat?  Sure, that's there already.  Science sharing?  Yep, already there!  Passing some metal over?  Nope, not yet.

During the alpha, one of the things that we'll be soliciting feedback on is what features you want.  We have a pretty good idea, based on all those years of co-op in AI War Classic, but it's still good to hear what feels lacking here, since there are a lot of concepts and features in this game that did not exist in the first.

What Makes Multiplayer Beta?

When we have all of the major features missing from the alpha, then that's a relatively feature-complete multiplayer experience.  When sync issues are not routinely a problem, and other bugs are not prevalent, then you can basically have an expectation of a "normal multiplayer experience."  Connect, play, disconnect when done.

The purpose of the beta period is to have lots of people attempting that, so that we find the strange edge cases.  Or other features that are needed that we are missing.  Or balance problems that are specific to having multiple players.

I'm still hopeful that we'll reach the start of beta during August, and at the moment that seems like a reasonable goal.  The one real wildcard remaining is how much of a bear the sync code winds up being, since everything else is either complicated-but-done, or some type of code I have done many times over the last 11 years.

The Steam networking integration, and even to some extent LiteNetLib, were the other two major wildcards, and it's really rewarding to have both of those behind me.  I do need some extra assistance from the GOG SDK team in the short-term before I get that platform up and running, but if that isn't ready until sometime in the beta period that wouldn't be the end of the world.  I would just prefer it to be done sooner.

We will probably have a multi-month beta period, just to let people have lots of time to run into any particular issues.  This will also give me time to then step back and do my work on DLC2, and then we can officially launch both that and the free multiplayer update at the same time.  October still seems reasonable for both.

If you're wondering "when can I play with my friends and actually just have a good time doing it," my hope is that the answer is "during beta, later this month."  Fingers crossed!

Please Do Report Any Issues!

If you run into any bugs, we'd definitely like to hear about those.

The release of this game has been going well so far, and I think that the reviews that folks have been leaving for the game have been a big help for anyone passing by who's on the fence.  For a good while we were sitting at Overwhelmingly Positive on the Recent Reviews breakdown, but there have been a lot fewer reviews lately and so that has definitely had a material negative effect.  Go figure.  Having a running selection of recent reviews definitely is helpful, but at least we have a pretty healthy set of long-term reviews.  If you've been playing the game and enjoying  it, we'd greatly appreciate it if you'd drop by and leave your own thoughts, too.

More to come soon.  Enjoy!

Problem With The Latest Build?

If you right-click the game in Steam and choose properties, then go to the Betas tab of the window that pops up, you'll see a variety of options.  You can always choose most_recent_stable from that build to get what is essentially one-build-back.  Or two builds back if the last build had a known problem, etc.  Essentially it's a way to keep yourself off the very bleeding edge of updates, if you so desire.

The Usual Reminders

Quick reminder of our new Steam Developer Page.  If you follow us there, you'll be notified about any game releases we do.

Also: Would you mind leaving a Steam review for some/any of our games?  It doesn't have to super detailed, but if you like a game we made and want more people to find it, that's how you make it happen.  Reviews make a material difference, and like most indies, we could really use the support.

Enjoy!

Chris

v2.099 Released! "Last Rabbit Holes"
over 3 years ago – Thu, Jul 16, 2020 at 06:23:16 PM

Since the last update post twelve days ago, we've had six releases, starting with notes here and ending here.

Last time I talked a lot about multiplayer and our plans for that in the short and middle term.  You can read the details, but in order to keep things organized our current release notes page has a section with the current multiplayer todo list for your easy reference.

One other really cool thing since last time is that I've written up an explanation of the AI in this game, and how it's different from the much-vaunted-in-2009 AI of the original.  That's definitely worth a read.

What's New?

  • A lot of code reorganization has happened to get us through the first couple of todo items of multiplayer.  Things are so much easier now; I was going to do a first "discussion between two computers in AI War 2 since 2018" yesterday, but I got sidetracked with other items.  At any rate, that's hopefully what I'll be up to tomorrow, now.
  • Quick Starts were initially broken for a lot of players in version 2.090, but we got that taken care of quickly.  One of those things that can happen when the game is in a beta branch for a long time.
  • We improved the speed at which certain pieces of code can search for entities, which basically makes it so that various mods and factions can use less CPU time to do their thing.  There was a discussion on discord about methodologies, and I had a stroke of inspiration.  Figured why wait.
  • Badger has started adding some new "Reactive Guidance" for new players, which basically gives you journal entries suggesting alternatives if it notices you falling into certain kinds of traps.  For those who skip the tutorials or are otherwise rusty or unsure, this helps to keep them aware of the framework they might want to consider working within.
  • We had several other speed boosts to parts of the game, and a number of small bugfixes both long-coming and to recent things resulting from the beta.
  • Keith and Badger both added some new ship intelligence items, which make your own ships that much smarter without you having to micro them.  Engineers peeling off of their normal duties to prioritize a cripple flagship that just limped home is thanks to Keith.
  • Left clicking on your metal income now shows you some new stats for units you've killed.  Right-clicking shows the old flows data.  This is kind of a sneak preview feature.
  • A bunch of updates have been made to the main menu to prep it for multiplayer's alpha coming up so soon.
  • You can now properly have multiple player profiles, and add new ones and switch between them and edit and delete them.  This is another item that's useful for multiplayer.
  • There are some new features that let you actually run the game without loading all the ship graphics other than icons, which effectively lets you run the game under the normal minimum system requirements.  Two of the computers I want to use for multiplayer testing at my desk fall into that category, so that's quite useful.  And if you want a just-icon view for your low-powered laptop, that's now a feasible thing, in general.
  • There was some major confusion in the last couple of versions with the ability to enable and disable mods and expansions -- it required a restart of the game, but did not make you do that or tell you so.  Now it makes you do that, and so the potential for accidental confusion is fixed up.
  • We've made the defaults for the icons in gamespace larger, so that you can see them better on average-sized screens.  If you're running a very large screen or a very high DPI screen, you can still adjust these to be smaller (or even bigger if the opposite is true!), but this new default should be more comfortable for more people.
  • Mods with code can now distribute their code all in one folder, which makes them far easier to install and remove.
  • Mods can FINALLY add new icons, although I need to make a tutorial on how to do that.  But this is the last area that wasn't moddable.
  • Our methods of loading and drawing icons are improved in general, and use a lot less RAM and VRAM, as well as allowing us more space for an indefinite number of icons.  In our one big monolithic sprite dictionary, we were going to be running out of space before finishing DLC2 in the prior approach.
  • It's worth noting that with the new style of drawing icons, lowest-supported-level GPUs will probably see a significant speed boost.  This is because they can now store the entire material and its textures all in direct tiny amounts of VRAM rather than shared system/virtual VRAM that is slower; this is a major benefit for the older Intel HD 4000 HD cards in particular.
  • There are several new things that are pooled now on the galaxy map, making galaxy map generation even faster again.  This should also fix a DLC2-only memory leak with nomad planets, but we've not properly tested that yet.  Hopefully our DLC2 early testers let us know.
  • There is now a galaxy setting to grant players Watch vision for 1, 2 or 3 hops from all command stations.
  • On the galaxy map, we've reworked the shader for how we draw the icons of planets and ships at them, and thanks to that we no longer ever have problems with the planet drifting away from the wormhole lines leading to it when you view it at a somewhat oblique angle (usually the side of your screen).  That was a really longstanding irritation!
  • And that hopefully concludes my last couple of rabbit holes, so I can get on with multiplayer proper.  I do think that the improvements to performance are a nice boon, though.

More to come soon!

Please Do Report Any Issues!

If you run into any bugs, we'd definitely like to hear about those.

The release of this game has been going well so far, and I think that the reviews that folks have been leaving for the game have been a big help for anyone passing by who's on the fence.  For a good while we were sitting at Overwhelmingly Positive on the Recent Reviews breakdown, but there have been a lot fewer reviews lately and so that has definitely had a material negative effect.  Go figure.  Having a running selection of recent reviews definitely is helpful, but at least we have a pretty healthy set of long-term reviews.  If you've been playing the game and enjoying  it, we'd greatly appreciate it if you'd drop by and leave your own thoughts, too.

More to come soon.  Enjoy!

Problem With The Latest Build?

If you right-click the game in Steam and choose properties, then go to the Betas tab of the window that pops up, you'll see a variety of options.  You can always choose most_recent_stable from that build to get what is essentially one-build-back.  Or two builds back if the last build had a known problem, etc.  Essentially it's a way to keep yourself off the very bleeding edge of updates, if you so desire.

The Usual Reminders

Quick reminder of our new Steam Developer Page.  If you follow us there, you'll be notified about any game releases we do.

Also: Would you mind leaving a Steam review for some/any of our games?  It doesn't have to super detailed, but if you like a game we made and want more people to find it, that's how you make it happen.  Reviews make a material difference, and like most indies, we could really use the support.

Enjoy!

Chris

v2.090 Released! "Returning From Beta" (Plus Multiplayer Schedule Updates)
over 3 years ago – Mon, Jul 06, 2020 at 04:25:36 PM

Since May 22nd, we've been working hard on the game in the beta branch, and now we're back onto the main branch for everyone to enjoy the new items.  The full release notes start here and finish here.  Let's see if I can't summarize that down a bit, though.

The TLDR is that this is almost all prep for multiplayer.  If building and testing multiplayer was a car trip, this would be like getting the car in tip-top shape right before you start the trip.  If the trip is into rough terrain, then good preparation is going to mean a far smoother trip once you get on the road.

So let's take a look at that, and then the other bits that are unrelated.

Data Compaction, Many Times Over

Savegames are vastly smaller.  They're also more efficient to write to disk, and to read.  This was a massive overhaul, but it also directly effects the way we will be transmitting network data messages.

I've written about the benefits of this at length in the past, so I'll skip rehashing that here.  But the short version is that essentially there is a LOT going on in this game, and during networked play we need to be able to fix desyncs on the fly.  The only way to really do that is if we can efficiently send large amounts of correction data in the background while not interrupting your main play.

Back in May, I wasn't feeling really confident that it would work out well.  It was borderline, but the processing load and the amount of network packets required was going to be iffy.  Any good engineering student knows that you want to build in redundancy: if your bridge can only hold ten tons, and it will have nine tons on it regularly, you're asking for a terrible accident.  You want to start out with a lot more extra capacity to avoid the tragedy, and you also want to do that from the start rather than trying to strengthen the bridge while people are driving on it.

So that's where we are now: the metaphorical bridge is ridiculously braced and ready for action.  This was a really massive undertaking, and it was the chief thing that led to the extended beta period here, so hopefully it makes intuitive sense why I chose to do this before getting into a functional multiplayer alpha rather than mixing the two together.

Game Loading Improvements

This might seem unrelated to multiplayer, but one of the things that we have to be really careful of is that all the players have the same data about game units when they load in.

Because this game was built from the ground up with mod support in mind, there are certain things that I realized could be impairing this consistency.  So I put in a bunch of new auto-checking to make sure that things happen the way I expect, and in the process:

  1. Fixed a few issues that were impacting mainly mod authors, making them have far more xml than they needed to.
  2. Made the game load vastly faster for everyone (depends on your computer, but for me it loads in 7-24 seconds now instead of 16-90 seconds.  The big variance is largely based on how busy my hard drives are and what is already cached in RAM from prior runs.
  3. Made it possible for mods to adjust base units (like Raider) and then have those modded changes cascade to all of the descendants of that base unit (Daggers, etc).
  4. Implemented some code that lets us verify that things are consistent regardless of how your OS does the sorting of files in its filesystem.  This sort of thing was going to be a potential barrier to cross-platform play between OSes, but it no longer is.
  5. This also lets you now disable mods and expansions that you have installed from within the game UI, if you don't want to play with them at the moment.  This is key for multiplayer, where you might not have or want the same mods or expansions as someone else you are playing with, and the people with extra stuff can now just disable that in order to play with one another -- no need for someone to reach for their wallet just to play multiplayer with you, if you have extra DLC, for instance.
  6. This prior one also lets us now distribute some mods with the game, but have them be in an "off by default" starting state.  This lets various mods be a lot more easily-accessible, without us having to support them in an official capacity or them affecting every game anyone plays.  The first mod to be included like this is The Spire Railgun Shop by Lord of Nothing.

Rebuilt Compiler Pipeline

This sounds like a yawn sort of item, so I'll keep it brief.  But it's something that first Keith and then later I had been working on since 2017 or so, and there were some key limitations with how we were able to link against some of the extra language features that... well, the various multiplayer libraries we're going to be using (Steam, GOG, and Forge Remastered) all use.

This mean that there was a certain indirection I had to previously build in in order to load those things, and in order to test and change pieces of code in those specific areas it was literally an ELEVEN MINUTE wait for me while I hoped that whatever I changed was okay.  Normally it should be a couple of seconds of turnaround, but because of our compiler chain limitations, these specific libraries couldn't be linked in the direct fashion we prefer.

This was going to make bugfixing in multiplayer an absolute nightmare, as you can imagine, since being able to routinely test things without eleven minute delays peppered all throughout my day is pretty important.  If I have a one-line typo, I need to be able to fix that and then see the results within a few seconds, not after 11 minutes.  That whole thing was making me dread working on certain aspects of multiplayer, so I put more time into it and finally managed to fix the root problem.  Hooray!

Prepping For Efficient Multiplayer Messages

We have long used a very efficient "serialize by index" (instead of name) method to make savegames smaller and more efficient, but that sort of thing could not work in multiplayer because there was no way to have a shared set of agreed-upon indices between the host and client(s).

The game has now been upgraded to handle fully setting those up so that now the host and clients get those synced automatically when the game starts, and so the ultra-efficient smaller messages now work in multiplayer and not just on disk.

Fireteam Specialists

This is a major new feature that Badger created for the upcoming second DLC for the game, which will be called Zenith Onslaught.  (Please put away any pitchforks -- I have not been working on DLC2 at all yet, as my focus is appropriately on multiplayer.  And multiplayer is not something in Badger's scope to help with).

Anyhow, like fireteams themselves (which were developed initially for DLC1), these new abilities for them have been backported into the base game.

Basically this lets some group, like the AI Hunters, have a sub-group that is chasing just a specific faction.  Or just a certain part of your faction.  Examples:

1. You're The Little Fish

Let's say that perhaps the nanocaust is being absolutely terrifying, and they are a third-party against you and the AI.  A faction like them is now able to piss off the AI enough to cause extragalactic war units of the AI to appear.  Those are things like the flenser, at the upper levels, where just one of those is absolutely game-ending for you as a player if you don't have the fallen spire or some other sort of mega faction going on on your own side.

Anyhow, previously we couldn't use something like the flenser in this fashion, since the AI would eventually probably turn it on you and end the game prematurely and unfairly.  But now we can keep the flenser fully focused on whatever aggro'd it so much in the first place -- the nanocaust, in my current example.

This means that you can be present in the galaxy while the AI is fighting a much larger foe than you are, using much larger firepower.  This is... just plain cool.  It also has strategic ramifications, as you'll want to avoid the planet with the flenser while it's fighting the other foe, even though the flenser will never fully turn on you and go wreck all your planets.  It's just going to be a fight that doesn't involve you, but that you have to work around, and the flenser will head back out of the galaxy to deal with its war there once it deals with the target here.

(Of course, the flenser is an extreme example.  Mostly you'd see smaller extragalactic war units making an appearance.  But mods, and probably DLC2, could aggro the AI enough to cause a really strong faction like that to get into a war that is larger than the one you yourself are engaged in).

2. A Specialist Group Is After Your Treasure

Right now this is used for Major Data Centers (MDCs) in particular.  Previously when you captured those, the challenge that they presented was exogalactic waves that would spawn against the planet of the MDC while you were hacking it.  If you survived the entire time, then you'd get to keep the MDC.

That mechanic is... overused and kind of boring.  For MDCs, we no longer use exogalactic waves at all.  Instead, the AI hunter fleet gets a bit of extra budget with some specific objectives to go kill your MDCs.  This makes the AI have an appropriate response to you getting the new treasure, but it's not in the form of this series of kind of hacky waves that come at you over and over.  Instead these are groups of specialists in fireteams who are intent on intelligently taking out that treasure when they can.  This makes the AI seem much more alive and intelligent, versus just a dump of units at you that you have to withstand temporarily.

3. Changes To Player-Allied Factions

Your allies will no longer go around popping warp gates, which was causing AIP to increase.  Instead the AI is now able to use these new mechanics with specialist hunter teams to hunt your allies appropriately.  In other words, the AI is now able to mount a proportional response to actions, but without your allies having to do something annoying like destroying warp gates that you might prefer consider existing.

Other Items

  • Holy cow, the one bad thing about an extended beta is that it can delay certain fixes.  One of those was that all of the AI (and I think Outguard units as well) had the equivalent of mark 1 hull and shields for the last couple of months if you weren't on the beta branch.  That's going to be a bit of a jump in difficulty on campaigns that were vanilla if you were on the last non-beta one all this time -- apologies.
  • There were a bunch of other bugs fixed that were less likely to affect everyone, but which were still annoying and which are great to finally have on the main branch.
  • A bunch of achievements that were not triggering correctly now do.
  • The Parasitic Starting Fleet has had its balance improved, and should be more attractive to start with now.
  • AI ships from spire debris are now a lot more dangerous.
  • The Imperial Spire Fleet now gives you vision on their planets so that you can watch the fireworks.
  • Multiple copies of the same faction type (whether they are friends or enemies to one another) now try to spread themselves out in the galaxy to make things a lot more interesting.  If your playing with good and evil marauders both at once, then they won't be neighbors most of the time, now.
  • We improved how we are doing our fixed-integer math, which fixes some math rounding issues that could lead to a bit of odd data with certain bonuses on the UI in particular.
  • Fixed a very unusual bug where the AI was basically able to get frigates "for free" as part of their reinforcements in the rare cases that they actually used them.
  • Make the Marauder less likely to suicide themselves against Praetorian Dragons.
  • During gameplay, when you click into the Galaxy-Wide Options screen it now shows you ALL of the values, not just the ones you can edit.
    As with the factions screen, it just has the ones that are non-editable as text values, but you can examine your settings this way and also see their tooltips.
  • If the game runs into an exception while trying to start up, it now gives you a visual error rather than the loading process just seeming to hang.
  • The Nanocaust and Dark Spire shouldn't be able to rebuild a Nanobot Center or a Locus for at least a few minutes after a previous one on that planet was destroyed.
  • Cross planet waves against a specific faction now will stay focused on that faction (and not go off and attack the player).
  • The "brighter color" hex and color for faction teams now uses new logic by -NR-SirLimbo to make sure that faction names should always be nicely readable even if their actual colors are normally very dark.
  • Various more voice lines have been integrated into the game.
  • The game now has a Notification for when Dark Spire Loci are warping in.
  • It turns out there were some sort of edge cases where the AI king could be dead but its faction would not have gone through the "we have lost" logic. We don't yet know how that could possibly be possible, but we now have a safety check from then on in the future that makes sure that even if the kings death was somehow missed when it happens, it now recognizes that it happened in the next few seconds and will mark the faction as defeated.
  • Fixed a SUPER longstanding bug where it would sometimes write "Was looking for a wormhole (some stuff) but couldn't find one."  This was also causing some bad ship behavior.   It's been around, but rare, for years now.
  • Fixed a "fun" bug where some enemy ships with fireteamss would be unable to decide between targets; they would get partway to one target, then turn around as if going to the other target. This looked like a Buridan's ass style problem with the targeting code.  The actual problem was that Fireteams were incorrectly declaring themselves winners of a battle without showing up.
  • Fixed what appears to have been a relatively old bug (somehow?) where the max strength of a lot of fleets was not being properly calculated. It seems like this may have slipped by for a few months, or since a bit before DLC1 somehow.
  • Also fixed a bug that probably goes back to the start of fleets, where instead of the current strength of fleets on the fleets sidebar, it was showing their total strength. For command station fleets, it was showing a max that they could not even hit, too.

More to come soon!

But here's some further reading on what we're doing in detail:

Multiplayer Schedule, And Why

It feels like an endless wait for multiplayer, doesn't it?  I hear you on that -- I think it probably feels even longer for me, since I'm the one working directly on it daily and it's been so many things.

I wanted to take a minute to step back and address WHY things are taking so long.  You may or may not know this, but we actually had fully functioning multiplayer for this game back in 2017, before turning it off because we couldn't reliably try to keep sync in the game while building out so many features like we were doing until late 2018.

It seems like it should have been a simple matter of just turning back on that old code, right?  Well... unfortunately as we developed the game, it got a lot more complex.

Essentially, the first AI War existed in a perfectly deterministic state where, after initial game sync, nothing had to be sent between clients and the host except for commands from the players and the higher-level AIs.  It also sent some basic check messages to make sure that results were not diverging on your machines -- and if it detected a divergence, then it would flag that as a desync and stop you from playing until you saved, reloaded, and had the clients reconnect.

That determinism was achieved through a lot of really rigorous coding practices, and using fixed-integer math instead of floating-point math, and only using one thread for the main simulation.

In AI War 2, we can't really enforce how rigorous modders' code is; we also are using many threads, all of which are designed to be deterministic but which... turns out sometimes are not because of exceptions that we can't solve in a deterministic way without slowing the entire game way down; and we have to use some floating point math here and there (forcefield pushback, for one) in order to get the accuracy and performance the game needs.

So what this means is that the entire premise for multiplayer in AI War 2 got more complicated.  The game is MOSTLY synchronous, MOSTLY deterministic, and does a great job at running blazing fast.  But desyncs can and will happen, probably with some frequency depending on how different your PC specs are from the people you are playing with (or what errors in rigor have been made in mods you want to use), and the old approach of stopping the game and making you reload and reconnect is absolutely unacceptable.  You could be running into those sort of issues once an hour, or once a minute, depending on the circumstances.

That means that, while we strive for determinism as much as possible, we also need to have automatic desync repair.  This is familiar more for action games (which exist in a state of constant desync by nature) rather than strategy games.  I have experience with this from the A Valley Without Wind games, but they have an incredibly small fraction of the amount of data that AI War 2 has going on.  It's a much less intense environment as a multiplayer coder.

Anyhow, this has meant that the environment has to be extra well-prepared for sending efficient messages, since there will be more of them.  It also has to be able to fix small problems in a spot-fix fashion without re-syncing the entire game.

These added challenges meant that I needed to restructure some substantial bits of the code that were working perfectly fine if you look at them from any other context.  I still have some areas to deal with for that, but the list is getting much smaller.

We're still on track to have multiplayer "in the next few months," but I realize I've been saying that for months now.  The really good news is that alpha of multiplayer should be way more smooth, and a lot shorter of a period before we can get to the point of it being fully polished.

I'm keenly aware that as soon as folks can play multiplayer, they will do so; and if it's a broken mess on the first alpha, and it takes me months to make meaningful improvements to it, I will lose my testers.  So I'm being extra cautious and hitting all the areas that I expect I will run into before even starting the first alpha.  That should ultimately be a lot less stressful on me in a time-pressure sense once we start doing multiplayer alpha.

What's Remaining For Multiplayer?

So what is the todo list, then?  It's getting shorter!

  • Now that the compiler chain is improved, I need to get Steam and GOG linked in a better way, and also get Forge Networking linked in that fashion.  This will be FAR easier than what we were doing before, and more in line with how those respective libraries expect you to use them.  I'm very excited about this being possible, finally.
  • The actual cycle of multiplayer messages being sent and received, and that keeping the game flow going, is done and has been for years (literally since early 2017), but I need to reintegrate that into our core dlls and improve the efficiency of some bits of it.  It's not large amounts of code, thankfully.
  • I need to redo how the initial world state is sent to new clients joining in, but that will also be quick -- thanks to the rework of world save data styles and sizes.
  • Our old style of desync-detection from 2017 has been stripped out now, and I need to add in a new kind of rolling desync detection that will find problem entities and then allow us to fix them.  To keep this fast and relevant, I'm only going to care about a few things: position, health, and shields.  If those match, then probably everything else is close enough.  How to handle the time differential on this is really challenging, and only in the last couple of months did once facet of this occur to me.  I have a couple of solutions in mind, but it's going to be... "fun."
  • The way that we send information in multiplayer is by GameCommand, and right now those are generic and bloated (they are overly multi-purpose).  I am going to replace those with a new set of custom GameCommands that us developers and modders can use as-needed and have them  take full advantage of the new smaller data sizes.  Fun fact, this will also make single-player run very slightly faster when a lot of things are going on.
  • The really big one that remains is making sure that the cross-machine identifiers (PrimaryKeyIDs) are consistent between machines.  I don't fully have this figured out yet, but I think that the interim state of it will essentially be that there are occasionally too many messages being passed around because of rolling sync errors.  I will probably punt this issue into something I look at during the alpha, so that I can gauge what sort of impact it really has on performance, and where the problems are coming from.
  • After that it's more or less a matter of making sure that the lobby fully works as we expect, and various other small UI systems to get multiplayer basically playable.  A lot of work went into the lobby in particular in the last few months to make that as close to as ready to go as possible.
  • There are then whatever changes we need to make to balance in order to make things "feel right," which will be a matter of working with the multiplayer alpha and beta testers.  A lot of things we already did in the past, like making science collection a humanity-wide thing that each player gets a copy of, rather than something people have to do individually (what a pain that was in AIWC).  We will have to scale waves like we did in AIWC multiplayer, or in some other fashion.  But a lot of the difficulty scaling is inherently handled by AIP being higher when you have to take more planets in multiplayer.

So, to sum up the plan for the short term:

  1. I need to re-link the networking libraries using the new compiler chain.  This might take a couple of days.  I'll do it on a beta branch in the next week or so, at least for a bit, because it will potentially break the ability to log achievements on some machines or OSes until I get it fixed back properly (assuming it doesn't work on try one).
  2. Then I will pull the network-loop code back into the main game, which is a part of one day job.
  3. Then I need to generalize that to work for all three networking code paths (Steam, GOG, Forged), which probably will only take a couple of days at most.
  4. Then I need to re-code GameCommands to be more efficient and special-purpose.  This is probably a job that is a couple of days long, and will potentially lead to widespread bugs for a week or so after it.
  5. Then I need to implement V1 of the desync detection and correction code, which should probably only take a few days.
  6. Then I need to get the basic connection interfaces working, so that you can choose to connect to players via Steam, GOG, or a direct IP address (forged).  This will be a moderate challenge, because Steam and GOG both have APIs that I'm pretty unfamiliar with in this exact area.  Once the connection is going, it's much easier.  But with the new compiler chain, at least I can hopefully get these going in a matter of days or a week rather than it being something that takes multiple weeks.
  7. At that point we should be able to reasonably declare that the multiplayer alpha is ready, as you should be able to connect to friends and play with them, and the desyncs would cause network performance degradation rather than something permanent that your game can't recover from.
  8. Then it's a matter of the other features on multiplayer, mainly regarding things like donating fleets between one another, and/or whatever else we come up with that is desirable.
  9. Oh, and during that period if we're seeing network degradation or other issues due to the constant need to sync errors, then that will be to be investigated and improved.  But those things are most of what the focus of the alpha/beta will be on.

How long will each of those line items take in reality?  I guess it depends on what gotchas I run into that are unexpected at the moment, but you can always watch the release notes to see how things are coming.  A lot of the really hefty things that required major reworks of the game are done, so that's a win.

There are some things that I'd probably prefer to do sooner than later, like allow you to enable and disable expansions/mods from the main menu without a restart of the game, so that might take a chunk out as well.  But it should make things easier on everyone as they get more into multiplayer.

Please Do Report Any Issues!

If you run into any bugs, we'd definitely like to hear about those.

The release of this game has been going well so far, and I think that the reviews that folks have been leaving for the game have been a big help for anyone passing by who's on the fence.  For a good while we were sitting at Overwhelmingly Positive on the Recent Reviews breakdown, but there have been a lot fewer reviews lately and so that has definitely had a material negative effect.  Go figure.  Having a running selection of recent reviews definitely is helpful, but at least we have a pretty healthy set of long-term reviews.  If you've been playing the game and enjoying  it, we'd greatly appreciate it if you'd drop by and leave your own thoughts, too.

More to come soon.  Enjoy!

Problem With The Latest Build?

If you right-click the game in Steam and choose properties, then go to the Betas tab of the window that pops up, you'll see a variety of options.  You can always choose most_recent_stable from that build to get what is essentially one-build-back.  Or two builds back if the last build had a known problem, etc.  Essentially it's a way to keep yourself off the very bleeding edge of updates, if you so desire.

The Usual Reminders

Quick reminder of our new Steam Developer Page.  If you follow us there, you'll be notified about any game releases we do.

Also: Would you mind leaving a Steam review for some/any of our games?  It doesn't have to super detailed, but if you like a game we made and want more people to find it, that's how you make it happen.  Reviews make a material difference, and like most indies, we could really use the support.

Enjoy!

Chris