Month: September 2014

TLF Version 1.601-1.602 Released (Double-Wide)

Version 1.601 is refinement on a number of fronts.  Perhaps my favorite improvement is one that was suggested by jaxxa and which lets us see both the Basic and Detailed Info tabs at the same time on the solar map on screens that are 1440px or wider.  This cuts down on a lot of clicking back and forth on screens that can fit it, while not changing the experience at all on smaller screens.

There are a bunch of fixes to the armada management window in this version for betrayal mode, so you can really play that mode a lot more like it was intended to be played, now.  Sorry about those!

The last two Obscura ship bullet pattern designs are now in place thanks to Misery, and boy are they doozies.  These introduce the concept of “bosses,” which I think is pretty cool, and something we will likely explore even further as part of a theoretical future expansion.  For now it’s a really nice sub-component of the Obscura, in any case.

There are also a number of fixes relating to defending various kinds of planets against invader armadas using your own flagship.  These affect all modes of the game.  Oh, and the Pirate Raven flagships now should be harassing pretty much only you, not flying about after other ships like crazy.  So this is something where their extreme speed should no longer cause “I can’t chase them” issues.  The idea is that they come for you and you pretty much have to fight them broadsides for a bit until they speed off and then return.


Let us know how things are looking, if you have suggestions or bug reports, etc!

More to come soon. Enjoy!

This is a standard update that you can download through the in-game updater, or if you have Steam it will automatically update it for you. To force Steam to download it faster, just restart Steam and it will do so.

Click here for the official forum discussion about this release.

TLF Version 1.600 Released (Tsar Bomba)

Version 1.600 is gargantuan, and aptly named.  This addresses a lot of the longest-standing balance/clarity requests for the base game… all at one time!  This was kind of an all-or-nothing proposition, and it took a bit longer than I expected.  Still, it’s done now, and I’m super proud of how it turned out.

Science Revisions

60 very-boring-somewhat-confusing techs were removed from the tech tree, a ton of techs were changed quite substantially, and 19 all-new techs have been added.  The way that research happens is more balanced now, and proceeds at a more interesting pace.  Science Outposts have more of a clear and present purpose, and holding on to them can be key for both you and the AI to a degree that was never the case before.


Previously, the concepts of shipbuilding (for ships) and manufacturing (for buildings and outposts) were separate, and it was really confusing.  These have been merged together in a sensible way, and also completely rebalanced from the ground up, just like the science stuff was.  Manufacturing Outposts are also now more valuable, for you and for the AI, which again is great.

Ground Combat

Ground combat is something that could get absolutely bonkers out of balance in the late game, mainly because it was using multiplicative math instead of additive math.  This was the problem with the other areas that are being rebalanced here, too.  The ground combat is now balanced a new way, and much more sensibly.  In the early and middle game, the results are pretty close to what they used to be, although there is more variance now in terms of decisions made during gameplay having larger effects (mainly in terms of which techs are or are not researched).  And in the late game, the ground combat stays sane.

Space Combat Power

This was a huge thing to rebalance, and really important.  Previously there were a lot of things that were really unclear, and those 60 “mark level for specific ship” improvements were a big part of that.  In general there was just a lot of decentralization and special-casing here, so that it was incredibly difficult to tell what was going on at a glance.

But even more than that, the general feel of the progression of this has changed.  There are now distinct jumps in power, rather than a slow small increase in power that is hardly noticeable.  I spent a lot of time working on making the jumps in power something that were noticeable, but not so severe that they were frustrating or game-ending.  I think I hit a good balance, but let me know what you think.

Why does it matter that the jumps are noticeable?  Well, it helps with tension, honestly, and makes it so that it MATTERS if you are behind on techs.  The new system also rewards you a lot more than before for unlocking more flagship abilities, too.  The way that races handle the space combat power upgrades is now entirely different in terms of their tech research, and it can make science play a much larger role in space battles than it previously did.

Overall what this does is create desperate swings in power at various times, so that you have a chance to suddenly seize a temporary opportunity or you have to compensate for a poor oversight.  You have a number of years before this really becomes a factor, and the computer adviser already tells you about this in no uncertain terms, so new players should be fine.  But there were some players who previously just kind of ignored these techs and yet were still successful… I don’t think that will be possible anymore, which is certainly by design.  But at the same time, I believe the “this is so complex and also so incremental that I don’t care to look into it” feeling that was causing the players to ignore these techs has been resolved.

Better Insight Into Ground Power And Space Power

And on the racial power grid and at each planet’s details screen, you can now hover over the ground power number and see a breakdown of WHY the number is what it is.  That’s understandably been a longstanding request, and it was something we had already done in the past for manufacturing and science.

On the racial power grid, you can also see this same breakdown for the ship power multiplier.  This is something that is completely centralized, so there’s nothing needed anywhere else.  For ground power there is a local component for defenders, hence being able to see it in both places.

Military Outposts

Military Outposts have a completely different function, now.  They buff the space multiplier and the ground troop multiplier, end of story.  They don’t produce armadas or anything like that.  This plays a lot nicer with Betrayal mode, which is good.  But it also just makes more sense and is more clear with the AIs, too.  Even in the standard federation-formation mode (or Invasion mode, for that matter), you can use military outposts gifted to the right races to really help shore up their weaknesses.  Or ones for yourself to help increase your own flagship’s power.

The AI for how the races deal with outposts in general, and what they prioritize building, has been completely reworked.  The races are much better now at trying to shore up their weaknesses with the use of outposts, or to in general stack onto their primary goal (aka Thoraxians with space power).  Previously it was a bit more generalized, not as good.

Invasion Mode Updates

