Two years ago, we had our first Unending Galaxy post mortem. It covered, for the most part, the financial and advertising aspect of things, with little regard to the game itself. While I don’t think that part needs much of an update (numbers have changed, multiply steam sales by 1.5 or so, but the general idea is still roughly the same), I think it would be interesting to cover the game, what worked, what didn’t and so on. Your input would be valuable too, so feel free to leave a comment about it. Just understand, this is NOT an official announcement about a sequel, while it will obviously happen at some point, we’re not remotely there yet.
Given that Unending Galaxy was my pet project, it’s only fair to start with the things I think worked. It also makes sense because getting the good parts out of the way first will help focusing on the things that need fixing in a sequel. I’ll use the current version as a metric, so we’ll ignore most of the bugs that plagued the initial releases. I’ll still touch that subject in the article, but it’s not the goal here. As a side note, and given it’s a ridiculously long article, let’s remember that English isn’t my native language, so I’m presenting my deepest apologies for the following massacre of said language.
Thematic and game genre
I tend to call Unending Galaxy a “space themed aquarium”. I know how it sounds, but I think it’s a fairly accurate description (which I would never use for marketing purpose, though). The general idea was to have an active universe (or aquarium) with AI ships, factions and creatures doing their own things, and put the player in the middle of it. The game could perfectly run itself to conclusion without player input. It has issues, sure, we’ll go over them in time (I will say that a lot), but all in all it worked. The fact you could “grow” as a player from a lone pilot to an active empire in what was technically a light 4X game was, and is still, pretty unique.
It might be a point of contention, and yes, more tool-tips and help boxes would have helped, but, given the scope of the game and it’s complexity, especially when you reach the 4X stage, it worked decently once you got through the steep initial learning curve. We use long established windows standards, making any menu item immediately recognizable. Of course, it had some issues we’ll go over in a moment, but globally, it’s to the point, colorful, and responsive. Simply put, menus were pretty decent, the shortcuts and day to day operations could have been streamlined and optimized a bit more, though. And yes, some couple options were missing, but given the scope and multi-faceted aspect of the game, it’s a decent enough job.
Early Space Empire Stage
I really think that the game shined the most in the early empire stage, as you’re colonizing your first star systems. Once you’ve figured the build order and get your first shipyard going, feeding your main control group, and start poking other factions was pretty satisfying. The “Lost Fleet” scenario is probably the best example, you start with just enough money and ships to claim a solar system and build most of your ship production chain. It’s a point in the game where you can go in a lot of different ways, while the “standard” path is explained both in the tutorial and wiki, the more you get familiar with the game, the more alternatives you’ll find to grow your small empire.
I’ll only be considering the latest version here (well, I do that for every subject, but it’s especially crucial here) and, again, it’s a point with pros & cons. While we could have gone done way more in this area, I still think that given the zero-budget, we managed to provide a decent variety, each major faction had unique characteristics, easy to recognize ships and a specific niche. From the Zerg-like AI Core to the extremely specialized Niliths, there was a default faction available for each play-style. And despite not expecting purely balanced factions (rip Human Federation), we still managed close enough to “roughly equal” all things considered. Another example is the (not playable) Swarm, event based space-insects playing by completely different rules and yet, which could take over large parts of the galaxy if left unchecked.
Okay, it needs an explanation but it wouldn’t fit in a title. Simply put, it’s the ability to influence the 4X layer at the layer below. While it wasn’t advertised in-game, you could destroy a faction’s ability to produce ship parts, or kill it’s economy by destroying solar power plants, influencing wars. Acting as a pirate, you could literally shape conflicts between the major powers. Probably more could have been done, but for a first try at that kind of multi-layered gameplay, it was pretty solid. The main issue was the lack of feedback (like news telling you that that faction X’s energy supply got halved by your actions), but it’s also a very difficult kind of feedback to provide accurately.
It’s not a secret that Unending Galaxy is heavily inspired by the X-Universe series. And I made the mistake to emulate the same production chains, most of which have no real use in game. While I somehow managed to make it work, it was an incredibly convoluted system, using “sink” stations/colonies to generate money and pirates to kill the overflow. To this day, I’m not sure of the purpose of most factories. At the 4X level, the ship part production chain was the only part that really made sense and worked as I wanted it to be. Some factions had luxuries resources that would reduce war wariness and that was another decently working system. On the other end, entire productions chains had absolutely no meaning beside flavor (slaves, drugs, food, medicine, pretty much everything else) and had to rely on sink stations to work at all.
I should have taken notes from Stellaris (sure it wasn’t out yet, but you get the idea) and kept it simple. Keep the ship production chain, the “happiness” chain, and add one or two more chains, like money or colony growth and keep it to that. Of course that would have made the world a bit more boring at the ship level, but we’ll get to that.
Another two edged sword with the economy and the world in general: Out of the (let’s say) 15.000 ships, the vast majority were traders, boring ships doing taxi missions from A to B. Sure it gave targets to the player and pirates, but it was also a LOT of CPU power used to just carry goods from A to B. A more focused economy with even 50% less ships would still have provided targets (more valuable ones to boot) while giving more leeway to implement more interesting stuff elsewhere.
Scale & Universe
I nearly put that in the good points, but it came at a cost. As I briefly touched before, hundreds of sectors and dozens of thousands of ships, all that handled in real-time, are very nice numbers to go by. But what we gained in raw numbers we lost in meaning. Destroying one or even ten of a faction’s transport ships had very little impact. Same goes for the maps which were artificially inflated by the nebulae (un-claimable pirate sectors). To be fair, those sector had a purpose and were handy for backstabbing enemy factions and staging invasions, but all things considered, half the map was empty space with little strategic value.
Simply put too large a map, while making easy to hide secret/special locations, makes sure no significant amount of players will find such locations (I stopped counting how many times I had to explain how to “summon” the Ceridan faction). Of course, it also makes map-making a nightmare. Same goes for ship count in general, too many ships reduced the value of each kill. I mean, battleships are supposed to be impressive, until you go across fleets fielding 50 of them. Combats were kinda impressive, sure, but also extremely messy, unless you were open to the idea of pausing every second and disable their navigation AI. And of course all that was extremely costly performance wise, even on top of the line hardware (and go explain that to someone who tells you that “GTA5 runs well on my system”).
Don’t get me wrong, having a large sprawling galaxy with a lot of ship is great, it’s just I probably went a tiny bit overboard in this game. Going back, I’d probably go for less, but larger individual sectors. Make it so that a large military fleet would be like 4-5 capital ships and a few dozen of smaller ships, and with the previously mentioned economic tweaks, having less transports, but way more valuable, with proper escort. That would leave more room for special stuff, like enclave sectors owned by randomly generated factions, special flavor sectors (ship cemetery, space anomalies, etc.), add proper guilds the player could join, and so on.
By event system, I mean those situation/random based events like Swarm incursions, the Ceridan invasion or the AI Core plot-line. Technically, that’s a good point, but so much more could have been done through that. Designing those events (and chains of events) has both been extremely fun and extremely tedious. Due to inexperience the underlying code was pretty cumbersome to deal with. There was way too few of them as a result and generally not deep enough. Here again, there’s an awful lot to learn from Stellaris on that particular subject.
While a LOT of the game is explained through the wiki and the tutorial, many systems are well hidden. Unending Galaxy is a complex game so it’s pretty difficult to detail everything, but it’s still a major problem here. Between the dual nature (ship based and 4X) of the game, and the fact that I wanted to give the player as much freedom as possible, it made some situations a bit difficult to grasp. In instance it was entirely possible to raze a whole faction to the ground without ever declaring war to it at the cost of a massive, hidden diplomatic penalties with all other factions. Again, in a pure 4X that wouldn’t have been something I’d have allowed, but the alternative would have been to force the player to declare “war” against any ship he attacks when he’s not a proper faction yet, which would have been even more problematic. It’s one example out of dozens. Of course it’s inherent to the game’s goal/genre. Compromises have to be made, but it makes things more confusing for newcomers.
It’s a general issue with the game, while you can do a heck lot to influence the galaxy through various low-key actions (like killing constructors, destroying a factions economy), the game won’t give you direct feedback about your actions. It might piss off some factions, and it will definitively have an effect, you just have to know it happened as you’ll never get a message of confirmation telling you that much. And to be fair, to this day, I’m not yet sure how I’d implement such a system, at least in a fail safe manner. Monitoring the player’s damage, I could at least catch some of such events, and post some general info about it in the journal, which would still be a big improvement, but it’s still going to miss some, even important ones.
And it’s only one of the opaque systems. Due to a lot of concurrent but disjointed systems, it has always been a pain to give the player proper feedback outside of local events.
Simply too easy to exploit. Additionally, it would have been nice to have the option for smaller factions to band together against bigger ones. It’s there to a small extent but nowhere close and efficient as what you can see in paradox games (defensive pacts). Such a system would have helped against the snowballing effect (AI Core, I’m looking at you) common to 4X games. Again, with economic change, key resources could have been traded between factions, or even sectors for that matter. It wasn’t all bad, and even AAA games tend to drop the ball on this part, but still, I could have done a better, less easy to exploit system here.
Basically everything before you become a proper faction. Well, I know that there’s no “true” hard cut between the two, but let’s say before you own your first solar system. Well, everything before that point is mostly trash to put it bluntly. Technically we have all the components of a Elite’like game. Trading, bounty hunting, mining, all that jazz. But it just isn’t fun in the slightest to play. The only salvageable part is playing as a pirate, with the dedicated starting scenario giving you the extremely fun to fly Manowar battleship. Yet the promise is enticing, playing in a dynamic universe with big AI factions fighting each other and given you missions. So what went wrong? Many things! 🙂
Firstly there’s an inherent problem with the genre itself, and I’m not going to make friends with everyone who’s nostalgic about Elite 1/2, but the “core” of the ship based space game is tedious. It works either when there’s a sense of wonder, when when you have an extremely good flight/combat model, a plot-line or scripted missions, and generally a mix of those points. Simply put, good games in this genre are good not because of the core gameplay, but because of the added stuff. It’s sorta true for every genre, but to different levels.
So you have to do everything very well for that part to work, and that wasn’t really an option. There’s a level of compromise to be had when you’re making something that’s handling the ship level, the 4X level and everything in between. Those compromise couldn’t accommodate something like a static plot-line. More importantly, there’s a lot of things that could have made this work, but which I couldn’t put in the game anymore because it was too late to incorporate (be it in code or financially, generally both). Initially I wanted to add guild systems akin to my X-Universe mods, which would have helped a lot, but couldn’t justify the time to do so. Better, more meaningful missions would also have been good, but here again, given the dynamic nature of the world, it’s easier said than done.
As much as that multi-level gameplay is something I’m proud of, I made a marketing mistake in setting the game’s settings to that layer by default. The game would have been way more successful if I had defaulted to the Lost Fleet scenario instead. I initially thought it was just too much to take in at once, and while it was certainly true before the addition of the tutorial, after that, it would have been its logical follow-up. Too bad it was already too late by that point for that change to be meaningful commercially.
Well, it’s not a secret that the game was never very stable, and even the current version suffers from admittedly rare, but still annoying crashes and compatibility issues with some hardware. It’s a multi-faceted issue that deserve a full explanation.
Firstly, Unending Galaxy is an incredibly complex beast. It manages 10.000 to 40.000 agents (ships, stations, factions) simultaneously in real-time with next to no abstraction. While it’s not the primary reason for said stability issues, it put them into context. To get all those things running properly, I had to cut some corners. I used weird systems while aggressively multi-threading the game. Multi-threading is already a complicated subject on its own, and not entirely fail-safe depending on the implementation. Coupled with such a level of optimization and my relative inexperience with the subject, it took its toll. That’s still something I progressively improved over time, but in a 120.000 lines of code large game, at some point, you have to get along with the fact that there are problems you can only “patch” instead of properly “fix”.
Secondly, the game was written in quite an antiquated programming language (Delphi). After 2 decades of working with it and owning a license, it was a no brainer for me to use it for UG when they announced “native” DirectX/OpenGL support. Sadly, their implementation was incredibly buggy. Even without that, it was pretty much a dead language outside of specific professional applications. I even had to rewrite parts of it to fix some of the bugs. Many issues were just out of my reach. Plus, Delphi changed ownership a couple times during development. It nullified my license, and the new owners expected customers like me to pay hundreds (or thousands) of dollars for mere bug fixing updates. That’s something I couldn’t afford (and quite frankly didn’t want to, paying for bug fixes is a step too far). As such, you can imagine that coders offering free libraries for audio or video also just gave up on it too, leaving me with extremely outdated sound and rendering systems I had to update on my own, which I couldn’t possibly justify, preventing me from fixing some hardware incompatibilities that are still plaguing the game to this day (even if it got better).
Finally, there’s a reason why the general advice to new game programmers is to “start small”. The only reason I could even finish Unending Galaxy is that I’m a programmer by trade. It doesn’t remove the fact that it was still my first commercial game. Those 120K lines of code could have easily been reduced to 30-50K today (maybe less) with my experience. They wouldn’t be necessarily be faster or better, but they would be much easier to maintain, for sure.
Of course I’m just listing the major points. I could go on and write a whole encyclopedia about each little rule and detail, what was good or bad, but that wouldn’t serve much purpose. I’ll just list a few notable items not worth a whole paragraph. The tutorial was too short and added way too late. One time help popups would have helped a lot of people to familiarize themselves with the systems (heck, integrating the wiki in the in-game help would have been great too). On the other hand, the liberty offered by the game is pretty great, and thinking outside of the box during wars is greatly rewarded, especially in the later stages. I’m also pretty happy with the general flight behavior of ships during battles, especially with carriers’ wings. While I could do something much nicer now, I still managed to prevent ships from stacking too much over each other without knowing about proper flocking systems. Ship and equipment diversity was also pretty nice, but at the cost of being pretty impossible to balance. Not that it was a major concern, but still. Technically, while the music is pretty decent, sound effects are extremely limited. Same goes graphically, sprites are decent but the lack of particle systems and special effects made the game feel pretty flat.
Globally, I’m happy with what Unending Galaxy ended up being like. On top of making a profit, it was a great learning experience on multiple fronts.