This is a massive update that brings with it an entirely new planet - Erekir - with a completely new tech tree. It would take too long to list all the changes and additions in this build, but here are the highlights:
- A new, separate (but incomplete) campaign on the planet Erekir with its own mechanics. - 100+ new blocks - New units - New items - New factories, turrets, distribution blocks, support structures, etc - New systems for "scripting" maps with logic blocks and objectives - A fog-of-war system, available as a custom map rule and enabled on Erekir - Countless tweaks, improvements and QoL changes - Countless bugfixes... and probably even more new bugs
The old command center and formation mechanics have been replaced with a 'RTS' command system. Holding [Shift] places you in 'Command Mode', which gives you RTS-like control over your units. Left-click to select groups of units, and right-click to order them to locations or targets.
Note that there is currently no way to RTS-control builder/support units present on Serpulo, like Poly or Mega.
Please keep in mind that the Erekir campaign is still completely unfinished, and covers less than half of the tech tree. While Erekir is nearly completely in terms of block/unit content, most things not covered in the campaign are completely unbalanced, and should be treated as such! Damage/speed/reload/etc values of end-game content are essentially untested placeholder values.
For an introduction to the new systems introduced in this build, play the campaign first. The content added in this update has not been properly tested in custom maps or PvP yet.
To test this build, you must switch to the v7-testing branch by right-clicking Mindustry in your Steam library, then, clicking properties -> Betas -> v7-testing.
v7 Progress Report
Introduction
As many have noticed, it has been many months since the last pre-alpha release, and nearly a year since the last stable release. To begin, I will attempt address some common questions about this release, and the status of Mindustry in general.
Why is this update taking so long?
Up until this point, all (pre-classic) Mindustry updates have been incremental additions or changes to existing content. Everything I've made has been designed to fit in with existing blocks on the Serpulo planet campaign.
In v7, this is no longer the case - I am adding an completely new planet - Erekir - with its own unique set of blocks, environment tiles, units, turrets, transportation, etc. Aside from certain items, everything is different - there is no re-used content from Serpulo, not even walls or conveyors.
This is a little bit like making the entire game over again. When it is complete, it will be the biggest single content update in Mindustry history. To give you an idea of the content volume, there are currently 70+ new build-able blocks that have been added when compared to the last pre-alpha, with more than 130 new blocks added total - and I'm still far from done.
In addition, I am making significant changes to many various mechanics (again) - the campaign, unit control, and logic, for instance. Keep reading for more information on these topics.
With all of these factors combined, this update will take much longer than normal to complete. Please be patient.
When will v7 be released?
I really don't know. While I already have a fair bit of content complete, I would estimate that it's only half done, if even that. Many mechanics are still in the "prototype"/"brainstorming" phase.
All I can say is, don't expect it anytime soon.
When is the next pre-alpha/alpha/beta release?
As mentioned above, I'm still early in the process of implementing content/mechanics for Erekir - it is not ready for testing, and will likely not be for a while to come. I would like to have the entire campaign complete before I even release an alpha build.
In short: Again, I don't know.
Erekir Content Preview
Below are some sneak peeks at content I've been working on. This is by no means a comprehensive list. Keep in mind that these units can (and have) changed significantly over the course of development - the final version may be radically different, or removed entirely!
Note: Many of these GIFs are taken from the #dev-previews channel on the Mindustry Discord. Consider following that channel for more frequent updates.
Units
The T1 core, and its corresponding core unit. This unit can repair blocks, but does not have any offensive capability.
Shielded walker unit. Only blocks projectiles from the front. Very much WIP - weapons and legs will likely undergo significant changes prior to release.
Small insect-like unit. No special abilities. Demonstrates a new unit animation system.
Hovercraft. Missiles are technically units that can be targeted, and will follow the player's cursor.
Yes, I'm finally introducing tanks. This further demonstrates the capabilities of the new unit animation system.
A smaller tank variant.
Blocks
As mentioned earlier, Erekir will have a completely different set of blocks from Serpulo. The production/crafting tree is still a work-in-progress, so I will not be showing it here, but here's what some of the distribution systems look like at the moment:
Ducts transporting items to Duct Routers. These routers only accept from one direction, and can double as sorters when an item is selected.
Duct overflow gates. Only accept from one direction.
Duct bridges. No linking or weaving allowed; output only in one direction.
Duct unloaders. Only input and output in one direction.
Beam "drills", connected with new orthogonal power nodes. Note that, while there are still certain ores on the ground in Erekir, beams are the primary way of gathering resources.
Unit Control
As many of you may know, unit control in Mindustry is terrible. As of the latest available version, there are four ways of controlling units, all of them with significant flaws:
Manual control: This is the obvious and most common way of controlling units; while effective, it only allows for controlling exactly one unit. Furthermore, once the unit ceases to be controlled, it resumes its normal AI, making this method useless for moving groups of units anywhere.
Formations: An unfinished, unwieldy and broken system. Not only do units constantly get stuck on terrain when in formation, but they can frequently bump into the main unit. Formations are also lost on commander death, subject to numerous unit type limitations, and feel extremely laggy even on low-ping servers.
Command Centers: Unwieldy, complicated, lacking precision. While they are effective to some degree in performing basic tasks like grouping together units, they are very imprecise (global control), tedious to manage (require building a block), and painfully limited (are unable to order units to attack specific targets).
Logic: A cursed creation. While technically the most powerful unit control method, it is orders of magnitude more complex than anything else in the game. Commanding units with logic either requires copy-pasting schematics you don't understand, or spending hours learning a bespoke programming language with very sparse documentation. Neither of these are acceptable. Even beyond the complexity, logic unit control is incredibly clunky, un-intuitive, and subject to limitations (like lack of proper pathfinding). Players should not need to know how to program to play this game properly.
Something had to be done. Thus, I have made the following changes:
Formations have been removed completely.
Command centers have been removed.
No logic blocks are available on Erekir. EDIT: Based on feedback, I will definitely be keeping it on Serpulo.
A new RTS-like unit control system has been introduced.
I've been hinting at adding them for a while, but after experimenting with the mechanics, I am confident that RTS controls are the best way forward.
Here's how this looks in-game, so far:
Now, I know that this raises numerous questions, such as:
How will this affect PvP?
Will units have sub-commands ("fire at will", "patrol"), like some other RTS games do?
Will builder/repair/miner units be controllable as well, and if so, how?
How will build assistance work without formations?
Does this mean that fog of war will be introduced as well?
How does the player switch between building with their unit, and commanding?
I will not be answering these questions, as I don't have a good answer to most of them - and even if I did, my answers could change over the course of development. All I will say is that, at the moment, I am trying to keep things as simple as possible. In my testing, even the current bare-bones RTS control system is worlds better than anything the game had previously.
Logic "World Processors" / "Map Scripting"
This is a relatively minor feature I've been developing for use in campaign maps. Essentially, they are processors for scripting maps. These can only be placed or interacted with in the editor, and are for map-makers only.
World processors can currently do the following things; I may add more functionality as necessary:
Spawn units.
Set blocks.
Get blocks/buildings at any location.
Create explosions.
Show the player notifications or mission objectives.
Pan and zoom the camera, for cutscenes.
Sense any block info without linking to it.
Set a limited amount of game rules, such as lighting, build speed and waves.
World processors are meant to be placed in a corner of the map; while they are blocks with teams, they cannot be accessed, shot, broken or hovered outside of the editor. Note that they are simply logic processors with special instructions - this is not a new language or scripting system.
Below is a simple demonstration of a "cutscene" implemented with a world processor. Note that the trigger is a button for simplicity, but in most cases, you would have the trigger be something else out of the player's direct control.
Some examples of what can be done with world processors:
Display a special objective for the player, e.g. "destroy building X", sense when the block is destroyed, and perform actions based on that event.
Spawn custom waves in any location based on time, or any other variables.
Activate enemy base functionality only when the player has achieved a certain objective, like surviving X amount of waves.
Day-night cycles in custom maps.
"Defense" objectives wherein the player core is destroyed if they fail to prevent a different block from being destroyed.
Internal/Modding API Changes
In addition to all of the above, I've also been working on improving the modding API, fixing inconsistencies, and adding more features for modders to utilize. Unfortunately, this also comes with the downside of breaking the overwhelming majority of older mods - after discussing this with the community, I've come to the conclusion that this is the only way forward.
Here are some examples of changes I've made so far - everything is still subject to change. If you're not a modder, feel free to skip this section.
Weapon/Unit/Turret Animation System
Turrets, units, and weapons now support animation parts. These can rotate or move individually depending on their progress value, which is usually the weapon warmup or reload.
Close-up of the tank shooting animation:
Code (minus the blades, which are defined in a loop):
Weapons, Turrets and Units
Weapons and turrets have long suffered from an inconsistent feature set and API. I've attempted to improve the situation by implementing a unified system for bullet patterns and shooting behavior.
This means:
Turrets and units can now have an arbitrary amount of bullet barrels.
Units now support duo-like double-shot patterns.
Swarmer and Cyclone turrets now correctly have 3 true barrels instead of randomly spewing bullets everywhere.
Java/JS mods can easily define complex bullet patterns for their turrets without creating subclasses of Turret or Weapon.
As an example, here's what the new Swarmer bullet pattern looks like:
'shoot' is a field of each Weapon and Turret that defines its bullet pattern. This defines a 3-barrel shot pattern.
Result:
It is also possible to chain together shot patterns, to make things like this (demonstration only!):
Bullets can be created with custom movement callbacks. This pattern, for example, creates two bullets that move in a helix:
Consumption & Generators
The block consumption system has been rewritten to allow for:
Multi-liquid consumption
Multiple consumers of the same type, e.g. two ConsumeItems
Filter/efficiency consumption that does not depend on specific block type
Most old generator classes - SingleTypeGenerator, BurnerGenerator, ItemLiquidGenerator and DecayGenerator - have been replaced with a single class, ConsumeGenerator. As an example, here's what the new definition for the combustion generator looks like:
Drawing
The DrawBlock system has been expanded to support more block types, including generators, pumps and turrets.
This means that it is no longer necessary to extend these classes for custom drawing behavior. All drawing-specific GenericCrafter subclasses (Smelter, Cultivator, ...) have been removed. In addition, all DrawBlock subclasses have been made modular.
For example, this is how a smelter draw implementation can be defined on a GenericCrafter (or generator):
Build 127: v7 Pre-Alpha Now Available
Build 127, the first pre-alpha release of v7, is now available on the v7-testing Steam branch.
To opt in, right click Mindustry in your Steam library, then click Properties -> Betas -> Select v7-testing in the drop-down box.
Note that this is a highly incomplete version of v7. Most content planned for v7 is unfinished, and will not be included in this release!
Ideally, this version should be more stable than 126, but without a release, I cannot say for certain. The current "stable" version (126.2) contains severe bugs & balancing problems that have been addressed in this release. Due to these issues, I may have to split the v7 update into two different parts; whether or not such a split release happens at all depends on how long it takes me to finish the "interplanetary" v7 content.
Consult the Mindustry Trello for more information on plans for the full v7 release.
Changelog
Countless bugfixes
Countless unit & turret balancing tweaks
Optimized fire visuals
Made mass driver output speed more FPS-independent
Made phase bridges overdriveable & more reliable at lower FPS values
Reorganized core items & guardian bar UI
Added red outline for guardian units
Added more options to editor filters
Added editor filter copy-paste buttons
Added display of current status effects to Ui
Added 5 new support naval units
Added payload void & source for sandbox
Added a payload mass driver equivalent
Added polygonal core protection rule
Added core-capture rule for PvP/attack maps
Added one experimental core-capture PvP map
Added lights for most effects & bullets
Added new T2 repair point
Added controls to deposit current unit into payload block directly
Added schematic tags
Added client-side "ghost building" sync when playing multiplayer
Campaign: Reorganized sector icon selector, added support for content sector icons
Updated packaged Java version to 16
Made units unstackable in most situations
Mods: Support for loading classes from other JARs as dependencies
Mods: various API changes, see https://mindustrygame.github.io/wiki/modding/7-migrationv7/ for details
Logic: Added inverse trig operations
Logic: Added content ID lookup & wait instructions
Lots of other stuff I probably missed
Build 126.2 Released
Fixed bridges being planned without unlock in campaign
Fixed player moving slower on servers with status effects
Fixed player not respecting formation speed on servers
Fixed separators consuming power when idle
Fixed logic blocks not saving buildings on reload
Fixed rare door placement crash
Fixed logic units being able to take/remove items from any team block
Improved power node link preview
Reduced Nova range slightly
Added list of status effects to core database
Added status effect display to bullets (icons contributed by @sk7725)
Added block info keybind
Added bullet stats for continuous laser turrets (e.g. Meltdown)
Made bridges autolink when dragging multiple lines
Disabled logic unit building for servers by default
Internals: Removed all code for disposing resources on exit; this should be handled by the OS now
Logic: Made `dead` sensor return 1 for `null`, to simplify validity checks
Logic: New text parser; supports defining and jumping to labels with `name:` instead of numbers
Logic: Added support for negative draw coordinates
Logic: Disabled packets for config; may desync, but will help reduce lag
Campaign: Various tweaks to make background simulation more accurate
Build 126 Released
Various minor bugfixes
Made water extractor use metaglass for building, to be consistent with pumps
Added automatic conveyor/conduit bridging over obstacles
Added 'defender' AI for Oct; follows nearby units
Cores can now replace most transport blocks; turrets can now replace each other
Improved bridge & power node linking previews
Buffed Segment & Vela
Added logicUnitBuild rule; Sandbox server owners are advised to disable logic building with `rules add logicUnitBuild false`.
Logic: Changed default unit control state to be 'idle', not 'stop'
Logic: Made config / unit building instructions accept buildings as configuration to copy their config. This allows for self-replicating processors.
Logic: Added sensors for `dead`, `controller`, `size`, `boosting`
Logic: Made `controlled` return ctrlProcessor/ctrlPlayer/ctrlFormation/0 depending on controller type
Logic: Deprecated "commanded"; use `controlled` instead! This sensor will be removed in a future release.
Logic: More hints
Build 125 Released
Fixed enemy power nodes getting linked w/ allied ones, leading to buggy power behavior
Fixed chat not working when paused
Fixed 128+ cores on map breaking servers
Fixed editor breaking building links on resize
Fixed onscreen green lines occurring for specific GPUs/drivers
Made turrets/units take enemy hitbox size into account when targeting
Made builder/repair AI flee from enemies when idle
Made data export zip include folder entries and strip absolute file paths this may fix some issues with external archive programs
Added rules for unit cap control [Contributed by @TranquillyUnpleasant]
Added new splash damage algorithm should lead to faster & more accurate explosions, but may require balancing
Added log file for data-loading events should assist with fixing the data wipe bug
Mods: Fixed trailing commas in hjson files being parsed as part of unquoted strings
Mods: Many various bugfixes for json effects
Logic: Added tooltips to most instructions/operators
Logic: Added `===` operator for exact comparisons, e.g. null checks
Logic: Made 'invalid' operations such as sensing null blocks or 0/0 return null instead of 0
Logic: Fixed units disappearing when moving to infinite position
Logic: Added sensor for force projector heat
For Build 125.1:
Fixed player health bar glitching out at negative health
Fixed large power nodes sometimes not connecting to placed blocks
Made unit payloads draw with correct cell colors
Made all mods automatically get disabled upon client startup crash can be disabled in settings
Decreased impact reactor explosion radius
Decreased projectile building splash damage for smaller radii
Decreased splash damage radius for many various projectiles
Logic: Added tooltips for draw operations
Logic: Made invalid sensors for units return `null`
Mods: Stricter null checks for JSON mod objects
Mods: Added support for `abilities:` and `requirements:` in JSON unit definitions
Mods: Added support for `DrawBlock` parameters in JSON
Mods: Added support for FQCNs and modded class types in JSON
Build 124 Released
Fixed logic blocks resetting state on map load or connection changes
Fixed "#" in any logic string breaking instructions
Fixed crawlers not exploding next to cores
Fixed certain status effect combinations not triggering damage
Fixed waves being infinitely skippable when game is paused
Fixed constructed blocks sometimes having low health on servers'
Fixed enemy core items not syncing
Fixed insect units not being able to walk over solid blocks on space floors
Made Surge Alloy discharge lightning when destroyed in containers (Contributed by @sk7725)
Made player stop shooting when a controlled suicide unit is killed (prevents Crawler chain-deaths)
Made team colors for relevant blocks display during placement (Contibuted by @Quezler)
Improved liquid bridge throughput
Improved power network removal performance
Added list of content to mod info dialog
Added icons to mod browser
Added support for Jar mod import to mod browser
Added re-import button to mod info - only works for newly imported Github mods
Added "Repo" button to mod info
Improved mod browser layout on wider screens
Made mod importer/browser use the default Github branch for downloads. The "6.0" branch is no longer checked first make sure your default branch is set up correctly!
Build 123 Released
As 6.0 is more or less stable now, updates have slowed down significantly. This is likely to be one of the last notable releases before 7.0.
Fixed same-line logic comments not parsing
Fixed Kamikaze achievement not triggering with flying units [Steam]
Fixed mass driver rotating before payload is received
Fixed bullets dealing splash damage twice upon collision splash damage of certain bullets has been increased to compensate
Fixed floating point errors in core database leading to incorrect rounding
Fixed unit payloads snapping rotations when entering reconstructors
Fixed builder AI placing drills on incorrect/mixed resources & clogging crafters
Fixed editor mirror filter being offset in certain situations
Fixed music randomly cutting off after quit to main menu
Campaign: Made invasion chance scale with nearby enemy base count
Campaign: Added 20-minute invasion grace period after sector capture
Made impact reactor warmup time scale with boost (@Quezler)
Made players prioritize highest tier core when respawning
Made logic programs reset all state on edits
Made logic blocks no longer change 'last accessed' names when no edits are made
Made naval paths preload on maps with spawn points on liquids
Made Plastanium sprite slightly more distinct
Made ground units avoid walking in slag/deep water even when it is the only valid path
Made fire disappear faster in rain
Made conveyor items render under most blocks
Made server prevent duplicate IP connections
Made crosses render on item/liquid sources & sorters in schematics
Made building disabled state save upon world reload
Made status indicators smaller for 1x1 blocks
Made mod browser list mods by last update time
Implemented automatic mod list updates (currently, every 4 hours)
Improved unit selection visuals (@Voz-Duh)
Improved power status information (@Slava0135)
Added boost % bar to overdrive projectors (@Quezler)
Added IPv6 address support to join dialog (@markozajc)
Added core item incineration rule (@Quezler)
Added carried payloads to unit status bars & info (Partially implemented by @Slava0135)
Added slight shine effect, triggering upon building rotation
Removed overflow gate inventory
Increased power source output
Many other minor bugfixes & tweaks
Build 121: Campaign Co-op Changes
In light of user feedback, I will be making some changes to the way co-op works in the campaign. These changes are in no way final, and may be reverted if problems are found with the approach.
Currently, the campaign only affects the host player. While clients connected to the host are allowed to use the hosts's research, they cannot progress themselves. This is because there was no straightforward way for me to carry over 5.0's "parallel progression" system with shared items, as global inventories no longer exist.
To improve the co-op experience, I will be implementing the following changes:
1. Any research the host does will transfer over to all connected clients, even after they disconnect. To prevent gaps in the tech tree, every direct dependency will unlocked as well.
This means is that if you connect to a host and they research a Meltdown, for example, you will permanently get the Meltdown unlocked, along with the Arc, Lancer, etc.
2. Clients will be able to use any research they have, even if the host doesn't have it unlocked.
3. Clients will receive a copy of all the resources the host is producing on the current map, distributed to all their sectors. If they do not have space for the materials anywhere, they won't get any.
4. Clients will be able to research new tech in multiplayer, even if it depends on technology that only the host has. The item cost will be taken from their local inventory - not from the host.
For example, if the host has unlocked the Scorch but the client has not, the client will still be able to research the Arc turret, which normally would require researching the Scorch. In doing so, they will unlock the Scorch as well, to prevent random tech tree gaps.
This system is not particularly intuitive, but it's probably better than the current state of co-op.
Mindustry 6.0 Released
After more than 9 months of development, 6.0 is finally here. There have been far too many changes to reasonably list here, so I'll go over the highlights.
Units
The unit system has been completely reworked
All unit sprites have been re-drawn and cleaned up
Many new unit types have been added
Player-specific pads and unit-specific factories have been removed
All units can now be created, commanded and controlled by players
3 different unit factories: ground, air, and naval
Each unit factory can produce multiple types of units
Units can be moved into special tiered Reconstructor blocks to upgrade them
6 unit branches: insect units, ground attack units, ground support units, air attack units, air support units, naval attack units
Each branch has 5 tiers, making 5*6 = 30 buildable units
Each core block has a special player-controlled flying unit type associated with it, resulting in a grand total of 33 total units
Campaign
Complete rework of the 5.0 campaign system
Everything takes place on a planet, where each hexagonal/pentagonal sector is a separate map that can be visited
260+ procedural sectors, with 16 special "landing zone" sectors
Procedural sectors are optional for campaign completion, but landing zones are not
Most sectors have a certain number of waves that need to be survived in order to capture them
Other sectors may have enemy bases on them, which need to be destroyed for capture
Each sector will produce resources in the background even when you play in other sectors
Resources can be moved between sectors with Launch Pads
Sectors near enemy bases will be periodically invaded unless the enemy base is destroyed
"Global Resources" no longer exist - all research costs are taken directly from your pooled core resources
More planets will be added in the future
New Blocks & Mechanics
Added upgraded 3x3 versions of the Silicon Smelter, Separator and Overdrive Projector
Cores can now be upgraded to higher tiers
Added "Segment" point defense turret - targets and destroys incoming bullets
Added "Parallax" electric anti-air turret - pulls in enemy aircraft with a tractor beam
Added "Foreshadow" long-range railgun turret, for taking down bosses and armored units
Added "Tsunami" liquid turret - acts as an upgraded version of the Wave
Added Plastanium conveyors - stack items together, move them with high throughput
Added mud & dirt decoration blocks
Added slag liquid floor, can be pumped to obtain slag
Added space floor
Significant amounts of block balancing, bugfixes and tweaks
(Schematic above made by Highfire1)
Logic System
Added Processor blocks that execute commands in a loop
Processors use a very simple assembly-like language
Code can be written in-game with a visual editor, or imported from text files
Processors are capable of performing complex tasks, such as controlling units, reading block state, disabling/enabling buildings and outputting text to message blocks
Added Display blocks - can be used for displaying vector images from processors
Added Memory blocks - can be used to store numbers for internal processor use
Added Button block - can be linked and used as an input devices for processors
Examples of logic applications include automatic heat-sensing reactor controllers, unit transport systems, custom unit AI, visual power level displays, various types of games and more
Maps
Added 4 new maps for custom games
Added 5 types of weather: rain, fog, snow, sandstorm and sporestorm
Each type of weather has a certain effect on blocks or units
Added attack AI rule: when enabled, enemy cores will spawn units that build basic defense schematics
Added map rules for fire, schematic use, enemy light visibility, unit ammo mechanics, explosion damage and more
Added new filters in editor, to aid with procedural map generation
Added new editor filter options
General Changes
Added more music
Added more sound effects
Added community server groups
Improved most sprites and icons
Many small visual improvements
Added button to pan camera around map
New physics system
Made schematics save power node connections & message contents when copying