In the prior version, Invasion mode was basically “you die now” mode.  I had fixed the AI for the Obscura, and they were then just running amok.  In looking at how to fix that, I was realizing that I really needed to go ahead and switch to the additive model for the space power and science and all that jazz.  So hence the long foray into all the great base game updates that make this release so huge.  Anyway, with all of those things in hand, I also did a bunch of balance work on Invasion mode.

This mode is still quite hard, but how hard depends on the strategic difficulty you choose.  On normal, the Obscura tend to win within 60 years, typically.  They don’t lose. ;)  On Easy, they’ll still tend to win within 60 years, but sometimes they’ll lose even in observer mode.  Rare, but it happens.  On strategic difficulty modes higher than normal, the situation gets increasingly dire increasingly fast.  So basically you need to wipe out the obscura pretty quickly, or else you’re frankly going to lose.

In general when it comes to invasion mode, if you get into a long stalemate, you’ll eventually lose.  On the higher difficulties for this mode, the only way to win is to basically play a “rush” style of game, in the Starcraft sense, where you deny them resources and expansion power, and just cut them off before they get started.   Any way you play it, though, the strategies required for invasion mode really are incredibly alien to that of the main game mode.

Betrayal Mode Updates

Betrayal mode was already in better shape compared to Invasion mode in the prior version, but one of the big frustrations was trying to direct your ground troops around.  You could wind up in very long-term sieges just because your ground troops didn’t have armadas to ride over to the enemy planet with.

Fear not!  It’s now possible to place attack beacons on planets, which basically tells your servitor robots to hop into personnel pods and launch themselves at the target planet even without an armada escorting them.  This only takes effect when the enemy armadas are all destroyed, so you still have to suppress the armadas with your fleets.  But while you’re doing so, you can make it so that you get a constant influx of angry mindless robot slaves hacking away at your enemies on the surface, which I think is what we were all looking for in the first place. ;)


There’s also a variety of smaller stuff.  Various bugfixes to do with the expansion, balance updates to deal with the pirate ravens from the base game, and so on.  In observer mode there is also a new window that lets you spy on the current actions and research of all the races.  You can’t normally see this in the real game, but it’s quite interesting to look at in observer mode and understand better what races are planning before it happens.

It’s A New Paradigm

“Paradigm” is such a horrible word, but it’s appropriate at least.  I’ve incremented the version number to 1.6, since this version is so vastly different from the 1.5-era and before.  It’s a much clearer game now, I think, and I’m actually surprised just how much more fun I’m finding it to play.  Not that it wasn’t fun before, but it’s just so… immediate now.  I’m the lead designer, and things are immeasurably clearer to me as I play, making it so that I can make good decisions faster as a player.  If that’s the effect it has for me, I can only imagine (slash hope) that it has an even better positive effect for everyone else who hasn’t spent a thousand hours staring at this. ;)


Let us know how things are looking, if you have suggestions or bug reports, etc!

More to come soon. Enjoy!

This is a standard update that you can download through the in-game updater, or if you have Steam it will automatically update it for you. To force Steam to download it faster, just restart Steam and it will do so.

Click here for the official forum discussion about this release.

TLF Version 1.502 Released (Obscura Relicui)

Version 1.502 is out, and brings a ton of refinement to the new expansion based on player feedback.

Actually, there are some very good things for the base game, too.  Chief among those is that now the trade routes are vastly clearer in terms of why they can’t happen at a given time, and the logic for when and why they can happen is actually simpler now, too.  Since trade routes are so central to good relations between races, this is a big increase in clarity overall.

In the expansion, your fights with the Obscura are now not just a madness of shots flying everywhere.  It keeps the fights to four-at-a-time even if there are more ships stacked up to appear as existing ships disappear.   This means the fights are still very hard, but they don’t get insta-death impossible like they could previously.

Speaking of the Obscura, the Invasion Mode for the expansion has seen a tremendous number of updates and refinements based on early feedback.  The Obscura no longer use technologies like the other races do, and in general the balance and AI of the invasive race has been heavily altered.  Before it was possible for them to just tootle around being all mighty but not really going anywhere for 20 years.  Running the same simulation now (just observer mode without me interacting with anything), they wipe out 5 other races in 9 years.  Bit of a difference.

It may be that the invasion mode is impossibly hard now, I’m not really sure.  If so, the Obscura can certainly be tuned in terms of their stats.  But behaviorally I think they are now where they need to be, at any rate, so it’s a numbers game beyond that point.  Probably. ;)

Betrayal Mode for the expansion has also seen some fixes and tweaks.  Your new armadas were coming out incorrectly weak, and your general stats were mirroring that of the race you first took over too much.  The focus was more on Invasion Mode in this release, but that was also the one that needed more at the moment.

Let us know how things are looking, if you have suggestions or bug reports, etc!

More to come soon. Enjoy!

This is a standard update that you can download through the in-game updater, or if you have Steam it will automatically update it for you. To force Steam to download it faster, just restart Steam and it will do so.

Click here for the official forum discussion about this post.

Review games on Steam that you love — or hate. “Results are determined by those who show up.”

SteamDiscoveryUpdateWell, the new steam storefront is very interesting, and I think it’s a breath of fresh air.  For a lot of reasons.  It gives a lot more power to recommendations and peers and even news outlets.  This new curators thing is going to be awesome, I’ve wanted them to add something like this for years.

Still — it’s a brave new world, in other respects.  We’ve been on Steam for 5 years now, and (as tends to happen pretty much continuously) a lot of our past experience on how to be successful is out the window.  One of the things that I noticed immediately was the new way that user reviews are highlighted in terms of the number of positive and negative ones, basically like rotten tomatoes.  I think that’s an awesome thing to do, and way more useful than showing metascores.  Hooray!

