1. AI War 2
  2. News

AI War 2 News

Beta 3.507 Spare A Moment For Your Orbitals

New beta build! https://wiki.arcengames.com/index.php?title=AI_War_2:Finalizing_Multiplayer#Beta_3.507_Spare_A_Moment_For_Your_Orbitals

Okay, this one is largely a digression. But first, what's the stuff in here for the bulk of folks?

- More tools for looking at threads that might be misbehaving. It seems to be intermittent.

- Badger got the tech window code to provide a more accurate count of upgradable ship lines. It does not fix problems with the turret count though.

- Several bugfixes that were pretty minor.

Beyond that, I took a bit of a side track today, and worked on a major new gameplay mechanic for DLC3. Well, kind of a cluster of them. The core thing is ship orbits around other ships, the gravity well center, other ships orbiting other ships, and so on. There's more I need to do there to make it fully smooth, and I haven't had time to test the versions that are not focused around the fleet leader, but it's a start.

Why this side track? I learned today that Zeus's availability for doing his portion of DLC3 is going to be ending later this month, so I was now the bottleneck for him being able to do the work he wanted to. There's a few other things along those lines that I'm going to knock out, and that will give the testers more time to test, too.

Then I'm not holding up anyone else's work while I continue to bang my head against the wall of the codebase and get all the post-pooling errors that remain fixed. The number is really shrinking, which is good, but the number did not shrink today.

As those drop in number, I will then shift back to multiplayer and work on that. There's some major ripping and tearing I plan to do in that area to make the client really work well. Interestingly, I found an unexpected source of desyncs in the ship creation code today when I was working on the orbital work, so that's something I can improve. The game already self-repairs from desyncs, but the less work I make it do in that regard, the better it is for your bandwidth and for smoothness on the client. So that was an unexpected and nice find, but it's a nontrivial fix to solve it. (Passing a Context object past a client-barring gate is insta-desync, is the short explanation).

Loadouts are one of those things that are on my short term list of things to make ready for the others, and that will be backported to DLC1 as well. Though I'm not sure precisely when on that bit.

There's a bunch of other features and work, and I'm not entirely sure how well things will fit into my schedule. We'll find out as each week passes.

Right now it looks like the "true" versions of Expert and Deathwish mode are not going to come to pass, unfortunately. Strategic Sage and I have been discussing that, and essentially trying to get the Fuel concept or the other things we wanted in there is a HUGE time gamble for us both, and there's no guarantee that it will yield the feel that either of us are looking for. And meanwhile, most players are super happy with the Humanity Ascendant mode as it is, so I'm chasing a very tiny minority goal there. It's something I wanted to do, but it's looking like it's not remotely commercially viable right now. I don't plan to remove those other modes, because they do add on some stricter rulesets, but they may never be as divergent as they were intended to be.

There's a few nice QoL improvements still planned for the near future, because they are fast and the sort of thing everyone will appreciate. I'm going to try to avoid making promises for the next little while, because I'm really having to react on my feet to what comes up in testing and what other contributors need for their work and so on, so it's hard for me to keep a straight-line focus like if I was working in a vacuum by myself.

Anyway, the release tempo is going to stay fast for a while, either way.
More to come soon.
Enjoy!

Beta 3.506 Setsuna Notices A Lobotomy

We're still in beta, but today strikes a solid blow against the forces of entropy that are keeping us captive there for the moment: https://wiki.arcengames.com/index.php?title=AI_War_2:Finalizing_Multiplayer#Beta_3.506_Setsuna_Notices_A_Lobotomy

SirLimbo made a number of improvements to shot compression (which was a really huge overhaul of multishot by him to work better with stacks), and this build fixes a number of things that he found over the weekend. Some of the "ships not shooting despite there being plenty of targets" bugs sound like they are fixed. All of them? Hopefully, but who knows.

On my end, I've been chasing the bug that originally Setsuna and Zweihand reported, where certain factions just seemed to go stupid every so often. The most egregious was the Zenith Trader just camping out on a planet for 45 minutes. Based on reports, Badger figured out that this had to be something to do with the long-range-planning code, and managed to replicate the problem.

I chose to go in a rather comprehensive direction, and started reviewing all of our threading code in and around that area. I'd rather not be purely reactionary to bugs as they come up, you know? In the end, today I only found the one bug (and it was two lines of very well hidden code), but along the way I simplified a lot of code, and made a lot of the threading code faster.

