You've probably been sitting around twiddling your thumbs in anticipation for the next release, savouring any piece of news or updates you get about it. So here's a Dev Blog to help take away those hunger pains, at least for a little while.
While we had anticipated the Faction Update to be ready to go by now, we'll talk a little bit about why things are currently taking longer than usual, and more importantly what the implications are.
For those unaware, the Faction Update is one of our largest updates we've ever undertaken so far on StarMade. It introduces procedural Factions; NPC ships and stations that spawn in the galaxy and begin to expand their borders.
We can already see the experiences that this update will bring to gameplay just by flying around in the dev builds. Mining fleets appear and travel around; Scavenger fleets appear after a battle to try and scavenge what they can from any ships that were destroyed. There's a lot more data and interaction between factions, with a faction news tab and faction diplomacy screens now. It's all slowly coming together.
Galaxy map showing different NPC faction territories This update has a lot of parts that all need to work together to not bring the whole thing down. One of the main problems is creating a huge amount of possible entities and systems without causing scalability issues. Each NPC system has its own fleets and more. All this needs to be organised and spawned correctly. Not only that, but the fleets all have to have something to do.
Overall, the goal with this update was not to just give the illusion of an alive universe, as that would have been a lot easier to do by just spawning in a few alibi ships flying by the player and then de-spawning again. Our goal is to give everything that spawns persistence and/or a purpose.
Looking at everything we’ve had to include, this is probably one of the biggest updates ever coming to StarMade.
System resource management
Contingent calculations
Spawning mechanisms
Fleet organisation
NPC operations like trading, production, mining and much more
Diplomacy and diplomatic consequences of decisions you make
Formating all the config files and directory structures for easy modding and expanding
Implementing everything above to best work in a networked environment without using huge chunks of bandwidth.
While on the surface it might look simple, there is a lot going on in the background, and you will feel that change as you are playing and continue playing in the same universe. The galaxy finally feels much more alive, and subsequent updates will only add to that. Scalability is maintained by dynamically adjusting the detail of the process according to where the players are.
New data testing NPC fleet spawningEverything relevant for NPC factions can be modified in config files: from position and expansion rate, to resource preferences (by blueprints) and diplomacy behaviour. You can define this by what actions and statuses a NPC faction will judge other players and factions. You can even set conditions and reactions for how a NPC faction is to react, such as which state of a relationship to declare war on, when to offer alliances, or as simple as having an action trigger the faction to send a message.
A lot of parts from past updates also come together for this one. The fog of war comes into play now as you can intercept trade routes that go through a scanned system you are currently in (a different scanning system will probably come in subsequent updates). Keep in mind that ships that the NPCs use for trading are real and they will have the cargo loaded that is being traded in that exact deal.
The update has all the features it needs for the 1st NPC Faction release, and we are currently in full testing, but as you can expect from what has been detailed above, testing this beast is not an easy task. Checking every detail is time-consuming especially when the results start deviating from expected behaviour. With this many variables in play, it’s harder than usual to track down gameplay and balance issues.
This means that we can't definitively say at what point the Faction Update will come out. When it does come out it will be at a stage where we feel it's ready to be released, making it a far more enjoyable release to explore and engage with.
For those who are interested in all the support going in for custom NPC factions, such as server owners or RP players, you will be happy to know there are plenty of config options at your disposal. Through the various directory structures and included files you'll be able to define your custom NPC factions and share them around. If you want to start exploring just what control you will be able to have, we suggest on the latest Dev Build you go into your StarMade folder and take a look at all that's been set up in the "npcFactions" folder. It gives you massive control over every nuance of every faction, as well as control over their spawning, etc.
Hopefully, that gives you a better idea as to the state of where things are at with the Faction Update. Yes, it's taking longer than expected, but we're choosing to take our time and get it right than rush it out full of unfinished features and littered with bugs. It's shaped up to be a very exciting update for StarMade, one that breathes life into the outer reaches of the galaxy. Here at Schine, we're all just as excited to see you all start exploring it as you probably are to see just how far reaching the ripples of this update will reach.
You've probably been sitting around twiddling your thumbs in anticipation for the next release, savouring any piece of news or updates you get about it. So here's a Dev Blog to help take away those hunger pains, at least for a little while.
While we had anticipated the Faction Update to be ready to go by now, we'll talk a little bit about why things are currently taking longer than usual, and more importantly what the implications are.
For those unaware, the Faction Update is one of our largest updates we've ever undertaken so far on StarMade. It introduces procedural Factions; NPC ships and stations that spawn in the galaxy and begin to expand their borders.
We can already see the experiences that this update will bring to gameplay just by flying around in the dev builds. Mining fleets appear and travel around; Scavenger fleets appear after a battle to try and scavenge what they can from any ships that were destroyed. There's a lot more data and interaction between factions, with a faction news tab and faction diplomacy screens now. It's all slowly coming together.
Galaxy map showing different NPC faction territories This update has a lot of parts that all need to work together to not bring the whole thing down. One of the main problems is creating a huge amount of possible entities and systems without causing scalability issues. Each NPC system has its own fleets and more. All this needs to be organised and spawned correctly. Not only that, but the fleets all have to have something to do.
Overall, the goal with this update was not to just give the illusion of an alive universe, as that would have been a lot easier to do by just spawning in a few alibi ships flying by the player and then de-spawning again. Our goal is to give everything that spawns persistence and/or a purpose.
Looking at everything we’ve had to include, this is probably one of the biggest updates ever coming to StarMade.
System resource management
Contingent calculations
Spawning mechanisms
Fleet organisation
NPC operations like trading, production, mining and much more
Diplomacy and diplomatic consequences of decisions you make
Formating all the config files and directory structures for easy modding and expanding
Implementing everything above to best work in a networked environment without using huge chunks of bandwidth.
While on the surface it might look simple, there is a lot going on in the background, and you will feel that change as you are playing and continue playing in the same universe. The galaxy finally feels much more alive, and subsequent updates will only add to that. Scalability is maintained by dynamically adjusting the detail of the process according to where the players are.
New data testing NPC fleet spawningEverything relevant for NPC factions can be modified in config files: from position and expansion rate, to resource preferences (by blueprints) and diplomacy behaviour. You can define this by what actions and statuses a NPC faction will judge other players and factions. You can even set conditions and reactions for how a NPC faction is to react, such as which state of a relationship to declare war on, when to offer alliances, or as simple as having an action trigger the faction to send a message.
A lot of parts from past updates also come together for this one. The fog of war comes into play now as you can intercept trade routes that go through a scanned system you are currently in (a different scanning system will probably come in subsequent updates). Keep in mind that ships that the NPCs use for trading are real and they will have the cargo loaded that is being traded in that exact deal.
The update has all the features it needs for the 1st NPC Faction release, and we are currently in full testing, but as you can expect from what has been detailed above, testing this beast is not an easy task. Checking every detail is time-consuming especially when the results start deviating from expected behaviour. With this many variables in play, it’s harder than usual to track down gameplay and balance issues.
This means that we can't definitively say at what point the Faction Update will come out. When it does come out it will be at a stage where we feel it's ready to be released, making it a far more enjoyable release to explore and engage with.
For those who are interested in all the support going in for custom NPC factions, such as server owners or RP players, you will be happy to know there are plenty of config options at your disposal. Through the various directory structures and included files you'll be able to define your custom NPC factions and share them around. If you want to start exploring just what control you will be able to have, we suggest on the latest Dev Build you go into your StarMade folder and take a look at all that's been set up in the "npcFactions" folder. It gives you massive control over every nuance of every faction, as well as control over their spawning, etc.
Hopefully, that gives you a better idea as to the state of where things are at with the Faction Update. Yes, it's taking longer than expected, but we're choosing to take our time and get it right than rush it out full of unfinished features and littered with bugs. It's shaped up to be a very exciting update for StarMade, one that breathes life into the outer reaches of the galaxy. Here at Schine, we're all just as excited to see you all start exploring it as you probably are to see just how far reaching the ripples of this update will reach.
Terra here. There’s a new Launcher update live (v2.1.1!) as it’s fairly notable, I’d like to take a few minutes to discuss its features. I’ll go into a bit more detail than what’s listed in the…
Changelog
First, I’ve added a changelog that will give a quick rundown of everything new with this (and all future) releases. As you’d expect, this will display once per version, and you may view it again within the options window.
Backup Dialog
While restating the changelog entries (especially in order) seems redundant, one feature in particular deserves specific mention: the backup dialogue. It’s always prudent to have a backup of your settings and data prior to updates, and this makes doing so simple and painless.
Clicking the [update] button presents the dialogue, which allows you to pick which sections to include in the backup, and its archive format. Alternatively, you can choose to skip the backup and simply continue with the update or cancel altogether.
The backup format defaults to .zip on Windows and .tar.gz on Linux and OSX. (From my testing, the latter seems to have a better compression ratio.)
After completion, the dialogue will tell you the location of the saved backup. To support concurrent installs in the future, this location is in a backups folder within your StarMade game directory, e.g. S:\Steam\SteamApps\common\StarMade\StarMade\backups or X:\games\StarMade\backups or ~/games/StarMade/backups
The backup’s filename is designed for easy reading at-a-glance, and includes the backup’s date, time, and from/to versions. It’s also ordered so the backups folder is automatically displayed chronologically when sorted by filename. The filename format does, however, make it slightly harder to interact with the archives via the command line. (Sorry about that.)
There is currently no pruning of excessive backups, though I will likely add this in the future.
Version Tracking
The launcher now reads the installed game version from the game’s version.txt file. This allows the launcher to detect Steam updates, as well as lays some groundwork for concurrent installs in the future. The launcher should support them as-is, but I will be adding official support in future updates.
Java Settings
A commonly-requested feature has been for greater control over settings passed to Java. Within the launcher options window, you will find a field that allows you to specify custom args to pass to Java. This field, of course, does not include memory settings, nor those passed to the game itself.
This version also fixes the inability to browse for custom Java installs.
Memory Validation
Despite its apparent simplicity, this was one of the more time-consuming features to add, requiring a rewrite of a decent amount of code. The memory settings window will no longer allow you to specify invalid settings or combinations, and will now alert you to what’s wrong. And perhaps more excitingly: it’s much more colourful!
Other Changes
This version also includes multiple backend improvements and significant updates to logging. It also fixes news post scrubbing, meaning there will no longer be swaths of text missing from the news feed.
Moving Forward
There are several large features I’ve been planning for a while, and now that the backup feature and most of the bugfixes are out of the way, I can begin working on them.
These include:
Consolidating the various options dialogues into a single dialogue listing different sections, thereby giving much-needed additional screen estate for more controls (e.g. backup and logging settings). This will also make the launcher cleaner and more intuitive by creating a central location for these settings and useful information (the installed game build, the launcher version, the user’s account name, etc.). As a secondary benefit, this will fix (or simply avoid) a few of the long-standing bugs, such as stacking dialogues.
Offline support, as the launcher currently requires a connection to the Registry to function. The recent DNS attacks highlighted why this feature is so important. Coupled with this feature will be status indicators for the Registry and http://www.star-made.org/.
Official support for concurrent game installs. While useful primarily for development testing, the community has shown interest in this as well.
Allowing the launcher to resize, and possibly breathing new life and style into its rather cramped (if pretty) design. I won’t list specifics as I’d hate to ruin the surprise.
And at last: Translations. As many languages’ translations will require more space than their English counterparts, this feature must come after the size and design changes.
The launcher has come a long way since its inception, and it still has a long way to go. Stay tuned for more updates!
Terra here. There’s a new Launcher update live (v2.1.1!) as it’s fairly notable, I’d like to take a few minutes to discuss its features. I’ll go into a bit more detail than what’s listed in the…
Changelog
First, I’ve added a changelog that will give a quick rundown of everything new with this (and all future) releases. As you’d expect, this will display once per version, and you may view it again within the options window.
Backup Dialog
While restating the changelog entries (especially in order) seems redundant, one feature in particular deserves specific mention: the backup dialogue. It’s always prudent to have a backup of your settings and data prior to updates, and this makes doing so simple and painless.
Clicking the [update] button presents the dialogue, which allows you to pick which sections to include in the backup, and its archive format. Alternatively, you can choose to skip the backup and simply continue with the update or cancel altogether.
The backup format defaults to .zip on Windows and .tar.gz on Linux and OSX. (From my testing, the latter seems to have a better compression ratio.)
After completion, the dialogue will tell you the location of the saved backup. To support concurrent installs in the future, this location is in a backups folder within your StarMade game directory, e.g. S:\Steam\SteamApps\common\StarMade\StarMade\backups or X:\games\StarMade\backups or ~/games/StarMade/backups
The backup’s filename is designed for easy reading at-a-glance, and includes the backup’s date, time, and from/to versions. It’s also ordered so the backups folder is automatically displayed chronologically when sorted by filename. The filename format does, however, make it slightly harder to interact with the archives via the command line. (Sorry about that.)
There is currently no pruning of excessive backups, though I will likely add this in the future.
Version Tracking
The launcher now reads the installed game version from the game’s version.txt file. This allows the launcher to detect Steam updates, as well as lays some groundwork for concurrent installs in the future. The launcher should support them as-is, but I will be adding official support in future updates.
Java Settings
A commonly-requested feature has been for greater control over settings passed to Java. Within the launcher options window, you will find a field that allows you to specify custom args to pass to Java. This field, of course, does not include memory settings, nor those passed to the game itself.
This version also fixes the inability to browse for custom Java installs.
Memory Validation
Despite its apparent simplicity, this was one of the more time-consuming features to add, requiring a rewrite of a decent amount of code. The memory settings window will no longer allow you to specify invalid settings or combinations, and will now alert you to what’s wrong. And perhaps more excitingly: it’s much more colourful!
Other Changes
This version also includes multiple backend improvements and significant updates to logging. It also fixes news post scrubbing, meaning there will no longer be swaths of text missing from the news feed.
Moving Forward
There are several large features I’ve been planning for a while, and now that the backup feature and most of the bugfixes are out of the way, I can begin working on them.
These include:
Consolidating the various options dialogues into a single dialogue listing different sections, thereby giving much-needed additional screen estate for more controls (e.g. backup and logging settings). This will also make the launcher cleaner and more intuitive by creating a central location for these settings and useful information (the installed game build, the launcher version, the user’s account name, etc.). As a secondary benefit, this will fix (or simply avoid) a few of the long-standing bugs, such as stacking dialogues.
Offline support, as the launcher currently requires a connection to the Registry to function. The recent DNS attacks highlighted why this feature is so important. Coupled with this feature will be status indicators for the Registry and http://www.star-made.org/.
Official support for concurrent game installs. While useful primarily for development testing, the community has shown interest in this as well.
Allowing the launcher to resize, and possibly breathing new life and style into its rather cramped (if pretty) design. I won’t list specifics as I’d hate to ruin the surprise.
And at last: Translations. As many languages’ translations will require more space than their English counterparts, this feature must come after the size and design changes.
The launcher has come a long way since its inception, and it still has a long way to go. Stay tuned for more updates!
At this stage, our current version is ready to be tested on the Official test server. It contains all core features where we can expand on with the upcoming releases. This is not the NPC update release, this is a development build available to the public, we're currently in a testing phase and need as many people to test it as possible. Please check out the development build. How to report bugs: http://phab.starma.de/w/create_bug_task/
These builds are only available on the Dev branch; it’s highly recommended that you use a different installation location or make a backup of your entire StarMade folder before overwriting it with a dev build.
Keep in mind that follow-up dev builds will most likely require you to also start a new world.
To get a fresh install of the dev build, select a different install folder in the launcher and switch to the dev branch.
Click on the gear (1), and change the build type (2) from “Release” to “Dev”, it is also recommended to use a separate installation directory (3). (Append a “DEV” to the installation path, to keep your original installation intact.)
The dev build has mechanics that will be disabled in the next public release, but are a necessity for experimenting with the NPC factions:
Debug menu, press F1 + B
Extra logging in your logstarmade.log files
Disabled Fog of War
Shows all fleets
Shows info in the galaxy map if you go into a NPC faction controlled system
Will send extra information to clients so it might be a bit more bandwidth intensive and prone to lag in multiplayer as long as in debug mode
In 2 weeks, we’ll release a stable public build for all servers to use.
NPC Factions
NPC factions are a new AI controlled entity in the game. They represent a faction in the main galaxy. Although it is possible to have them spawn in other galaxies too, we want to focus on the main galaxy to give players a good experience without endless repeating patterns the further you go out. While you will still be able to do that, and there might be something special to find, the action will always be in the main galaxy.
Each faction has a config and blueprints that are copied from a set of faction configurations located in ./data/npcFactions/. There you can also add your own custom factions or edit the existing ones. When making a new world, they get copied over into the world’s database ./server-database/worldName/npcFactions/.
We have a lot of new assets for the npc factions, possibly including the fleets from the contest. Some of them are already included in this dev build, and we’ll continue to do so for the full release. Expect to encounter A LOT of new high-quality ships across the universe. We will also be doing further contests to expand the arsenal of default factions.
Spawning
NPC spawning is the first step. On Galaxy creation the system will mark suitable spots, so it is efficient to select them later without having to iterate through every system and looking at its properties.
Normal NPC factions only spawn in star systems. However there will be special ones, that will also spawn in the void.
Initial Growth
A NPC faction can grow initially to simulate them being further ahead in time. It will use a particular algorithm to determine the way they will grow. They will look at potential resources which are now distributed in the universe. They will also prefer star systems over void systems for that reason. Depending on the faction’s config setting, they will also either try to be densely clustered or expand much more loosely.
Faction Demand
A faction wants to grow and to do that it needs blocks to construct the new stations and ships it will add. We call that “demand” and it’s calculated from the blueprints that have been made available to them. Each faction has an individual config and individual blueprints they can and will use. The demand is calculated not only considering the actual resources used but also what resources those blocks are made of. The result is weighed to determine what resources a faction prefers and how much.
Faction Inventory
An NPC faction will keep track of all its possessions in a central inventory. Its start inventory will be filled according to a faction’s demand. You can change that in its’ NPC Faction config to adjust which and how many blocks they will initially get.
Trade Prices
In the next step, the faction will set its trade prices. Each faction’s homebase serves as a trading station, which can trade with other NPC factions as well as other players. The prices are set by demand. That means it first will look at the faction’s general demand as determined in the previous steps, but also how much of that demand is satisfied. If the amount is within a certain range, which can be adjusted in its config, the faction will be trading it. It will also adjust the prices depending on how much of its demand is already satisfied. So for example, if the stock is low but there is a high demand, the faction will pay more for it and at the same time stop selling that item.
Contingent
A contingent is the collection of entities a faction could possibly own. Each NPC faction can spawn a certain amount and types of ships per owned system. The types and mass distribution can be defined in the config. There is also a distribution by distance from the home system. That means you can have the faction spawn smaller fighters and outpost stations on the outer edges of its territory, and bigger battleships and factory stations the closer you get to the home system. A blueprint can now be saved with a classification that determines its usage. These classes are then used to look up ships in a faction’s available blueprints. Blueprints will now also save their capacity, so they can spawn with items if necessary (trading ships), and a score based on salvage beams.
The contingent will adapt over time as the faction grows. Keep in mind that a contingent is only possible ships which are then spawned on demand when a player gets close.
This solution is used to combat scalability issues you would have if we would spawn everything when they’re created. It also helps to respond to player actions with specific ships.
Fleets
A faction has system fleets and general fleets. System fleets will include everything within an owned system of an NPC faction. This includes patrolling ships that will respond to any attack, mining, and other events. There are different fleet types like attack, defend, mining, scavenging and more that can be configured to contain weighted amount of ship classes. So if there is an asteroid that needs mining, the faction will spawn a mining fleet if the contingent allows it and send it to mine that asteroid. Patrol fleets are going from station to station and will react to any potential threat that is entering the system.
General fleets, however, are mostly for faction wide events. This includes actual trading fleets spawned on trading with the actual resources traded, but also attack fleets in case of war, scouts, scavengers and more. Those fleets can then be encountered outside of NPC territory.
We will also add more ways to scan for fleet activity. The dev build is very verbose currently and will show all information.
System Status
A system keeps track on what ships it spawned from their contingent. That means it also knows how many resources are invested at the time, including cargo. When a faction ship or station gets blown up, the amount of resources are considered lost.
This can then be used to apply a system status percentage of resources lost. This status will be visible to the player. When the status gets below a certain point, the system will be abandoned by the faction due to losses. If the status doesn’t go below that point, the faction will focus to replenish the resources first using their own inventory before considering expanding again. If the faction can’t replenish enough resources to bring the status back over a threshold, the system will still be abandoned after all.
Diplomacy
An NPC faction will also enable diplomacy both with other factions and with individual players. The diplomacy will be based on a point system. Those points can range between a minimum and a maximum value to represent the relation to another entity.
There are two ways that can modify your relationship points with a faction:
Status effects: these effects add or remove a constant amount of points based on status. This means that if you are in war with a faction, they will apply -X points to your score, though the points will go back to its original point value as soon as that status no longer persists. This means, that status effects don’t actually permanently change points. There are several advanced status effects available including having close territory to them, being at war with their allies, or positive ones for being at war with their enemies.
Action effects: these effects create modifiers that add or remove points permanently over time. In war for example, in addition of the status effect, you’ll also get a negative action modifier for starting the war. This modifier will slowly remove points over time as long as you are in conflict. This means that you will end up with less points permanently after the war. There will also be negative modifiers for any aggression towards the faction and their allies. So no matter how much they liked you in the past, if you start to kill their stuff, they will get mad at you depending on how much of that you do. Action modifiers, when no longer reset by repeating the action or by a persistent status will slowly fade out till it runs out of penalty points or enough time has been spent since then.
Actions include:
Attacking them, their friends or their enemies. Mining in their territory. Getting territory close to them. Going to war with them, their friends or their enemies.
Also some effects don’t have a modifier but trigger a reaction like offering peace, or offering an alliance.
Right now diplomacy requires a lot of testing especially with the action modifiers that change over time.
NPC Faction Turn
A NPC faction turn are triggered periodically and that amount of time can be adjusted in the NPC config. Currently it’s every 15 minutes. In each turn, a faction will do the following actions in that order.
Mining
For each owned system, the faction will simulate mining. Each system calculates a total amount of resources depending on what resources the system is rich in. The system then looks at its contingent and how many mining ships it has. It then calculates a score based on the blueprints used as mining ships and from that calculates how many resources are mined. This is in addition to the actual resources mined by mining ships when a player is close by.
Each mined system has a max amount of resources it can hold and how fast they replenish each turn. This resource status is then used for actual asteroid generation when a player gets close. Sectors with a low amount of available resources will not have many asteroids spawning or any at all if it is completely depleted..
Production
For each owned system, the faction will simulate factory production. It will take all the factory class stations it has in its contingent and craft items. The amount of raw resources used for production can be adjusted. The types of resources produced will again be focused on the faction’s demand (which changes based on the amount of systems the faction has). The production turn has multiple steps to ensure that higher level items are crafted from the lower level ones, that have been produced in previous steps.
Resupply
The systems will now use their faction inventory to resupply themselves based on resources lost. These resources are taken out of the faction inventory. If a system can not resupply to put its status above an adjustable value, it will abandon the system.
Consume
As an additional block sink and tool for balancing, a system consumes blocks each turn based on its contingent. This is used to balance the ability of mining and producing everywhere at once. It can be set to be temporary, so a new system will only consume items up to a certain point, which makes it handy to control faction growth.
Trade
One of the most complicated parts of a faction turn is the trading turn. A faction will look at all available trade nodes. Then it determines the price difference of its buy/sell price with the other node’s buy/sell price and how much can be bought/sold based on stock and money. From this difference the faction accumulates a trade value. The value also goes down the further the other node is away in the universe. That means that trading with far away nodes is only done when it is determined to be very lucrative or in very large amounts.
The best value is then selected and the trading will start. Depending on config settings a maximum amount of items to trade with can be set, so a faction can potentially do multiple trades at once.
Since an NPC trade is not dependent on the Trading guild, it will spawn an actual trading fleet that will be attached to the route. This makes it possible to raid NPC trading ships. We will be making the same for trading guild ships with some modifications for extra security. In the future we will also allow players to use their own fleets for trading so they no longer have to pay the trading guild, at the risk of losing their ships in a raid of course.
Expand
The last part of the faction turn is the expand turn. The faction will assess its current inventory and determine if it can expand. Expansion cost is dependent on the demand and how many systems the faction already owns. If the faction can expand, the cost is immediately consumed and the system is then taken.
Testing the entire system is extremely time consuming and complex, especially when you’re looking at the scale. Minor mistakes could have major consequences. In the coming days we’ll also add more in depth descriptions to the NPC Faction config to clarify what each config value exactly does.
At this stage, our current version is ready to be tested on the Official test server. It contains all core features where we can expand on with the upcoming releases. This is not the NPC update release, this is a development build available to the public, we're currently in a testing phase and need as many people to test it as possible. Please check out the development build. How to report bugs: http://phab.starma.de/w/create_bug_task/
These builds are only available on the Dev branch; it’s highly recommended that you use a different installation location or make a backup of your entire StarMade folder before overwriting it with a dev build.
Keep in mind that follow-up dev builds will most likely require you to also start a new world.
To get a fresh install of the dev build, select a different install folder in the launcher and switch to the dev branch.
Click on the gear (1), and change the build type (2) from “Release” to “Dev”, it is also recommended to use a separate installation directory (3). (Append a “DEV” to the installation path, to keep your original installation intact.)
The dev build has mechanics that will be disabled in the next public release, but are a necessity for experimenting with the NPC factions:
Debug menu, press F1 + B
Extra logging in your logstarmade.log files
Disabled Fog of War
Shows all fleets
Shows info in the galaxy map if you go into a NPC faction controlled system
Will send extra information to clients so it might be a bit more bandwidth intensive and prone to lag in multiplayer as long as in debug mode
In 2 weeks, we’ll release a stable public build for all servers to use.
NPC Factions
NPC factions are a new AI controlled entity in the game. They represent a faction in the main galaxy. Although it is possible to have them spawn in other galaxies too, we want to focus on the main galaxy to give players a good experience without endless repeating patterns the further you go out. While you will still be able to do that, and there might be something special to find, the action will always be in the main galaxy.
Each faction has a config and blueprints that are copied from a set of faction configurations located in ./data/npcFactions/. There you can also add your own custom factions or edit the existing ones. When making a new world, they get copied over into the world’s database ./server-database/worldName/npcFactions/.
We have a lot of new assets for the npc factions, possibly including the fleets from the contest. Some of them are already included in this dev build, and we’ll continue to do so for the full release. Expect to encounter A LOT of new high-quality ships across the universe. We will also be doing further contests to expand the arsenal of default factions.
Spawning
NPC spawning is the first step. On Galaxy creation the system will mark suitable spots, so it is efficient to select them later without having to iterate through every system and looking at its properties.
Normal NPC factions only spawn in star systems. However there will be special ones, that will also spawn in the void.
Initial Growth
A NPC faction can grow initially to simulate them being further ahead in time. It will use a particular algorithm to determine the way they will grow. They will look at potential resources which are now distributed in the universe. They will also prefer star systems over void systems for that reason. Depending on the faction’s config setting, they will also either try to be densely clustered or expand much more loosely.
Faction Demand
A faction wants to grow and to do that it needs blocks to construct the new stations and ships it will add. We call that “demand” and it’s calculated from the blueprints that have been made available to them. Each faction has an individual config and individual blueprints they can and will use. The demand is calculated not only considering the actual resources used but also what resources those blocks are made of. The result is weighed to determine what resources a faction prefers and how much.
Faction Inventory
An NPC faction will keep track of all its possessions in a central inventory. Its start inventory will be filled according to a faction’s demand. You can change that in its’ NPC Faction config to adjust which and how many blocks they will initially get.
Trade Prices
In the next step, the faction will set its trade prices. Each faction’s homebase serves as a trading station, which can trade with other NPC factions as well as other players. The prices are set by demand. That means it first will look at the faction’s general demand as determined in the previous steps, but also how much of that demand is satisfied. If the amount is within a certain range, which can be adjusted in its config, the faction will be trading it. It will also adjust the prices depending on how much of its demand is already satisfied. So for example, if the stock is low but there is a high demand, the faction will pay more for it and at the same time stop selling that item.
Contingent
A contingent is the collection of entities a faction could possibly own. Each NPC faction can spawn a certain amount and types of ships per owned system. The types and mass distribution can be defined in the config. There is also a distribution by distance from the home system. That means you can have the faction spawn smaller fighters and outpost stations on the outer edges of its territory, and bigger battleships and factory stations the closer you get to the home system. A blueprint can now be saved with a classification that determines its usage. These classes are then used to look up ships in a faction’s available blueprints. Blueprints will now also save their capacity, so they can spawn with items if necessary (trading ships), and a score based on salvage beams.
The contingent will adapt over time as the faction grows. Keep in mind that a contingent is only possible ships which are then spawned on demand when a player gets close.
This solution is used to combat scalability issues you would have if we would spawn everything when they’re created. It also helps to respond to player actions with specific ships.
Fleets
A faction has system fleets and general fleets. System fleets will include everything within an owned system of an NPC faction. This includes patrolling ships that will respond to any attack, mining, and other events. There are different fleet types like attack, defend, mining, scavenging and more that can be configured to contain weighted amount of ship classes. So if there is an asteroid that needs mining, the faction will spawn a mining fleet if the contingent allows it and send it to mine that asteroid. Patrol fleets are going from station to station and will react to any potential threat that is entering the system.
General fleets, however, are mostly for faction wide events. This includes actual trading fleets spawned on trading with the actual resources traded, but also attack fleets in case of war, scouts, scavengers and more. Those fleets can then be encountered outside of NPC territory.
We will also add more ways to scan for fleet activity. The dev build is very verbose currently and will show all information.
System Status
A system keeps track on what ships it spawned from their contingent. That means it also knows how many resources are invested at the time, including cargo. When a faction ship or station gets blown up, the amount of resources are considered lost.
This can then be used to apply a system status percentage of resources lost. This status will be visible to the player. When the status gets below a certain point, the system will be abandoned by the faction due to losses. If the status doesn’t go below that point, the faction will focus to replenish the resources first using their own inventory before considering expanding again. If the faction can’t replenish enough resources to bring the status back over a threshold, the system will still be abandoned after all.
Diplomacy
An NPC faction will also enable diplomacy both with other factions and with individual players. The diplomacy will be based on a point system. Those points can range between a minimum and a maximum value to represent the relation to another entity.
There are two ways that can modify your relationship points with a faction:
Status effects: these effects add or remove a constant amount of points based on status. This means that if you are in war with a faction, they will apply -X points to your score, though the points will go back to its original point value as soon as that status no longer persists. This means, that status effects don’t actually permanently change points. There are several advanced status effects available including having close territory to them, being at war with their allies, or positive ones for being at war with their enemies.
Action effects: these effects create modifiers that add or remove points permanently over time. In war for example, in addition of the status effect, you’ll also get a negative action modifier for starting the war. This modifier will slowly remove points over time as long as you are in conflict. This means that you will end up with less points permanently after the war. There will also be negative modifiers for any aggression towards the faction and their allies. So no matter how much they liked you in the past, if you start to kill their stuff, they will get mad at you depending on how much of that you do. Action modifiers, when no longer reset by repeating the action or by a persistent status will slowly fade out till it runs out of penalty points or enough time has been spent since then.
Actions include:
Attacking them, their friends or their enemies. Mining in their territory. Getting territory close to them. Going to war with them, their friends or their enemies.
Also some effects don’t have a modifier but trigger a reaction like offering peace, or offering an alliance.
Right now diplomacy requires a lot of testing especially with the action modifiers that change over time.
NPC Faction Turn
A NPC faction turn are triggered periodically and that amount of time can be adjusted in the NPC config. Currently it’s every 15 minutes. In each turn, a faction will do the following actions in that order.
Mining
For each owned system, the faction will simulate mining. Each system calculates a total amount of resources depending on what resources the system is rich in. The system then looks at its contingent and how many mining ships it has. It then calculates a score based on the blueprints used as mining ships and from that calculates how many resources are mined. This is in addition to the actual resources mined by mining ships when a player is close by.
Each mined system has a max amount of resources it can hold and how fast they replenish each turn. This resource status is then used for actual asteroid generation when a player gets close. Sectors with a low amount of available resources will not have many asteroids spawning or any at all if it is completely depleted..
Production
For each owned system, the faction will simulate factory production. It will take all the factory class stations it has in its contingent and craft items. The amount of raw resources used for production can be adjusted. The types of resources produced will again be focused on the faction’s demand (which changes based on the amount of systems the faction has). The production turn has multiple steps to ensure that higher level items are crafted from the lower level ones, that have been produced in previous steps.
Resupply
The systems will now use their faction inventory to resupply themselves based on resources lost. These resources are taken out of the faction inventory. If a system can not resupply to put its status above an adjustable value, it will abandon the system.
Consume
As an additional block sink and tool for balancing, a system consumes blocks each turn based on its contingent. This is used to balance the ability of mining and producing everywhere at once. It can be set to be temporary, so a new system will only consume items up to a certain point, which makes it handy to control faction growth.
Trade
One of the most complicated parts of a faction turn is the trading turn. A faction will look at all available trade nodes. Then it determines the price difference of its buy/sell price with the other node’s buy/sell price and how much can be bought/sold based on stock and money. From this difference the faction accumulates a trade value. The value also goes down the further the other node is away in the universe. That means that trading with far away nodes is only done when it is determined to be very lucrative or in very large amounts.
The best value is then selected and the trading will start. Depending on config settings a maximum amount of items to trade with can be set, so a faction can potentially do multiple trades at once.
Since an NPC trade is not dependent on the Trading guild, it will spawn an actual trading fleet that will be attached to the route. This makes it possible to raid NPC trading ships. We will be making the same for trading guild ships with some modifications for extra security. In the future we will also allow players to use their own fleets for trading so they no longer have to pay the trading guild, at the risk of losing their ships in a raid of course.
Expand
The last part of the faction turn is the expand turn. The faction will assess its current inventory and determine if it can expand. Expansion cost is dependent on the demand and how many systems the faction already owns. If the faction can expand, the cost is immediately consumed and the system is then taken.
Testing the entire system is extremely time consuming and complex, especially when you’re looking at the scale. Minor mistakes could have major consequences. In the coming days we’ll also add more in depth descriptions to the NPC Faction config to clarify what each config value exactly does.
Due to the sheer scale of this update, the impact it has and the amount of parts it has to it, we're unfortunately not able to release the NPC update this week. However, we have created a video for you to watch, outlining how the NPC factions will work.
As mentioned in the video, sometime after the NPC faction update, AI will be revamped and upgraded on all fronts. We've been waiting for the NPC faction update to address an AI overhaul so that all parts can come together. We will also address and overhaul weapon/ship-structure/resource balances in subsequent update cycles.
Due to the sheer scale of this update, the impact it has and the amount of parts it has to it, we're unfortunately not able to release the NPC update this week. However, we have created a video for you to watch, outlining how the NPC factions will work.
As mentioned in the video, sometime after the NPC faction update, AI will be revamped and upgraded on all fronts. We've been waiting for the NPC faction update to address an AI overhaul so that all parts can come together. We will also address and overhaul weapon/ship-structure/resource balances in subsequent update cycles.
We're back with another Dev Blog to give you an update on how we're tracking. There's been some great releases thus far, and I for one can say I've very much been enjoying all the new Display Module updates.
However as much as logic updates are great, one of the most exciting additions recently is Fog of War. Not necessarily because of that feature alone, but because of what that feature is leading us into.
Now let's say this up front, the main reason for this Dev Blog is to inform you that our release cycle is changing for a bit. Up until now it has been a steady two week release cycle, and has worked great overall. Moving into larger development projects for the game though has seen these two week turnarounds become more difficult, and resulted in slower progress on these larger projects. To rectify this we are now going to be operating with a four week release cycle, at least for the time being. With more similar scale projects ahead in the development timeline you will find us choosing to swap to four week release cycles a bit more frequently.
Let’s talk about the development project that has spurred on this change.
NPC Faction Generation
At the moment StarMade’s default faction stations would randomly spawn on the start of a new universe and populate the galaxies. Additionally you would occasionally encounter pirate ships and a battle would wage. This has been the most basic NPC faction generation, but we have much larger plans for NPC Factions, so in revisiting the system everything has been built from the ground up.
There’s a number of aspects to NPC faction generation. Thinking about the playtime of games gives a rough look at how complex their NPCs need to be. A simple game like Counter-Strike, in terms of round time, means that any NPC bots just need a rudimentary understanding of how to play, rather than complex strategic calculations. Progressing to most real-time strategy (RTS) games and the logic and calculations and strategies that NPCs employ during gameplay is far more complex, as those games are often a lot more drawn out.
Now think about StarMade and consider a server that you could return to play on over days, weeks, months. All that time there’s additional NPC factions that will exist in the universe, doing their thing with their goals that they wish to work towards. It’s just scratching the surface to the breadth we wish to give NPC factions, resulting in a constantly evolving landscape of gameplay as time progresses. This is especially significant for singleplayer gameplay, and something that StarMade has been lacking thus far.
This is just the starting phase of all we wish to do with engaging content that evolves over time through gameplay. Setting a solid foundation for NPC faction generation is paramount to the stability of everything else planned. Hence the move to extend the release cycle periods.
If we picture NPC factions like a jigsaw puzzle, there's a lot of elements coming together…
Newly designed ships and stations for our Default factions (Trading Guild, Scavengers, Outcasts)
Numerous ship fleets from our fleet competition that will be for procedurally generated factions
Fog of War to encourage exploration, but also to hide what the other factions are doing, making it more engaging in the process depending on whether they're friend or foe.
Many new features for factions or that factions will be engaging with (e.g. the Trade Network)
A robust faction generation system to handle generation, exploration, expansion, gathering resources, diplomacy, etc.
There’s still pieces of the puzzle that will come later but for what is planned for our initial release of this new NPC faction generation system it’s still a very exciting release that lies ahead. Here's a sneak peek of what the process of development has been like, and remember that this are only screenshots from a basic simplified system for testing and isn’t necessarily a reflection of what you will actually see in-game...
Firstly, NPC factions generate in the galaxies. They randomly distribute and take a star system, where their homebase would be located once that feature is eventually added in. Looks something like this...
Then like actual players, they start to explore, expanding and gathering resources and claiming more for themselves...
In reality though, resources are a lot more random and so there's more value claiming certain areas rather than just the ones surrounding your homebase. So instead, the factions need to weigh up what is worth claiming over other star systems...
One of the benefits is that while players haven't explored areas occupied by NPC factions, and because of Fog of War, it enables all these calculations to happen very quickly through algorithms etc rather than physically loading every ship, every station. This means that there isn’t a performance hit compared to if every star system had to be loaded for processing to happen. The NPC factions exist virtually, as numbers and computations, for the most part. It's not until players approach where a NPC faction exists that all the number crunching becomes reality. Do the numbers say that that faction has consumed 50% of the resources in a star system, expect 50% less resources to spawn when you first visit there.
One thing to note as we look forward to the release of the new NPC faction generation system is that this won’t require a universe reset for your servers. In fact, existing worlds will help us in the initial implementation by being able to provide us more in-depth details about the generation process.
Thus far it's been a project happening behind the scenes as other releases have been coming out, but the switch to the 4 week release cycle will allow us more time to focus on building a robust NPC faction generation system that is something we can expand upon as we progress. It will see both singleplayer and multiplayer injected with a vast more content and that's not even going into the other stuff we have planned for StarMade.
It's a very exciting time and we can't wait for you to experience it.
We're back with another Dev Blog to give you an update on how we're tracking. There's been some great releases thus far, and I for one can say I've very much been enjoying all the new Display Module updates.
However as much as logic updates are great, one of the most exciting additions recently is Fog of War. Not necessarily because of that feature alone, but because of what that feature is leading us into.
Now let's say this up front, the main reason for this Dev Blog is to inform you that our release cycle is changing for a bit. Up until now it has been a steady two week release cycle, and has worked great overall. Moving into larger development projects for the game though has seen these two week turnarounds become more difficult, and resulted in slower progress on these larger projects. To rectify this we are now going to be operating with a four week release cycle, at least for the time being. With more similar scale projects ahead in the development timeline you will find us choosing to swap to four week release cycles a bit more frequently.
Let’s talk about the development project that has spurred on this change.
NPC Faction Generation
At the moment StarMade’s default faction stations would randomly spawn on the start of a new universe and populate the galaxies. Additionally you would occasionally encounter pirate ships and a battle would wage. This has been the most basic NPC faction generation, but we have much larger plans for NPC Factions, so in revisiting the system everything has been built from the ground up.
There’s a number of aspects to NPC faction generation. Thinking about the playtime of games gives a rough look at how complex their NPCs need to be. A simple game like Counter-Strike, in terms of round time, means that any NPC bots just need a rudimentary understanding of how to play, rather than complex strategic calculations. Progressing to most real-time strategy (RTS) games and the logic and calculations and strategies that NPCs employ during gameplay is far more complex, as those games are often a lot more drawn out.
Now think about StarMade and consider a server that you could return to play on over days, weeks, months. All that time there’s additional NPC factions that will exist in the universe, doing their thing with their goals that they wish to work towards. It’s just scratching the surface to the breadth we wish to give NPC factions, resulting in a constantly evolving landscape of gameplay as time progresses. This is especially significant for singleplayer gameplay, and something that StarMade has been lacking thus far.
This is just the starting phase of all we wish to do with engaging content that evolves over time through gameplay. Setting a solid foundation for NPC faction generation is paramount to the stability of everything else planned. Hence the move to extend the release cycle periods.
If we picture NPC factions like a jigsaw puzzle, there's a lot of elements coming together…
Newly designed ships and stations for our Default factions (Trading Guild, Scavengers, Outcasts)
Numerous ship fleets from our fleet competition that will be for procedurally generated factions
Fog of War to encourage exploration, but also to hide what the other factions are doing, making it more engaging in the process depending on whether they're friend or foe.
Many new features for factions or that factions will be engaging with (e.g. the Trade Network)
A robust faction generation system to handle generation, exploration, expansion, gathering resources, diplomacy, etc.
There’s still pieces of the puzzle that will come later but for what is planned for our initial release of this new NPC faction generation system it’s still a very exciting release that lies ahead. Here's a sneak peek of what the process of development has been like, and remember that this are only screenshots from a basic simplified system for testing and isn’t necessarily a reflection of what you will actually see in-game...
Firstly, NPC factions generate in the galaxies. They randomly distribute and take a star system, where their homebase would be located once that feature is eventually added in. Looks something like this...
Then like actual players, they start to explore, expanding and gathering resources and claiming more for themselves...
In reality though, resources are a lot more random and so there's more value claiming certain areas rather than just the ones surrounding your homebase. So instead, the factions need to weigh up what is worth claiming over other star systems...
One of the benefits is that while players haven't explored areas occupied by NPC factions, and because of Fog of War, it enables all these calculations to happen very quickly through algorithms etc rather than physically loading every ship, every station. This means that there isn’t a performance hit compared to if every star system had to be loaded for processing to happen. The NPC factions exist virtually, as numbers and computations, for the most part. It's not until players approach where a NPC faction exists that all the number crunching becomes reality. Do the numbers say that that faction has consumed 50% of the resources in a star system, expect 50% less resources to spawn when you first visit there.
One thing to note as we look forward to the release of the new NPC faction generation system is that this won’t require a universe reset for your servers. In fact, existing worlds will help us in the initial implementation by being able to provide us more in-depth details about the generation process.
Thus far it's been a project happening behind the scenes as other releases have been coming out, but the switch to the 4 week release cycle will allow us more time to focus on building a robust NPC faction generation system that is something we can expand upon as we progress. It will see both singleplayer and multiplayer injected with a vast more content and that's not even going into the other stuff we have planned for StarMade.
It's a very exciting time and we can't wait for you to experience it.