I also do think, though, that not showing them weighted by how many people find a given review useful is a bit less helpful, though.  If there are 20 negative reviews that almost nobody finds helpful, and then 40 positive reviews that are found to be generally very helpful, you still come out with a 66% overall user score, which shows up as a mixed reception.  And that’s what has happened with The Last Federation, to my surprise.  Interestingly, most of the rest of our games kind of mimic their general reception, although Bionic Dues is higher-scored than I would have expected based on its sales numbers.

Given the sales numbers of TLF, though, and the general really positive reception to it, I find it a bit strange how the game shows up as mixed.  At the moment there are two negative reviews in the top FIVE pages of most-helpful user reviews for the game.

If you’re curious, this is the listing for Arcen as a publisher on Steam, where you can see the breakdowns for everything.



And So We Come To The Point

Much as with democratic elections, referendums, and primaries, you now have a voice on Steam.  This is very exciting!  But also as with voting in real elections, the results are determined by those people who show up.

You should never go astroturfing for anyone, and you should never go on a smear campaign against someone, either.  But I think that it’s now really important to give reviews, more than ever, to help light the way for those who come after you and wonder if they should spend their money.  Do you like a game?  Review it and give it at least a brief explanation.  Don’t like a game?  Review it and hopefully say more than “this is boring” or “this sucks.”  A sentence or two of articulation in a negative review (or a positive one, for that matter) really goes a long way.  Not everything has to be a novel.

I really feel like this is getting to be like  I absolutely rely on the user reviews on Amazon, because they are so helpful — the good, the bad, and the ugly.

The point is, for a lot of indies, there are either very few reviews, or no reviews at all.  And yet the games are selling, sometimes really well, and the experiences of those people just aren’t being shared at all.  That’s a bit of a shame, and I think makes it harder for people to find (and trust) the niche sorts of products that people around here like.  And I’m not just talking about Arcen’s products, either.  I know so many indie developers who struggle a lot more than we do — if anything, we manage to get far more press than the average indie developer, even if we aren’t in the upper echelon.


What This Means For Niche Games In Particular

I think that the more niche a game is, the more the reviews of that audience are important.  When you get a game that is, say, a super-hardcore historical strategy game (a genre that Arcen has never dabbled in, so I’m free to use that as an example), you can wind up with situations where the reviews are skewed.

Some people jump in and try it just because they like strategy games.  But boy, that game is too hardcore and the learning curve is steep and it’s not what they are looking for.  Those people SHOULD write negative reviews, with at least a short explanation saying why it was negative for them.  This can warn off other generalized strategy gamers who might make the same mistake.  But it’s not going to deter someone who thinks “you didn’t like the complexity?   That makes me MORE interested!”

Even so, you wind up with a skew towards the negative — and we see this on Amazon all the time with all sorts of products — because generally people with an axe to grind are the ones most likely to do a review.  Which really sucks, particularly if you’re a fan of a niche genre and you want to see more games in that genre.  If you DO like super-hardcore historical strategy games, and you want to see more good ones, then you frankly owe it to yourself to write a review.  If you find one you love, write about it.  Find one that is okay, but not stellar, write about that, too.  Find one that is in the genre you like, but that just doesn’t pull it off, write about THAT, too.

That way the people who are actually interested in the same sorts of things you are can learn from you — and if they reciprocate, then you from them.


This Is Incredibly Better Than The Apple App Store

This whole thing really democratizes the process, and I am so absolutely thrilled to see how this is happening.  Apple curates a few titles, and beyond that it’s mostly the top lists for things that are already popular.  That means you get a lot of derivative games, and a lot of games featuring birds because people do a lot of searching for the word bird by now.  Despite the plethora of games on the Apple App Store, far more than on Steam, the variety is incredibly more anemic there.

The awesome thing about the new Steam system is that it doesn’t fall prey to any of those problems.  And so I’m hopeful that we’ll see more niche games that actually find the audience they were seeking.  Not people who buy it by mistake and then hate it, and not titles that languish in obscurity despite overwhelmingly positive user reviews (ahem, Bionic Dues).

And hey, when the public generally doesn’t like a game by a developer (ahem, Shattered Haven), then that’s good for the developer to know, too.  And good for players.  We still get people who buy Shattered Haven and love it, but they go in eyes open thanks to user reviews.  They understand that by the market’s opinion is that it’s a rough gem at best, and something that only will appeal to a certain set of players (of which I am a member, incidentally — I in no way feel it’s a bad game, but I understand why some others do).  I would rather sell 100 copies of Shattered Haven to people who will actually enjoy it rather than 1000 copies to people who never load it up or who get angry when they try it because it’s not what they thought.


Reviews, reviews, reviews!  You don’t have to write long articles, and you don’t have to review games you haven’t really played enough to form an opinion on.  But if you’ve played a game and have an opinion — goodness, certainly if you’ve put a few dozen hours into it — you really ought to write a review.  It’s good for developers, and it’s good for players, and it’s what will make the Steam store the sort of environment that we all hope it will become.

I’m really optimistic about this new storefront, and it’s something that we’ve known was coming for quite some time.  I didn’t realize it would be today, or anywhere near this soon, but I knew that Valve was planning these changes and I just absolutely could not wait for them.  All change is scary, so I’m a bit nervous about this even though I believe it will be a good thing.  But the only thing that really scares me, honestly, is that people won’t take the time to do reviews for niche games.  If nobody does, or if only the people who aren’t really into that niche do, then those niches are only going to get smaller.

All right, that’s my sermon. ;)  I hope you find lots of new and exciting games with the new Steam store!


Click here for the forum discussion on this post.

The Last Federation: Betrayed Hope (Expansion 1) Beta Begins Now!