How much faster? It's... really going to depend a lot. The older and slower your CPU is, but the more cores you have, the better for these improvements. So older quad-cores will probably see the largest gains. Even for me on a really new octa-core (as of late last month), I seem to be feeling extra smoothness, though. This also prevents a number of possible bugs that MAY have been affecting things in the beta period with various messages from the background threads getting lost on their way to the simulation. I can't prove that was happening, but I strongly suspect it, and based on some of the bug reports that were very intermittent, that would fit. At any rate, it's no longer possible, so the problem will either go away or not.

I'm mainly setting my sights now on bugs relating to the FakeEntity, and those related to the unit cap multiplaction insanity of which Zweihand has been exploring the nature. I know that multiplayer in the beta is quite broken right now, but I'm going to do another two rounds of ripping and tearing on that before I patch it fully back up. I have some great ideas to really put a stake through the heart of the main multiplayer woes that we've had for a while, and it should also lower bandwidth requirements.

Hopefully after all those bits are done -- hopefully this week -- we'll be back off the beta branch. And hopefully we'll have multiplayer in an official state, rather than a beta state, before the end of the month.

Meanwhile, this weekend I spent my time working on concepts for ludonarrative coherence in the next game I want to make (in super early preproduction right now), and that's a fitting new goal after most of a decade chasing procedural storytelling. I really hit the high note of that with The Last Federation, and AI War 2 has mostly been a technical and design and art reawakening/exploration/R&D period for me, so having a new mission for the next half-decade feels really good. October and November will be winding down AI War 2, but there will still be lots of little releases for it throughout 2022, plus whatever modders get up to. And in the meantime, I have lots to do here, myself!

More to come soon.
Enjoy!

Beta 3.505 Long-Term-Thread Efficiency

New daily beta! https://wiki.arcengames.com/index.php?title=AI_War_2:Finalizing_Multiplayer#Beta_3.505_Long-Term-Thread_Efficiency

1. Okay, there has been so much code review today, and for the longest time I didn't really find all that many things of concern. Yes I was able to make some improvements to correctness after pooling in some areas, but it was nothing that would explain the sorts of errors that Zweihand and Setsuna were reporting seeing intermittently. Which was a surprise, because I figured it would be in the external data for factions.

2. After working on verifying that was all okay and fixing up the parts that were not, Badger and I got to talking about the Zenith Trader case in particular. The Zenith Trader uses a data structure for its movement that most of the newer factions didn't use. That data structure was basically a copy of parts the main game data, for purposes of use on the "long term planning" AI/NPC threads. I had mentally flagged that category of data as being potentially problematic when I was making things pooled a bit ago, but a problem with it wasn't obvious.

3. Rather than start testing and debugging that long-term data copy, I decided to strip it entirely out instead. This isn't used by more recent factions for a reason. Essentially, as I've further developed my thinking on ways to speed up multi-threaded simulations (once you take perfect determinism off the table), it was clear that the long-term-data copy was a relic of the old deterministic way of thinking. This had been on my radar for at least a year as something I wished I could kill, but the game was working fine and so there was no sense rocking the boat. Well... now the game was NOT working fine, so it was the perfect time to strip that out.

So what was the result? Well... it's hard to say. Those behaviors that were observed were already really intermittent. This may have been the part of the code that was causing them, or this may have been utterly unrelated to the bug I was ostensibly chasing. But I do know one thing: this data and the way it was generated was one of the biggest slowdowns for the game, on the main sim-coordinating thread. I have wondered for years where the "performance leak as planet counts climb" was, and I think that as I was stripping this stuff out I got my answer. The amount of time spent calculating this stuff was staggering, and also completely unneeded. It's an excellent showcase of why my newer method for multithreading is so superior in the first place.

I'm running on a really beefy CPU these days, so I don't notice a huge difference since I already had full sim speed, but it does seem a little snappier to load the savegames at the very least, or maybe that's my imagination. I'll be curious to hear if there's a noticeable speed boost for anyone playing a more extreme game setup, or with a lower-spec machine.

----

This did, naturally, break all the code mods again. The Arcen-maintained ones and AMU are updated, but I didn't give SirLimbo any warning or any time to update his actual faction mods. Hey, this is a beta after all.

