It’s been some time since the last major dev update article, so this is going to be a big one as we have a lot to catch everyone up on! First I’d like to say thanks to all the people who offered words of support recently when I mentioned on Steam that my dad had passed away. We’ve been working hard on the game since then and the big news is of course that we hit a major milestone with the release of V1.0, which marked the point at which Predestination officially left alpha and entered the beta release stage.
All of the gameplay is complete in V1.0, and we began a series of iterations and overhauls touching on almost every part of the game using your feedback. We’ve already deployed several hotfixes and our first gameplay iteration on the Resource system, and have started a whole series of other iterations across the game that should make it a lot more fun and cohesive. The upcoming V1.1 major iteration update will contain a total economy balance overhaul, new economic options, a sweeping rebalance of race bonuses, an overhaul to the Star Claims diplomacy gameplay, random event improvements, asteroid mining, planet gameplay improvements, a ship design overhaul, major AI improvements, and more.
In this dev update, we’ll briefly break down all of the improvements made in V1.0 and the subsequent V1.01 to v1.03 hotfixes. Then we’ll delve into the details of major iterative improvements we’re working on or considering for each area of the game.
We talked a lot in the previous dev update about what was going into the colossal V1.0 update, and now that it’s fully deployed and we’ve had time to work on bug-fixes for it, I’d like to break down everything that went into it and how it went:
Upgrade to Monogame: One of the headline features of V1.0 was a complete engine overhaul, including switching from the old and poorly supported XNA 3.1 framework to the latest version of Monogame. The switch took a lot of time but was successful, giving us support for 64-bit, Direct X 10+, the latest versions of .NET, new memory tools, and making it possible to release on platforms other than PC in the future. The upgrade did create a large number of new bugs in the code and we’ve been pretty focused on nailing those, and I’m happy to report that the latest build is now more stable than V0.9.
Score Screen: As mentioned in the previous dev update, we’ve added a score breakdown screen to the end of every singleplayer mission and sandbox game, which gives you a score and a star rating (bronze, silver, or gold). This was completed quite quickly and hasn’t caused any new problems in the game, a solid small feature.
Singleplayer Mission Changes: In order to accommodate the new score screen and give missions some replayability, we gave missions points for objectives, bonus objectives, selecting the official canonical ending of the mission, and optional hidden endings. All of these are fully adjustable in simple text files, so people modding their own missions will be able to make full use of this. This was pretty straight-forward to implement and has been very useful for us in implementing upcoming missions.
Challenge Map #1: We released our first challenge map, “The Time Trap,” originally designed by kickstarter backer Lee Newsum. You play as the United Colonies after they’ve unwittingly set off a Revenant booby trap — Stuck inside a time bubble, you’re constantly under attack by Revenant fleets that escalate in severity and have to find a way to survive. We’re extremely pleased with how this mission turned out, and initial feedback on it has been pretty positive! We also implemented a whole series of new mission tools to make this mission possible, which we can use in future story missions and challenge maps.
Fleet Combat Overhaul: This one took longer than anticipated, but was well worth the effort. A full list of the changes is available in the previous dev update, but essentially we completely overhauled everything under the hood in fleet combat. Weapon graphics and audio were overhauled, new tactical nebulae were added for star systems inside nebulae, Fighters and Missiles were simplified to make them more effective, missiles and bombs no longer need to be restocked at a space station, and you can now fight enemies blockading a planet. A robust new State system ensures that pesky (yet hilarious) bugs where the space station or planet starts flying around the map are a thing of the past, some major sources of memory leaking were eliminated, and Fleet Combat now feels smoother and more stable than ever.
Optimisations: We hadn’t done a major optimisation sweep across the game for quite some time, so I took some time to profile the game as it was running and figure out anywhere we could make performance savings. We managed to cut the memory usage of the game almost by half, reduce map generation and load times by over 30%, and dramatically reduced the rendering load of the System window and the Planet dropdown menus. I’m super pleased with how this has gone, it should help us support a wider range of computers and keep the game running smooth for people.
Most of the work since the V1.0 release has been fixing bugs and crashes as reports come in, but we’ve also made some general improvements based on feedback:
Resource Spawning: In our first significant iteration, we tackled a number of issues with resources and how they spawn on planets. On rare occasions, resources such as Coal, ancient ruins, or rare Coffee Beans could spawn completely surrounded by ore deposits, making them completely inaccessible. We revamped the placement code to group resources that can be harvested by the same structures together, and generate a border around dissimilar deposits so that they don’t overlap and become inaccessible. It’s possible to find Coffee Beans next to Fertile Soil deposits, for example, but not next to Ore. Resources are also now spread out more evenly across a planet and are more strictly limited to certain environments (fertile soil on Terran environment hexes etc).
Farming Improvements: We made a few changes to level the playing field in farming gameplay for different race archetypes. We added a new Cactus Plot resource that generates food in Desert environments and can only be harvested by the new Cactus Farm, a specialised Reptilian replacement for the standard Farm. The humanoid Farm has been renamed to AutoFarm and can harvest Fertile Soil and Land Animals but not Cactus or Fish. Humanoids can now research the Fishery structure to farm for fish on Ocean planets with very little Terran environment land. And Aquatic races can finally harvest Coffee Beans and grow food on ice or desert worlds with a new Algae Farm infrastructure, giving them a way to colonise those planets before terraforming them.
Ocean Planet Generation: We iterated on how planets are generated in the engine, with the specific goal of making sure that Aquatic races can never start with land under their starting city. This persistent bug had been squashed 3 or 4 times previously but always somehow managed to return, so we took the time to investigate exactly how it was happening and added special rules for Ocean planets to prevent it in the future. We’re confident that this bug should now never return.
Dynamic Descriptions: The descriptions on buildings and infrastructure can now contain variables and they will update to reflect changes due to new technologies etc. For example, Ore Refineries will now correctly update to state that they generate 3 metal per ore deposit in range when you research Carbonide Drills. This was reported as a bug by a few confused players who expected the tooltip to update, so we considered it an important quality of life improvement.
Starbase Improvement: When you start designing your own starbases, you can quickly find that the metal costs get way out of hand and it can be difficult to build them simply because a planet doesn’t have enough metal storage space. We also wanted updates to custom starbase designs to be automatically rolled out across a player’s empire, which again posed a problem due to the difference in metal cost. We quickly settled on a solution: All starbases now cost only 5,000 metal, and the BC cost of all modules and weapons added to a design have been doubled to compensate. We may revisit these costs when we do the upcoming economy iteration.
Optimisations: After the first round of optimations in V1.0, we released a number of other improvements in further patches. The planet generator’s procedural seed textures are now automatically pre-loaded and kept in memory throughout the game rather than being loaded only when generating a planet, for example. This increased memory usage by about 100mb (eating into some of the V1.0 memory savings), but reduced planet generation times significantly and solved a number of reported crashes.
Quality of Life Improvements: In addition to a dizzying array of bug and crash fixes, we’ve been implementing small quality of life improvements to parts of the game to make the game easier to play. Researched technologies are now unlocked as the first step in the End Turn code, for example, so the effects will apply on the turn that you get them and the user interfaces will all update automatically to reflect that (previously it took 1 turn for some effects to apply). We also fixed the problem with clicking on a star or fleet on the galaxy map when two stars or fleets were very close together, the game now works out which is closest to your mouse pointer and clicks on that one. Build New City buttons are correctly grayed out when you’re at the planetary maximum, and a number of issues with the city blueprint system have been fixed. A full listing of the bugs fixed in these updates can be found in the V220.127.116.11, V18.104.22.168, and V22.214.171.124 patch notes.
All of the core gameplay that will be in the final release version of Predestination is now in the game, but some of it will need improvements before it’s ready for release. We’ve been collecting your feedback for some time and compiling a list of areas of the game that could use improvements, and this is all being rolled into V1.1, our first major iteration. Work on this update is already well underway, several features have been completed and we plan to deliver them all as one big update as some of them are interdependent. I’d like to break down each aspect of the iteration now, and if you have any thoughts on these changes then we’d love to hear them.
A discussion thread started some time ago on the Steam forums about Predestination’s economy gameplay, and we discussed various changes that could be made to improve it. In addition to doing a balance pass on the economic gameplay, we plan to both improve the different ways of generating money and add new outlets for spending it. BC should be a universal currency that lets you cut corners throughout the game, something that you save up when you can so that it’s there when you need it.
The primary goal of this iteration is to make it very easy to make enough money to support a planet and run an expanding empire while giving advanced players a benefit for figuring out more efficient setups. The secondary objective is to make multiple viable strategies for generating money, which will vary between races and depending on what types of planets you find and races you meet. The plan to achieve this breaks down into the following major changes:
Purchasing Ship Production: We’re going to add a new feature that will let you pay BC to purchase ship production on the private market, so you could pick any ship that’s currently in your build queue and pay BC to immediately complete construction. Not only would this skip lengthy build times but it would also give you a way to build a ship even when there’s already something earlier in the build queue. You could rush-build a colony ship or survey probe to take advantage of a nice find, or combat ships to defend against an impending attack. Rushing ship production won’t be cheap though, as you’re not only paying for the metal but also the extra construction work.
Markets: One of the parts of the economic gameplay that we’ve had a hard time balancing is the Industrial, Agricultural and Energy Market buildings. These sell the excess metal, food, and energy produced by a planet on the open market for BC, but only once the planet’s stores are full. These used to be the best way to generate income as you could turn habitable planets into profitable farm worlds and molten planets into giant geothermal money-factories, but they were a bit too strong so we nerfed them. We plan to rebalance these so that they’re viable again, and provide a new Black Market racial bonus (for the Renegades) that makes them more effective.
Citizen Tax Rebalance: Citizen tax is intended to be the main way that non-robotic races generate the income needed to run their empire. Cities and infrastructure all cost upkeep in BC/turn, and taxing your citizens a reasonable amount should pay for that in practically every case. Right now you can break even at about 50% tax, but that feels too much compared to real life tax systems. We plan to just tweak all of these numbers so that tax is now optimal at 20-30%, that penalties will make 40-50% tax work in the short term but punishing for long term use, and that 60% or more tax rates can generate significant money but will start causing serious problems with escalating civil unrest. New racial bonuses to planetary economy size will also make certain races generate a lot more citizen tax, and the morale penalties from tax will be rebalanced.
Industrial Tax Rebalance: Industrial tax is intended to be a way to temporarily trade off your industrial growth and ship production capabilities for extra income, something that you do occasionally in order to save up for something big like a large ship. This is in a good place right now, but we’ll have to rebalance the numbers after we rebalance citizen tax and markets. Industrial Markets should pay a better rate than 100% industrial tax, for example, as they take up a large building slot.
Trade Routes: Trade routes currently cost 1BC/turn per route, and they are limited in range but not in capacity. We plan to experiment with adding capacity limits or scaling costs to make it more expensive to send huge amounts between planets. The goal should be that trade routes give you a way to make more efficient empires (e.g. have dedicated farming worlds) but to make it cost enough to make it a meaningful choice. We’re also considering having set up times for trade routes to simulate ships travelling with supplies, as right now it happens instantly. This would not only make trade routes more interesting but also make blockades a more destructive tactic. This feature will rely on us make the AI set up its own trade routes so you can disrupt their empires without direct combat.
Biosphere Change: All cities and infrastructure in environments outside your race’s primary environment are automatically enclosed in biospheres, which currently just add 1 or 2 bc per turn to maintenance costs. This was intended to encourage players to colonise their own race’s environment preferentially and be picky about planet selections, but that’s not always in your control as resource placement and planet rolls are pretty random. We plan to try removing these additional maintenance costs and exploring a few more options such as increased staff requirements or energy consumption. This should ensure that all planets are tax positive once they are up and running regardless of what types of planet you’ve found, and so should help you scale your empire up.
The racial bonuses in Predestination haven’t changed since race stats were first implemented, and we’ve noticed that some of them are unbalanced. The United Colonies’ Creative trait that allows them to research all branches of the tech trees can be super powerful, for example, while the Renegades’ Hardy ability that lets them live on Ice, Desert, and Ocean environments without biospheres is a bit crap. Now that the final gameplay is in place, bonuses such as +10% to food or metal production also feel pretty weak and will need to be buffed.
With this update we are giving each of the races an iteration pass. A full breakdown of each race’s new profile will be released in another article once the details are finalised, but the goal is that each race should feel like it plays differently and has one or more optimum strategies. Each race will have:
- Archetype: Each race has a core archetype (Humanoid, Reptilian, Aquatic, or Robotic), which determines the technologies the race has access to, its native environment, and major gameplay differences such as Robotic races having no tax gameplay and generating income via ByteCoin Miners. This isn’t changing, we’re happy with the archetypes as they are.
- Special Traits: Each race has one or more special traits, such as the United Colonies’ Creative feature or the Z’loq’s Warlord and Transdimensional traits. We’ll be looking at how powerful these traits are, adding some new ones, and changing some races’ special traits. The Renegades will get a new Black Market trait that makes markets more effective, for example, and the Kazzir will finally get a decent trait.
- Economy/Planet bonus: Each race gets at least one bonus to an empire-wide stat or planet-based stat, such as bonus research or metal production. In order to make each race play more uniquely, we’ll be revisiting all of these bonuses and making them much larger. 10% bonus food production may not make much of a difference to the strategies you employ, for example, but a huge 25-50% bonus definitely would! Races should get either one big bonus or two smaller ones.
- Ship bonus: Each race gets one bonus to some ship function, such as a bonus to beam weapons or armour hitpoints. We will also be making the AI take these bonuses into consideration when designing its ships and selecting research options, which should lead to each race being more unique on the battlefield.
- Penalties: Some races have penalties to balance out their positive traits and ensure that they play in a unique manner. For example, the United Colonies may get a lot of technologies to trade in diplomacy but they also get a diplomacy penalty that affects the value other races give to those techs, so you’re encouraged not to share. We’ll give each race a look over to see if any penalties are appropriate.
- Special Technologies: In addition to archetype-restricted technologies, we plan to give each race two unique pieces of technology that replace existing tech in the tech tree. These are big iconic technologies that races will want to hold onto and not trade away, as they will give big advantages to that race’s play style. For example, the Kazzir will get the Broadcast Tower from the singleplayer mission in place of the Entertainment Center, and the Holographic Decoy ship module in place of another tech. We’ll have more information on these in the upcoming article on the race overhauls, but we’d welcome your ideas and input in this area as we’re still designing these changes.
We recently added the Star Claims feature that lets you negotiate with the other races for exclusive ownership of uncolonised star systems. We’ve collected solid feedback on the feature and done a lot of internal testing and have now come up with a plan to improve it. We’re going to flip the Star Claims on their heads. Instead of individually negotiating the same claim with every race you’ve met, you will issue a global claim and races that don’t like you may choose to disrespect it. The design we have right now is as such:
- Universal Claims: Rather than being an agreement between two races, Star Claims will now be issued universally. A new Claim icon will be visible on the System window showing who claims it, and you can claim an uninhabited star system by clicking that button. The first race to colonise a star system will also gain the official claim to it, so AI races will know that you have an implicit claim on your star systems.
- Claim Limits: Each race will be limited to 1 or 2 star claims on uninhabited star systems, and we may give Warlord races 1 additional claim slot so they can claim a little more. When a claimed star system is colonised, the claim flag remains but no longer counts toward the claim limit, so you can claim another uninhabited star system.
- Diplomacy penalties: The AI will recognise when you’re trying to annex strategically valuable stars near its space and respond with suspicion. Each Star Claim you have issued on an uninhabited system within another race’s borders will decrease their diplomatic rating with you by 10-20, possibly more based on the empire’s leader personality.
- Territorial AI: The AI currently sends a claim request to any other race in range of a star system it wants to colonise, so with the new system it’ll just issue a global claim to the system if it has a claim slot left. Each AI will also have a rating for how much it respects the sovereignty of another race’s claims, so the Zloq for example would colonise your star systems without a second thought but the Renegades would be more cautious.
- Claim Violation: Violating a territorial claim by colonising someone else’s star system or an uninhabited system that has been claimed will result in a diplomatic penalty. This will work similarly to how breaking treaties or being caught spying works currently, with penalties ranging from a small favour adjustments and threats all the way up to cancelled treaties and war declarations if they hate you enough.
- Star Claim View: To make it easier to visualise Star Claims, we’ll be adding a new map control button to the galaxy screen that toggles Star Claim views on and off. This will display flags on claimed star systems to let you see which ones have been claimed at a glance when exploring the galaxy, and who they have been claimed by. We will probably take this opportunity to add a few more controls, such as displaying enemy Sensor areas.
Random events are a core feature in any 4X game, and in Predestination they take the form of Planetary Disasters, Revenant Attacks, and Temporal Rifts that can be investigated to find anything from free ships to bonus research. We recently changed Revenant Attacks to happen on a turn-based timer to keep tighter control over how often they appear and to use as part of the difficulty system, and now we plan to do the same with other random events. At the same time, we plan to iterate on the planet disasters, add positive planet events, add more random events, and improve temporal rifts:
Temporal Rift Improvements: Temporal rifts take several turns to open and then have an effect, some of which only occur if you investigate the rift (such as getting a free commander) and some of which happen anyway (such as ancient ruins appearing on a planet). We’d like to clean this up, so temporal rifts will only produce something if you investigate them and the other random events will be in a separate system like we did with the Revenant Attacks. We also plan to just improve the rewards from Temporal Rifts so that they always give something useful.
Positive Planet Events: Right now planets can experience disasters, such as acid rain or global warming if you have too many fossil fuel power plants. We plan to augment this system with more positive random events, some of which will be random and others that will act as rewards for good planet management. Examples include unearthing ancient ruins, finding more ore deposits, population booms, and permanent bonuses to morale or other stats. We will be using this as part of the difficulty rating system and the race designs if we decide to add a Lucky race trait.
The Asteroid Miner module currently just produces 25 metal/turn for a planet in the system, and there are no actual asteroid belts in the game. We plan to add asteroid belts as a type of planet and spawn them into some of the empty spots in generated star systems, and then Asteroid Miners will produce 25 metal/turn for each asteroid belt in the system.
This will make Asteroid Miners useless in systems with no asteroid belts, but extremely useful if you happen to find a system with several asteroid belts. We can also then make the Stellar Converter superweapon destroy a planet into asteroids rather than into a molten planet as currently happens. The Strip Miner module will be changed to produce 50 metal/turn for each uninhabited planet in the system. Mockup below (it won’t actually look like this, but something similar):
Infrastructure Build Queue: We’ve been investigating the idea of adding an Infrastructure Build Queue the same way we have for city buildings. If you place an infrastructure that you can’t afford the metal cost for, it would be added to the queue and appear as scaffolding while its cost is slowly accumulated. This would also solve the issue where a Tiny planet still needs a minimum of 5,000 metal storage to build a starbase. There are some problems relating to staffing infrastructure and which ones it should build first, but we’ll implement this and do some tests to see if it performs well.
[Complete] Soil Enrichment Iteration: The Soil Enrichment planet service currently lets you place new Fertile Soil deposits on the planet in exchange for some money and energy from the planet’s reserves. We plan to completely overhaul this, replacing it with a new option that lets you spend a large sum of money to boost the planet’s Organic rating. All food deposits on the planet (Fertile Soil, Cactus, and Fish) will be expanded by several hexes so that they become the size that they would have been if the planet had started with that organic rating.
[Complete] Seismic Excavation Iteration: Similar to the Soil Enrichment iteration, we’re changing Seismic Excavation to do the same thing with the planet’s mineral rating. This will probably still be limited to Barren planets, and we might add a small chance that planets excavated in this manner will blow up in a random event, turning it into a Molten planet or Asteroid Field.
[Complete] Oil Drilling Iteration: The Oil Drilling service currently lets you excavate a small area for underground oil deposits, but it feels clunky. We’ll change this instead to something where you can spend a large sum of money to excavate the whole planet at once, generating a number of fossil fuel deposits depending on planet size. This will of course only be possible on habitable planets, and we will be reducing natural oil deposits on several planet types to make this more necessary for robotic races.
[Complete] Simple Mode Editor: Last time we overhauled the ship designer, we added advanced editor tools for placing items on the ship hull, scaling, rotating etc. In the next update we’ll add a simple mode editor that lets you design a ship quickly by picking a hull size, selecting one of the pre-designed visual designs, and then dragging weapons and modules into a simple list. When creating a ship design, you will now choose between using the Simple Editor or Advanced Editor.
[Complete] Engine/Speed Improvements: Right now it’s not possible to design a very fast ship because all ships are limited to one Augmented Engine, but if we let you to add a large number of them then larger ships with their huge power cores would become faster than small ships. Instead, we’ll allow these to stack but create different sized versions for each ship that each use different amounts of power core and cost different amounts. This allows all ship sizes to have high speed, but balances that speed against losing more weapons on larger ships.
[Complete] Ship Armour Plating Changes: You can currently add individual standalone armour plate modules to your ship that increase hitpoints by a flat amount (e.g. Bytanium Armour Plating). On large ships, you can end up placing dozens of these on your ship. Instead we’ll replace these with a single stacking “Heavy Armour” module that increases your ship’s armour by +25% and with different versions for each class of ship to balance armour across all ship sizes just as we’re doing with Augmented Engines.
[Complete] Shield Emitter Changes: Shield emitters are currently individual modules of varying grades (Electron, Magnetic, etc) that block a certain amount of damage, then absorb the rest to a pool of hitpoints that regenerate 10% each combat round, and stacking multiple emitters adds their hitpoints together. We’ll follow the engine change model with this and create different sized shield emitters for each ship class, which use more power but also give more hitpoints. This essentially just makes larger emitters work the same as groups of them, but lets us tweak shield balance differently for different ship sizes. For example, we can give larger ships slightly more shield HP/MW or different recharge rates if we want to.
Ship Refitting: We plan to add a new Refit option to the build panel in the shipyard that lets you select a ship in the system and then pick a ship design of the same hull size to refit it into. This will immediately cost the money difference between the two ships, salvage all modules and weapons for 50% build cost in metal, and then put the ship into the build queue with the new design. Once it’s in the queue, you can let it build normally or buy it using the new ship purchasing mechanic. All ship crew and captains will be transferred onto the new ship when it’s complete, so you’ll keep their XP and bonuses.
Every feature in Predestination has an associated AI that knows how to use the feature about as competently as a human player, and we’ve kept these up to date with each update. Once all of these iterations are complete, we’ll have to revisit every aspect of the AI to ensure it’s still able to play competently, and build new AI routines for all the new gameplay. This includes but is not limited to:
- Asteroid Miner AI that decides when to build them and where to put them.
- Trade Route AI that figures out reasonable trade routes, sending food to harsh environment worlds etc.
- Ship Purchasing added into the War AI so they can buy some ships when under extreme threat and have a fighting chance.
- Temporal Rift Exploration AI, since all rewards will now require exploration.
- Updated ship designer AI to work with the new mechanics.
- Updated Star Claim AI to use the new mechanics.
Thanks for reading this enormous dev update, and I hope you enjoy the upcoming V1.1 Iteration update when it’s finished. This update should add some much-needed cohesion to the game and put us in a good position leading up to final release. As always, we welcome your feedback on anything in this dev update and if you are a kickstarter backer who hasn’t tried the game yet but would like to jump in at this point, please send us an email to firstname.lastname@example.org with the email address you used on Kickstarter and we’ll send over a Steam key or DRM-free download of the latest version, whichever you prefer.
— Brendan, Lead Developer