Betrayal Mode lets you completely reverse the usual game flow, working as a full planetary power trying to destroy your foes, not unite them. Invasion Mode sees you working with the other races to survive slaughter by a grave new threat. Plus new ships, abilities, music, and more!

Beta Launching Today On Steam And Our Site

The beta is now released on our site and on Steam, and in celebration of that there is a brief one-day-only 50%-off discount promotion being run on the base game.  There’s never been a better time to get into the game!  The expansion will remain in beta until mid-November, when the game will hit version 2.0 and the expansion will be considered fully released.

What Is The State Of The Beta?

The expansion is pretty much feature complete, although we are still working on 3 of the new ships.  Everything else is fully in place, although bear in mind that the tutorials for the new game modes will leave a lot to be desired on day 1.  We’ll use the early feedback on that to quickly get them up to snuff.

The other big thing is balance: the new game modes and new ships have been tested, but only internally, and this game is huge.  So you’re going to find stuff that we missed, particularly at first, and that’s why we’re doing a beta.

Beyond that, we’ll just be going through a nice relaxed balance and bugfixing period until the full launch of the expansion in mid-November.  Thank you for your support!

Features Added In The Expansion

  • Betrayal Mode: Ignore your ideals and conquer the solar system with armadas of your own!
  • Invasion Mode: Obscura invaders have already wiped out one race, and now threaten all the others. Can you rally a counterattack?
  • 8 Boss-like Obscura ships with crazy SHMUP-style bullet patterns.
  • 9 new fleet ships used by the AI with yet more interesting bullet patterns.
  • 2 new solar system backgrounds to choose from.
  • 12 new Offensive abilities, 12 new Specialty abilities, and 8 new Operational abilities.
  • New Quests for boosting RCI values or temporarily staving off diseases without a vaccine.
  • 19 new achievements.
  • 13 new music tracks!

About The Expansion

Betrayal Mode: “I am not the Hydral you thought you knew.  You thought I was content to stay on the sidelines as a minor mercenary?  You thought I would work for unification from the shadows?  The other races killed my people, and I will have vengeance, not unification.  I will drive every last one of them out of the system, and replace them with billions of mindless servitor robots to work at my command.  One day, perhaps, my servitors and I will discover a way to raise the dead.”

Invasion Mode: “Nothing unites enemies like an even stronger common foe.  The Obscura come from outside the solar system, and have already wiped out one of the 8 races.  The remainder are scrambling to protect themselves from this grave new threat, and I myself am incredibly outclassed when I try full frontal assaults.  I must rally the other races into unified action while striking from the shadows in my own ship.  If we can drive the Obscura menace from the solar system, a Federation will be easily established… with whoever survives.”

TLF Version 1.040-1.042 Released (The Need For Speed)

Version 1.042 is out, and it really does a lot of interesting things.

The biggest thing you will notice is that the speed of all the shots you fire is now doubled, making them far faster than enemy shots are.  This makes it easier to hit enemy ships that are running away or doing fast passes against you, and just feels more satisfying in general, too.  In general this is a lot more in keeping with other SHMUPs, I realized.  This may cause some balance problems in the short term (in your favor), but if that’s the case those can be ironed out.  The speed of the enemy ships and shots is really well tuned, so it’s just a matter of your ability to effectively deal damage to them, and their ability to take it, at this point.

A bunch of dispatches have been updated.  Various ones now pay you credits again rather than costing you credits, and a couple are more powerful and more clear.  There are a few other places where clarifying language has been added to help new players.

Also, this release removes a couple of exploits in edge cases with auto-resolve for battles, so that is more balanced.

Ongoing Updates

The support of the community, and the growth of it, remain amazing to me. It’s been a dry spell for the last couple of months in terms of the speed of updates on the game, but we’re going to be continuing to expand the improve the game via bugfixes, balance updates, and new content, and plan to do so for the foreseeable future.

As you’ve already seen, it won’t always be on a consistent schedule, but if you’re familiar with our post-release support for AI War: Fleet Command over the past 5 years, that’s basically the arc that we are currently expecting here unless something unexpectedly changes. There are only two of us programmers, so when we have to divert our attention to something, there’s not a lot of granularity available to us, heh.

At present we are also working on an expansion TLF (TLF: Betrayed Hope). The expansion for TLF is expected to be available for preorder through our site on Monday, with access to the current beta of the expansion. The actual full release of the expansion is expected to be in mid November, on all the existing distributors that carry the base game.

More to come soon. Enjoy!

This is a standard update that you can download through the in-game updater, or if you have Steam it will automatically update it for you. To force Steam to download it faster, just restart Steam and it will do so.

Free tool for game developers: Random Game Title Generator (with source code)

Bear with me, because this is going to sound strange.  First, let’s get the premise out of the way: naming games is hard, and it’s also incredibly important.

Why is it so important?  Well, take the following screenshot of Steam:


Unless you have banner rotation featuring, this is ALL people see of your game.  Even when your game is on sale, all they see is this, the base price, and the slashed price.  No screenshots, no trailer, no description, no tagline, nothing.  Just the little capsule image, the title, and the genres.

And you know what?  I’m okay with that.  Can you imagine how cluttered a storefront it would be if every game had even just a tagline?  Forget about it.  That would make people (including myself) glaze over even MORE when looking at the front page or the scanning through the discounts page.  The same is true of pretty much all the other major stores, incidentally, so this isn’t limited to Steam.

But something that Steam does that the others do not is give us information about our clickthrough rates when our game is in a featured spot, so we learn how effective this stuff is — JUST the information you see above, before anyone even gets to trailer or screenshots, etc.  The clickthrough rate for Bionic Dues was abysmal — about half the global average for games on Steam.  The clickthrough rate for The Last Federation was incredible, more than twice the global average.

