I think it’s a good time to summarize what has been done and what’s left to do regarding Unending Galaxy. This is going to be a long post, but hopefully more interesting than usual, that will go through all aspects of the game. Note that this is about the current in-house build and not the 0.5.5 demo. If it’s your first time on the website, you may want to check the product page first to know what I am talking about.
Feel free to comment and post ideas before we are out of the stage at which I still may consider new features and major changes. You don’t need to register to do so, I know most people don’t like Disqus but that was either that or wasting my time erasing loads of spam every day.
Game Engine & Code
Let’s get the technical part out of the way first. I am, roughly, happy with the current code. It’s far from perfect, but it can effectively take advantage of computers with multiple CPU cores. The rendering is really fast and can handle a few thousands of objects on screen at the same time, even with my outdated graphic card. It’s a bit too memory hungry for my taste, but that’s the price to pay for a game without any loading screen. Worst case scenario, I can produce a 64bit build of the game, but right now we are still way below the 2GB barrier even in a long game on a very large map.
There’s still a few issues to tackle here and there, but for a game of that scope, it’s quite stable, especially in the current in-house build. We still have some issues with very small and apparently well hidden memory leaks, but nothing to worry about.
Performance wise, there’s a few bottlenecks that need to be resolved before the game is shipped with the real map. But here again, nothing that would be a problem, it’s mostly old code for which I couldn’t find time to review and rewrite properly yet. And more importantly, so far everything is fully simulated, I don’t “cheat” by rolling a few dices for combats you’re not looking at. The game doesn’t spawn stuff out of thin air either, every ship, every pilot fully exists all the time.
Ships AI and Commands
There’s still room for improvement here, especially on the individual ship AI front, but nearly all the commands you’d find in any space game are implemented (but not all are accessible through the user interface yet). Ships can fly, jump, look for repairs, attack, flee, buy and sell stuff, protect other ships or stations, patrol a location, fly as a group and so on.
While most of the ships in the game are basically drones obeying orders from other layers of the AI system (either a faction or a station). I recently introduced “civilian” ships that have their own goals and jobs. Right now we have asteroid miners who collect ores from asteroids and sell them to the stations needing those resources. They have their own personal money account they use to hire escort fighters to protect themselves. We also have bounty hunters and pirate raiders. The first ones hunting bounties put on the head of people who broke the law while the others attack cargo ships and collect their loot. More of those ships will be introduced during the development, like the taxis or the slaver ships.
Apart from giving life to the universe, those ships contribute to the economy in ways that are not purely trade oriented. Also the way I built the system is quite nice: if, for instance, I had a “jump away if I risk dying” behavior to one of those AI, I can unlock this behavior for all the AI modules where such an order would be relevant with next to no additional code.
Actual ship combat is probably the part that need the most tuning. Right now, everyone is quite suicidal, don’t really try to dodge bullets, and they never try to run away when completely outmatched. That’s something I will of course improve, but don’t expect miracles either, fleet battles are more about numbers than individual ship micro management.
We still have a few windows to complete and glitches to fix, but it’s easy to use, mouse driven and quite powerful already. The player can easily locate, and order around any ship or group of ships (or even take control) with a few mouse clicks and shortcut keys. The RTS control scheme for the sector view is also quite nice but still lacking feedback, beside pure text, to acknowledge that commands have been registered. The end goal for fleet management and building is to have something very similar to Sins of a Solar Empire and I think we are getting there.
Much has been done, but still a lot remains. Factions can and will expand and fight for the most interesting locations on the map (based on resources and position), wars come and go thanks to the war weariness setting that prevent factions from staying at war all the time. They are able to manage their military ship production for both defensive and offensive purposes. It’s still a bit clunky but it kinda works. There’s no stroke of genius from them on the military front, but I have a few ideas to improve that quite a bit as well.
Each faction has its own laws, illegal trading wares, and behavioral settings. They can have a completely different economic system than the others with their own set of factories and stations (like the very hostile AI Core) or their own ships (most factions). We have passive factions controlling a single star system and that won’t expand, like the city states in Civ5. We also have the pirate “faction” working under a completely different set of rules, but still need some additional work to be properly implemented.
What’s still lacking is the diplomatic part. I made some important steps under the hood to facilitate things, but it’s not yet possible for a faction to bribe another or sign treaties, and there’s no real “sue for peace” to end a war, the war just stop when one of the faction has too much war weariness or has no fleet left to defend itself. That’s something that I will definitively focus on.
Trading and Economy
As everything else, it still need tuning, but it works ™. Prices are dynamic depending on supply, but not yet demand. Factions have their own bank account to buy and sell stuff. There are chains of factories to build the most costly wares. And trading ships come and go to supply the relevant factories and stations.
Even if most of you know me from my work on X2 and X3, I don’t like to draw comparisons to X-Universe games, mostly because Unending Galaxy is becoming less and less similar to it. But, in this instance, yes so far it works mostly the same way. Except that the production chains will be much shorter, there will be less wares to produce overall. Also ship and station production is directly tied (well, right now it’s disabled for testing purpose) to the economy. There’s ship parts and station parts factories, and said parts are used to build actual ships by the shipyard facilities.
From the player’s point of view, you won’t need to micromanage all your factories or wonder why one of them isn’t producing anything (usually because the dedicated supply ship is dead), you’ll set various parameters of price and range, and the factory will manage itself, replacing dead ships if needed. I also made sure that trading vessels won’t go through a hostile sector just because it’s a slightly shorter path. I am using A* path-finding for this task and trader ships will only take the dangerous route if there’s no better alternative.
The Universe Itself
The general map layout for the final map is done (hint, it’s not the one in the demo, it’s much bigger). I still have some tweaking to do, move a few things, and to hand place planets, suns and nebulas (they are randomly placed anywhere in the screenshot, which is not good).
As you can see the map is made of star systems (of various size) linked by lanes. Most factions build warp gates near suns, allowing fast travel from a star system to another. Moving from a sector to another is as simple as reaching the edge of your current sector. It’s not seamless, but at least, there’s no loading screen in between.
After having put much thought into the matter, I opted to add a jumpdrive type equipment soon. It will allow for short range jumps between sectors, but it will take both time to jump and to recharge. I want to avoid this feature to be a sort of invincibility switch while still giving the player, and the AI, a chance to flee from combat. That’s going to be tricky to balance properly, though.
Right now, as an individual pilot, the player can buy and sell cargo for profit, equip a mining laser and mine asteroids, hunt bounties, scavenge loot from destroyed ships. In addition to those activities, the mission system itself has just been implemented. So far I only spawn supply missions, but nothing prevent me from adding more mission types now. Missions are usually found in relevant factories and trading stations. But later on, you’ll also find them by talking to other pilots (like giving a hand to an endangered ship). With the money gained from those activities you can buy new ships and better weaponry, including the Constructor class vessels used to build your own stations and factories. It’s not yet possible to transition to a proper empire from this stage yet (more an oversight than a hurdle).
If you start the game as an empire, you can do all the above but also declare war and make peace with other factions, decide which sector to invade next. The rest is basically automated right now, stations, factories and fleets are build automatically. That’s of course something that will be improved upon. Still, I will let in the ability to delegate large parts of your empire management to the AI (within parameters) so you can concentrate on the stuff you like / need.
There’s still a few missing items that need to be completed before we can decently reach Beta stage.
- Sound effects (or at least, support for such effects)
- Proper player to AI pilot communications
- Save/Load the game
- Starting scenarios / profiles
- Basic diplomacy
- Proper empire controls
And, of course, loads of improvement to the existing features after that.
Other features that are being evaluated
There’s also quite a lot of features that I am currently evaluating, they may or may not make it to the final product or be introduced later in a patch or add-on.
1. One I’d really like to see getting in, is that planets and solar systems could be much more than pretty background images. Each inhabited planet could have a sort of “happiness” meter reacting to various parameters (war weariness, overall security, wares being traded and so on). On high happiness, the faction controlling this sector would receive bonuses in local production / taxes. On low happiness, the system or planet could revolt, spawn rebel ships or declare it’s independence altogether. Coding wise, it’s not really a big deal, but it’s going to be hard to balance properly.
2. There’s also the much more complex (code wise) idea of an (sort of) infinite galaxy. Basically, you’d still have the normal galactic map, but here and there would be spawned special wormholes. By using such wormhole, you’d arrive in another, procedurally generated, galaxy for you (and the AI) to explore. Said galaxy may or may not be already inhabited, be large or just consisting of a few sectors, and more importantly also have other wormholes leading to other galaxies.
On paper, this is exciting, but there’s the problem of art assets. I only have so many different planets and suns, and even by playing with the color palette, repetition is bound to occur. Not a deal breaker in itself, but it’s still annoying. There’s also the memory and performance issues, there’s ways around that, but that’s a lot of coding.
3. Procedurally generated factions. That’s mostly relevant if the first point is implemented, and the name says it all. With the engine I built, it’s quite easy for me to generate new factions on the fly. That would make the collapse of large unmaintainable empires possible in more believable way and also allow me to discard the “independent sector alliance” faction that currently manage the passive inhabited sectors for proper small factions.
TL/DR ? Things are going well, we are nearing the end of the Alpha status, but there’s still quite a few features needing to be improved. Proper beta release is still planned around September.