There is some more data along the lines of this long-term data (it's data for short-range planning, in this case), and I may look into stripping that out as well, thus breaking all mods AGAIN.

My final ideas for some of the problems seen in multiplayer are also something I plan on implementing soon, and those are going to require reworking all the notifications and intel tab entries and a lot of unit tooltip addenders, which faction mods also tend to have in abundance. It's a bit of a rough time to be modding via code here!

But the result is going to be a leaner simulation for singleplayer, and a vastly more performant and accurate situation in multiplayer, too. I'm not thrilled with how this is hitting my schedule, but hopefully some of these simplifications also remove the bugs that are lingering at the moment.

More to come soon.
Enjoy!

Beta 3.504 Multiplayer Achievements

New daily beta build! https://wiki.arcengames.com/index.php?title=AI_War_2:Finalizing_Multiplayer#Beta_3.504_Multiplayer_Achievements

So what's new?

1. All relating to Zenith Onslaught, 44 more achievements have been added to Steam.

2. Achievements should now work vastly better on multiplayer clients, and this paves the way toward a few other MP data changes that should benefit the MP experience soon.

3. You can no longer click outside of the gravity well to give funky invalid orders to your ships that also then cause save errors. Additionally, the cursor now follows you smoothly around the edge of the gravity well when you are out of bounds.

4. Unit rotations are remembered when you save and load, and units can be set to spin, or to face the target they are firing at, and a variety of things like that. The effect with all turrets is not perfect, but that's because of a baked in offset on them. The xml tools exist for anyone to fix the effect so that it's perfect, but I won't have time to do that one myself. Lots going on!

5. Huge amount of rework on the systems attached to units. There have been ongoing problems with them since we started pooling units in the last week or so. Those problems should all be solved now, knock on wood.

6. Some multi-threading things have been made so they work better and an accidental modder trap has been removed (after I found a Badger caught in there; I didn't even mean to arm the thing).

7. A bug in recent builds made it so that Humanity Ascendant was the only mode you could play, but now you can play Challenger or Expert or Deathwish or Sandbox properly again.

8. There's one very strange bug related to the "fake unit" that we are still chasing, and it's demonstrably not fixed but should give me much more informative error messages so that I can fix it tomorrow.

More to come soon.
Enjoy!

P.S. - It's my goal at this point to really get multiplayer that final bit done so that it's not in a beta state anymore. My hope is over the next couple of weeks for that to happen.

P.P.S. That way it's plenty in advance of the October DLC, which will be the final DLC for the game, paired with an AI War 2 Complete Edition. I'll still have some pretty frequent releases into November as I wrap up the last of the kickstarter items, and anything else that needs bugfixing. My plan is then do do light occasional features and fixes after that point, and to keep mod updates that people do getting pushed out to the full audience, but that will mark the end of the main era of AI War 2 development. For financial and family health reasons, I need to make a change, and I'm also really looking forward to working on new projects -- as well as ending this one on a really super high note, since the game has had something of a renaissance lately. (Those volunteers and such who know more about this situation should feel free to speak freely except on the health matters, for anyone who has questions.)

Beta 3.503 Multiplayer Sound

New build! https://wiki.arcengames.com/index.php?title=AI_War_2:Finalizing_Multiplayer#Beta_3.503_Multiplayer_Sound

This one is pretty much all about the bugfixes, and it absolutely SLAYS in that regard. Summarizing the high points:

1. There were still some async calls being made to unity asset bundles, which meant it could still deadlock. That now is not the case. So maybe no more deadlock?

2. Where we used to load around a thousand individual tiny icons from asset bundles, we now load eight larger dictionaries. This has a notable performance boost to the UI sidebars for things like the planet view, and it also loads faster, and it also is less likely to deadlock on load (lots of small calls tend to be the cause of that).

3. Several systematic reviews of unit-related code pooling variables have been done, and a number of omissions were found. These were responsible for a number of pooling-related bugs from the last three builds, and are now fixed. But saves from those builds may still have errors built in.

4. The lobby now behaves like you would expect regarding the camera, home planet selection, etc.

5. Drones work reliably again! And drone producers use less CPU to do their work, too.

6. There was a major bug in the delayed sound playback (which is not super frequently used, but is some for voice and such) that has been there since April 2018. People have been suspicious that it was hanging onto some sounds way too long and playing them late, etc. I found that bug -- possibly two contributors to it, anyway -- and slew them both. There is also now an indicator in the escape menu to tell you how many queued sounds there are, if you're feeling suspicious in the future of delays with sound playback. The core bug here was an embarrassingly basic logic inversion.

7. Multiplayer has had a lot of general bugfixes, as has solo play, but also it now has a whole new subsystem (not yet tested, ran out of time and this is beta) for the host to generate certain kinds of sounds (voice clips, etc) and propagate them to the client. This is helpful, because the client was sometimes incorrectly playing them or missing playing them. I plan to make some more changes in this area to lean on the host a bit more and reduce client data load and processing even further.

At the moment, all of the really major issues from the last month that I'm aware of are fixed. Now on to the reports of things that I am NOT aware of yet. ;) It is... inevitable. It is my destiny. /Palpatine.

More to come soon.
Enjoy!