Obviously you have to have a good trailer, description, screenshots, and GAME on the other end of that clickthrough, but still — if nobody clicks through, you can have a great game that everybody overlooks.  Bionic Dues is one of those games that gets a really positive reception, got respectable reviews, and yet is very much overlooked.  At least one reviewer told me flat-out that the name was awful, and that he was frustrated by that because he felt like it would turn people away from the game.

There are a lot of reasons games sell or don’t sell, so we can’t blame anything entirely on the name for any game.  If a game is good enough, it will sell no matter what you call it.  If everyone is talking about a game, that will also overcome a mediocre name.  But what about all the games that are not inherently darlings with the press, that are exciting to a niche audience, and that therefore rely on storefront discoverability?  There the clickthrough rate is really important as a first step, and if that clickthrough rate is too low then you may just be kneecapping yourself.

logo9Spectral Empire

After much brainstorming back in June, the name that we came up with for our upcoming 4X title was Spectral Empire.  I originally wanted something like Age of Ashes or Proto Colony, but those were really unpopular with our players.  And they didn’t really feel right to me, either.  After many many many attempts at names, we found one that was overwhelmingly popular: Spectral Empire.

That said, it’s only with a small group of our most dedicated fans, and in particular a group that was already weary from us trying out so many dozens of names on them.  There was some concern that “spectral” sounds like a fantasy game rather than a sci-fi one, but we all kind of brushed that aside as a cost of the process.

More recently, as we’ve been working on the internal prototype for the game, I’ve been getting more and more unhappy with the name.  I brought that up, and immediately some of the other staff said they’d been having the same feeling.  It wasn’t really a conscious thing at first, I don’t think, it was just a growing discomfort that wasn’t fully noticeable until a certain amount of time had passed.  (Which is one of many good reasons not to name your game at the last second, incidentally).

So now we are again trying to find a name for our 4X game with the help of our players, and thus far not coming up with anything that really immediately excites any of us.  Lots of brainstorming, which is great, but there’s nothing yet that makes ANY of us just go “oooh, that’s the one!”

Putting Together Puzzle Pieces

A name for a game can obviously be a variety of things.  It can be off-the-wall and eye-catching for that reason.  It can be pretty and symbolic and thus make people curious.  It can be funny.  It can be evocative of its genre, and thus pique interest in that way.

Of course, they all carry risks.  Off-the-wall is likely to miss a lot of people who have no idea what it is.  Pretty and symbolic may be a turnoff to some people who think it is pretentious and/or again have no idea what it is.  Humor is a fine line no matter what you do, since all people don’t find the same things funny.  And with “serious” games like the strategy or simulation genres, or even with hardcore first person shooters for that matter, a funny title can really be a mood-killer.  Being evocative of its genre is ALWAYS a good idea if you can manage it, but you risk delving too far into “Generic Game #56” names.  Let’s call it “Empire Combat: Age of War!”  Er… no.

So if you’re having trouble coming up with a name, and are anything like me, then what you wind up with is an increasing collection of possible words that can go in a name.  But what combination of them?  And in what order?  The more you brainstorm, the more potential words you wind up with, and the harder it gets to even consider all the various combinations.  I realized it was hitting a point where my brain just couldn’t do the job well anymore, and so I coded up a little tool to help.

Random Title Generator

First of all, you can download the compiled version here.  If that version doesn’t quite do what you need, then here’s the C# source code for it.  I hope it helps.

Now, how to use it?


The left column is your dictionary of interesting words.  If you decide you don’t like one after all, you can highlight it and hit delete or backspace.  You can save that list to disk with the button above the column, and you can load a list from disk with the other button above the column.  Easy peasy.

The middle column is kind of the “working column,” and gets used for two purposes.

Purpose one for the middle column is as a place to show potential game names.  If you hit the “> Titles From Dict” button, then it will make a list of randomized two-word combinations of words from the dictionary on the left.  Obviously your title may not be two-words, but when you see something like “Lords Cities” that almost-kinda makes sense, it can spark you to think “ah, Lords of Cities.”  And of course that name stinks too, but anyway my point is that just doing two-word pairings is I think the simplest way to inspire even titles that have more words than that.  If you disagree and come up with a better approach for multi-word titles, then definitely feel free to re-share your altered version of the source code and/or executable.

The right-hand column is actually a big textbox.  You can paste anything you want into there.  Paste the words of a sci-fi novel in there.  Paste the names of every strategy game ever made into there.  Whatever you like.  Then click Parse Text To Possibilities, and it will write the distinct words into the middle column.  That’s purpose 2 for the middle column.  When you do this, it will order the central column by the most frequently used words.  So if you post the collected works of Issac Asimov, for instance, you can find all the most commonly used words by him and potentially get some inspiration from there (after you sort through all the “if” “you” “he” “she” “it” clutter, of course).

When you want to move something from the middle column into the left-hand dictionary column, then select the row(s) that you want to move, and click the “< Words To Dict” button.  That will move just the selected stuff over, and clear those selected items from the middle column.

The Clear button over on the far right just clears the middle and right columns.

Anyway, so that’s how you build up your dictionary, and how you then generate potential names from that.

Also, I suggest the One Look Reverse Dictionary as an awesome resource.  It’s very much like a thesaurus in many ways, but the two are definitely distinct.  The reverse dictionary is a lot less literal and gives you some extended phrases and ideas that can be further afield.  It’s particularly useful for naming things.  I wind up using both quite a bit, and then the resulting words can just be fed right into the dictionary here.


Now back to trying to find a name that isn’t rancid for me…


Click here for the official forum discussion on this post.

AI War Official 8.007-8.014 “Now With Moar” Released!

This one is the culmination of a couple of weeks of no-joke improvements to performance.  Not only is the underlying timing for frames completely rewritten and improved, but the all-new sprite batching for our engine’s render pipeline is now in place, too.

