AI War 2 v2.112 Released! “Steam Networking Complete” (Multiplayer Alpha Approaches)

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

You can leave a response, or trackback from your own site.

Leave a Reply