Just what does this mean to you, as a player?  Well, even on fast machines there were previously some times where you’d get stuttering and slowness that wasn’t warranted, based on heavy CPU load.  That is now pretty much a thing of the past, and even really large battles run much faster.  Additionally, really huge battles would previously tank pretty much everyone’s graphics cards because it was just trying to render so darn much.  Now it’s incredibly efficient by comparison!

This is something that I’ve been wanting for a long time, so seeing how awesome the game runs now is really very satisfying.



This is a standard update that you can download through the in-game updater itself, if you already have 4.000 or later. When you launch the game, you’ll see the notice of the update having been found if you’re connected to the Internet at the time. If you don’t have 4.000 or later, you can download that here.

Click here for the official forum thread for this update.

TLF Version 1.034-1.039 Released (Eat Hot Lead!)

Version 1.039 is out, and boy is the graphics performance just through the roof on this one.  This release really comprises a series of releases from the last week, a lot of which were minor internal things relating to the upcoming expansion for the game (which should hopefully launch into a public beta on Monday, incidentally).

How big of a graphics improvement are we talking?  On high-end cards this can literally increase your framerate by several hundred fps if you have vsync off.  On lower-end cards I’m not sure exactly what it will do (it will vary), but it may let you get close to 60fps where you previously would have bogged down to 10fps if the screen was filled with bullets.

1.034 came out almost a week ago with some bugfixes, although we didn’t post about it at the time aside from on the wiki.  But it fixes an issue that was causing races to not ever build their Ultimate Buildings, as well as fixing a bug that made Core Coolers and Virtual Reality Centers not tell you what they do.

1.038 came out this morning, and adds new options where you can drop off captured pilots either as Expatriates or as Resistance Fighters.  This makes for a really nice alternative to either giving them back to their host race, ransoming them to their host race, or selling them into slavery.

Ongoing Updates

The support of the community, and the growth of it, remain amazing to me. It’s been a dry spell for the last couple of months in terms of the speed of updates on the game, but we’re going to be continuing to expand the improve the game via bugfixes, balance updates, and new content, and plan to do so for the foreseeable future.

As you’ve already seen, it won’t always be on a consistent schedule, but if you’re familiar with our post-release support for AI War: Fleet Command over the past 5 years, that’s basically the arc that we are currently expecting here unless something unexpectedly changes. There are only two of us programmers, so when we have to divert our attention to something, there’s not a lot of granularity available to us, heh.

At present we are also working on an expansion TLF (TLF: Betrayed Hope). The expansion for TLF is expected to be available for preorder through our site on Monday, with access to the current beta of the expansion. The actual full release of the expansion is expected to be in mid November, on all the existing distributors that carry the base game.

More to come soon. Enjoy!

This is a standard update that you can download through the in-game updater, or if you have Steam it will automatically update it for you. To force Steam to download it faster, just restart Steam and it will do so.

Click here for the forum discussion on this post.

Technical Notes: (Finally) Sprite Batching in our Graphics Pipeline

The really big update in the current version of The Last Federation is anew sprite batching system — and this is something that is going to be making its way into our other games soon, too.  This is a performance improvement that I have been putting off since 2010, and arguably since 2002.  I first ran into this sort of batching problem in 2002, and never did get around to solving it.  Then in 2008 I switched to using Direct3DX, which had sprite batching built in.  So that made it moot.  Then in 2010 we switched to unity, and lost that capability again.  Since that time I’ve made about every sort of graphics pipeline improvement under the sun except to actually do this one.

I’m not actually that lazy, but it’s a very difficult problem in our sort of pipeline.  It’s hard to explain why exactly, but it has to do with the way that we queue things for rendering, the way we load things off disk, and so forth.  Also the way we use the depth buffer and the way we use orthographic cameras, in some limited cases (those relating to things in an isometric perspective, which thankfully doesn’t apply to TLF but does to Spectral Empire and Skyward Collapse and I believe the overworld of Valley 2).

Avoiding Transient Memory Allocation

One of the chief problems (among many many others) that I was facing was trying to figure out how to do sprite batching without having to constantly reallocate arrays given that the number of sprites that go into an array can constantly change.  Something Keith said in an email last week gave me kind of a lightbulb moment and I realized that I could have pools and pools and pools of stuff.  We do a lot of pooling in general, but generally we don’t have pooled objects that reference other pooled objects that reference other pooled objects.  But here that’s exactly what we’re doing, and it keeps the RAM usage incredibly tight and efficient — and avoids hitting the RAM garbage collector, which impacts performance, and which was one of my biggest worries.

In other words, part of why I put this off for so long was that I felt like I could get some performance gains out of this, but that I’d also be making some tradeoffs in order to do so.  I’d be basically trading some transient memory allocation and CPU processing for less data passing between the CPU and the GPU.  The latter is an important goal, but the former is a dangerous thing to play with.  So with Shattered Haven I used RenderTextures to get around the GPU limitations, with AI War Keith coded a proximity-based CPU-side combiner for far zoom icons (and something similar is used on the solar map with fleets in TLF), with Valley 1 and 2 and Bionic Dues we came up with ways of combining tiles and using texture UVs to to do repeating patterns across smaller numbers of vertexes, which in turn reduced the draw calls.

So we made do, in other words, because I was unable to think of a solution to the transient memory allocation problem.  Well, that and some other things.

Matrix Math

One of the other things is that we use Matrix4x4 transformations for scale, rotation, and positioning.  Moving scale and rotation out of that and into our own code is simple enough, really.  But moving rotation out of that and into our own code in an efficient way that would not bog down the CPU was no small task.  We were going to have to give up some precision for that, do a lot of caching, and so forth.  Keith spent a goodly bit of time last week working that out, and got it fixed up.

And then a funny thing happened yesterday: I realized that I could still use the Matrix4x4 math anyhow, and that we didn’t need to do any of our own custom code there at all.  So it literally looks and works like it always did, because we didn’t wind up needing to use the reinvented wheel that we made for that.  I hate reinventing wheels, but I was unaware of a few things regarding matricies and Vector3s.  Anyway, Keith’s work was not in vain, however, because his implementation had yet some more ideas that I cribbed and used to make other parts of the pipeline code more efficient.  So despite the fact that that code didn’t wind up being used directly, it still had an impact on making the pipeline as fast as possible.

What Sort Of Benefits Are There?

In Spectral Empire, there is an orthographic view of a hex map where you see countryside, buildings, etc, etc.  The number of draw calls this can cause reach into the thousands if you zoom out much.  On my nVidia GeForce GTX 650 Ti on my main desktop, when I was all the way zoomed out prior to these updates, I could only get 27fps.  And that was actually clamping the zoom a lot tighter than I ultimately wanted it to be.  On the same scene, all the way zoomed out with the new updates, I now get about 200fps.

In The Last Federation, on my same card, I get around 800-1000fps when all the way zoomed out during a large battle with the bullet-crazy Obscura ships that are coming in the expansion for the game.  Those guys can fill a battlefield with literally thousands of shots on the screen at once, and performance understandably suffered previously.  I didn’t remember to check exactly what it was before the shift, but something sub-30fps is a pretty good bet.

Even in older versions of TLF, where bullets were not so plentiful, there were some folks on older graphics cards (in particular laptop ones) that could get bogged down during really heavy fighting and see their fps drop to the 10ish range.  That’s super frustrating, even considering that’s on a computer that’s 5+ years old (I think one was actually more than 10 years old).  Still, even my 4 year old MacBook Pro was dropping into the 40s during heavy fighting before, and I wanted that to stick at a solid 60fps minimum.

I can’t vouch for what will happen with all lower-end machines in terms of the improvements seen here, but I would expect that 30fps ought to be maintainable at the very least, and it’s possible that even during heavy fighting that 60fps can be maintained.

Why Are The Benefits So High?

Basically this lets us just use one draw call for a given texture/shader combination (or if it’s a hue-shifting shader, then texture/shader/hue combination), rather than one draw call per sprite.  This means that, depending on the scene, you can see an improvement that is an order of magnitude greater.  “Draw calls” are expensive in CPU/GPU time, because they have to pull a texture out of RAM (across that bus), push it to the GPU (across that bus), and then send some vertex data (which is very tiny by comparison).  Then the next time there is a draw call, it does the same thing.  There are other implications as well, a lot of which vary by your platform and how the shaders compile there.  But at any rate, the rule of thumb is “Draw Calls == Slow.”

When there are a ton of shots on the screen, there are usually not more than maybe 10ish actual distinct graphics.  Even if it looks like more, usually a given shot type has a dictionary of sprites, meaning that the number of textures is still like 10 for all the shots.  But if you’re seeing 2000 shots, so that would be 2000 draw calls, without batching.  Sloooow.

With batching, it only matters how many TYPES of shots you have.  If you’re using 10 types of shots, it doesn’t matter if you have 10, 200, 2000, or 5000 shots on-screen — there are still only 10 draw calls.  (Actually I simplified that a bit for the sake of brevity, but it’s not far off).  The faces and vertices and colors arrays (this is the per-sprite data) is really small (6 floats, 9 floats, and 12 floats, respectively per sprite in each respective array).  At some point if we start sending 5000 shots to the screen we start hitting a different problem — namely that of GPU fill rates, and a couple of other possible slowdowns that are intra-GPU.  But it’s a much less likely problem to hit than the bus problems, because even mobile GPUs are built for pushing out WAY more pixels and vertices than we remotely come close to.

Anyway, so the difference in performance is something that is hard to quantify.  In high-load cases it’s orders of magnitudes faster.  In low-load cases, it’s about the same speed as before (which is very fast).  Which is good news, because I worried that in those low-load cases we’d be actually getting slightly slower with an approach like this.  Another barrier to my doing this, over the past years.  But not so!  It’s pretty awesome, and I am super stoked to have this new piece of our pipeline in place after so long.

An Extra Challenge: Orthographic Views

The deal with orthographic views is that you have to be able to sort them from front-to-back in terms of tiles.  You’re giving a fake sense of distance.  So this means that some tiles of Grass Texture show up further away, and some show up closer.  Meanwhile, some textures of Mountain show up very far away, some closer, some even closer.  Aka, some of the tiles of Grass are behind those of Mountain, and some are in front of it.

With an orthographic camera, this isn’t too hard for us to handle, even with delayed-write draw calls (as opposed to single-thread immediate-mode draw calls, which we used to use heavily but no longer rely on for most of our stuff as of a year or so ago — though we do use a hybrid direct and batched system for our pipeline).  Anyway, we’re able to just set z positions on sprites in an orthographic camera, and the stuff with the lower z position renders first.  Easy, right?

Well… it turns out that this is really only per vertex batch.  With our new sprite batching, we have a bunch of vertices that are defining textured quads (aka a square sprite), and these are all at different z depths.  No problem whatsoever when showing Grass relative to other grass.  It works just like it always has.

But wait… when you show Grass relative to Mountain in an orthographic camera that is using a false 2D orthographic perspective… you wind up with the entire batch of vertices being drawn as a whole, and thus you wind up with “Z fighting” issues.  It’s a familiar problem to 3D programmers, and not one that I had properly considered prior to doing the sprite batching.  Basically, you need to use the z buffer in order to make sure that things further back don’t draw on top of things that are closer forward, since each mesh (collection of vertices and such associate with a texture) is drawn sequentially.

That sounds fine, but normally we don’t write to the z buffer or do z checks, because we’re using 2D and the order of draws just overdraws each pixel and it’s fine.  That works particularly well for 2D because if you have something with partly-transparent edges that is closer forward, it can blend well with the stuff behind it.  z buffer is an all-or-nothing thing per pixel.  That means that if a partly-transparent pixel from something closer-in draws, then whatever would have shown through that partial transparency from further back will NOT draw, if its overall mesh is drawn second (but it will if it is drawn first).  Hence: z-fighting.

Anyway, the overall solution was to create a new shader that I called Depth, which is a variant of our normal basic shader, but with z writing and z testing turned on.  That has to be used for any layers using a fake 2D orthographic perspective, but is not required on any other layers.  To go along this, any sprites being drawn with the Depth shader automatically skip rendering any pixels that have less than 50% opacity on them.  That keeps it so that the edges are sharper (unfortunately, but a minor thing especially when already layering tiles), but also prevents largely-transparent pixels from causing strange black lines and creases between tiles — and worse, black lines and creases that flicker thanks to z-fighting.

Oy.  Thankfully, even with the games that use a 2D orthographic perspective, anything that isn’t in the layer of sprites that is orthographic is free to continue ignoring the z buffer, and all the wonderful blending effects can remain just as they always have.  That’s important for things like special blend modes (additive blending, multiplicative, etc), which rely on combining sprites with partial transparency.  So the need for the Depth shader remains thankfully quite limited, as it has some slight drawbacks that would frustrate certain kinds of art (particle effects, for instance).


I do wish that I had done this years ago, but honestly at the same time I am glad that I never implemented this the wrong way, because that would have been a far worse problem than not doing it at all.  And because we had to be creative for all those years and work around not having sprite batching, we actually came up with a number of OTHER performance improvements which still are part of our engine, and which help us squeak out even more performance than we could get if we were using sprite batching alone.  So that’s a pretty big silver lining.

As it was, even once I had the epiphanies on how to handle this, it took me the bulk of four or five days to actually fully figure out all the details and get them implemented.  That’s an unusually large chunk of engine work time by Arcen’s standards at this point in the life of our engine, but it was definitely worth it.  At the time of this writing, The Last Federation and Spectral Empire now have this fully up and running, but I’ll be porting it to some of our other titles soon.  Mainly AI War and probably Bionic Dues.  Honestly our other titles are already so GPU-efficient using other methods that I don’t think they really need it.

Thanks for reading, and if you’re another indie developer I hope this gives you some ideas for potential solutions to your own sprite batching problems if you’re using a custom engine.

Click here to view the forum topic for this post.

Rock Paper Shotgun does a Humble Weekly Bundle and curates AI War — wow.

Well, holy #$#$%.  I am honestly humbled — pun not intended — by this one.  Check this out:

This RPS bundle is a career milestone for me. Several, really. First of all, the recognition that Rock, Paper Shotgun has bestowed on AI War: Fleet Command not once but many times is something that still amazes me. Being noted as their 2009 Game of the Year is an incredible high water mark for me.

And then I take a look at the list of other six games that they chose to curate for their list. And holy @#$#% all over again.


World of Goo perhaps stands out to me the most, because in 2008 it represented a sort of “indie platonic ideal” to me.  I had yet to release any indie games whatsoever, and I was only just discovering that my lifelong hobby (dating back to the early 90s) might suddenly be a viable career.  World of Goo, to me, represented the unattainable.  Some of my earlier blog posts musing about game design talk about that game a lot.  It was the first “indie” game I ever bought, in the modern sense.  I bought a preorder copy on PC, and then later bought it again on the Wii.

Then we have Armageddon Empires.  Vic Davis’s game came to my attention via the venerable Penny Arcade, where Jerry Holkins had gone on at some length about his admiration for it.  I’ve been a fan of PA since it was only a few dozen strips old, and so when Jerry started talking about any game, it always caught my attention.  Vic has actually made several awesome games; you should check them out if you have not.  Solium Infernum is such a sideways concept for a strategy game, and it continues to inspire me to move sideways, myself.

So, already when I looked at the roster of what games RPS chose to curate, this was not only a history of “highlights of the past seven years of [their] site,” it was already something that represented quite a bit about my own early heroes in indie gaming.

What else?

Well, AudioSurf is another with legendary status.

Amnesia: The Dark Descent was more of a contemporary, and one I bought and enjoyed until my nerve gave out.  One of my very favorite games is the venerable Silent Hill 2, and after playing SH2 and then SH1, I thought I could basically handle anything.  SH3 and Amnesia disabused me of that notion. ;)

Then there is Dungeons Of Dredmor, which somehow feels vastly more recent to me than 2011.  I remember hearing so much about it around the time that we were working on A Valley Without Wind (the first one), but I never really had time to play it.  It seems like most of the rest of my staff played it and loved it, though, and so when we started working on Bionic Dues they finally prevailed on me to play it.  And of course I was blown away.  I’m really proud of Bionic Dues, but one of the big goals for me with design there was “don’t be too much like Dredmor, because Dredmor will school anyone who is too much like Dredmor.”

And lastly, we have Teleglitch.  Way more recent, and the only one of the games in this bundle I have yet to play.  But I’ve heard great things, and obviously RPS gives it an enormous thumbs up, so you can’t really go wrong.  It’s now jumped way higher in my to-play list.


Anyway, I have never been known for my brevity, but normally I don’t write such an in-depth post about discount promotions.  This one is special to me for a lot of reasons, but the TLDR is this: because of the incredible company AI War finds itself in, and how and why it was chosen to be so.