Concreep Redux

by utoxin

Automated concrete placement and upgrading for Factorio 2.0. Your roboports automatically tile and upgrade floors (stone brick → concrete → refined concrete) within their construction areas. Features multiple tiling modes including pattern replication, construction/logistic area differentiation, and automatic obstacle clearing. Set it and forget it – your factory floor tiles itself as you expand!

Utilities
6 days ago
1.1 - 2.0
4.42K
Logistic network

Changelog

Version: 3.3.2
Date: 2025/10/26
  Bugfixes:
    - Fixed Lua goto scope error in space_creep function that prevented the mod from loading
Version: 3.3.1
Date: 2025/10/26
  Added:
    - (Space-Exploration) New setting to control automatic space platform expansion: When disabled, prevents automatic placement of tiles on empty space and asteroids in orbital surfaces, but still allows upgrading existing scaffolding to plating
  Changes:
    - Increased default value of "Minimum Items Available" setting from 100 to 1000 to better handle larger bases
    - Increased default value of "Roboports per Cycle" setting from 10 to 25 for improved performance on larger bases
  Bugfixes:
    - Fixed crash when ghost agricultural towers were placed: Changed ghost_quality property access to quality property, which is the correct way to access quality on ghost entities in Factorio 2.0 API
Version: 3.3.0
Date: 2025/10/13
  Added:
    - Territory Claim mod support: Concreep now respects territory ownership and will not place tiles on enemy or disputed territory (Issue #45)
    - Sleep reason tracking: Roboport GUI now shows why a roboport stopped early - either "territory boundary" when blocked by Territory Claim or "work complete" when finished
    - Optional foundation tile placement: New setting to place foundation tiles on lava oceans (Vulcanus) and oil oceans (Fulgora). Disabled by default due to resource cost.
    - Optional ice platform tile placement: New setting to place ice platform tiles on ammonia oceans (Aquilo). Disabled by default due to resource cost.
  Changes:
    - Territory Claim boundaries are now treated as natural stopping points - roboports will sleep when all remaining tiles are in enemy/disputed territory rather than continuing to expand
    - Wake commands (both manual /concreep-wake and automatic wake system) now clear sleep reasons when waking roboports
  Bugfixes:
    - Fixed infinite log spam on space platform surfaces by filtering out surfaces starting with "platform-" (Issue #41)
    - Fixed concrete not being placed on ice platforms on Aquilo: ice-platform tiles are now treated like landfill tiles and prioritized for concreting (Issue #46)
    - Fixed Space Exploration tile placement in space: Implemented two-phase tile search (similar to landfill_creep) that prioritizes empty space (se-space) tiles first, then processes asteroid (se-asteroid) tiles only if no empty space is available. This prevents the API search limit from being exhausted by nearby asteroids before distant empty space tiles can be reached, ensuring consistent tile placement across the entire area. Scaffolding is restricted to empty space only, while plating can be placed on both tile types.
    - Fixed Space Exploration radius expansion logic: space_sleep_check now prioritizes empty space (se-space) tiles and allows radius expansion when all empty space is filled, even if asteroid (se-asteroid) tiles remain, as long as plating is unavailable. When plating is available, the radius only expands after both empty space and asteroids are processed. This prevents the roboport from getting stuck when it runs out of plating but still has empty space to cover at larger radii.
  Optimizations:
    - Cached Territory Claim mod detection in storage to avoid repeated interface lookups on every tile filter operation
    - Eliminated redundant settings lookups in area_tile_creep function
Version: 3.2.0
Date: 2025/10/12
  Added:
    - Roboport sidebar GUI showing concreep status: displays active/sleeping/upgrading state, current/target radius, tile mode, and countdown timers
    - Pattern mode enhancements: tile ghosts are now detected and included when capturing patterns
    - Pattern mode delay system: new roboports wait 30 seconds before starting to creep, giving time to place tile patterns
    - Automatic pattern re-capture 5 seconds before roboports activate, ensuring tile ghosts are included
    - Auto-wake system: randomly wakes 1-3 sleeping roboports when fewer than 5% are active, to recheck for upgrades
    - Console commands: /concreep-help, /concreep-status, /concreep-rebuild, /concreep-wake for managing roboports
    - Setting change detection: patterns automatically re-captured when enabling pattern mode or changing pattern size
  Changes:
    - Pattern mode now shows informative warnings when enabled, explaining the 30-second delay and re-capture behavior
    - Commands moved to separate commands.lua file for better code organization
    - Improved skip logic for sleeping roboports - now finds next active roboport in single call instead of one-at-a-time
  Bugfixes:
    - Fixed sleep mode not working: circular mode now properly filters upgrade tiles to construction area before checking
    - Fixed surface filtering bug: index now increments before surface check, preventing infinite loop when one surface disabled
    - Fixed sleeping roboports being permanently deleted: removed "off" check from validation, now properly skips sleeping roboports
    - Fixed game freeze when opening deleted roboports: added pcall wrapper to GUI updates and iteration limits to get_creeper()
  Optimizations:
    - GUI updates wrapped in pcall to prevent crashes
    - Multiple safety checks added to prevent infinite loops in roboport iteration
  Migration:
    - Automatic migration rebuilds roboport list on upgrade to fix saves affected by sleeping roboport deletion bug
Version: 3.1.0
Date: 2025/10/11
  Added:
    - New unified Tile Placement Mode setting with three options: Standard, Pattern, and Coverage Type
    - Pattern tiling mode now fully functional - captures and replicates tile patterns from under roboports
    - Configurable pattern sizes from 3x3 to 16x16 (supports both odd and even sizes)
    - Visual pattern preview: cyan rectangle shows captured pattern area when hovering over roboports in Pattern mode (toggleable per-user setting)
    - Setting for agricultural tower clearance radius (default 11, minimum 11)
    - Agricultural tower clearance now checks tower quality and adjusts radius accordingly (+2 tiles per quality level)
    - Console command /concreep-wake to wake up all sleeping roboports
    - Automatic mode switching: circular mode switches to square mode at radius 43 to avoid 2000 tile search limit
  Changes:
    - Fixed circular creep radius expansion to properly reach corners of construction area
    - Fixed pattern tiling to center correctly on roboport position and align with tile grid
    - Fixed boundary checks for trees, rocks, and cliffs marked for deconstruction - now only marks entities within roboport construction range
    - Fixed landfill prioritization to concrete landfill before expanding further
    - Improved API compatibility with Factorio 2.0 (prototypes.X instead of game.X_prototypes)
    - Agricultural tower check now properly prevents all tile types (not just landfill) from being placed too close
  Bugfixes:
    - Agricultural towers no longer cause roboports to stall: sleep_check now excludes tower-protected tiles when deciding to expand or sleep, so creepers continue working outside the protected area.
    - Prevent paving the corners near towers by switching proximity logic to a square (Chebyshev) radius around towers and ghost towers.
    - Use tile-center coordinates for proximity checks to avoid off-by-one placement near tower edges.
  Optimizations:
    - Consolidated duplicate sleep_check code (~115 lines saved)
    - Cached settings to reduce repeated lookups
    - Removed expensive entity searches
    - Reduced per-tile entity searches near towers by batching tower/ghost queries once per batch and using arithmetic checks per tile in filter_agricultural_tower_tiles
  Migration:
    - Old tile mode settings (concreep-use-pattern-mode and concreep-tiles-per-area) automatically migrated to new unified setting
Version: 3.0.3
Date: 2024/11/03
  Added:
    - Setting for working in a circle instead of a square while placing ghosts. (End result doesn't change, just the way it places ghosts.)
    - Settings for disabling creep on specific surfaces if Space Age is enabled. (Issue #34)
  Known Issues:
    - Concreep will happily overwrite farming / soil tiles, both natural and artificial. Until I can figure out a better solution, disabling creep on Gleba or other locations where you have those tile types is your best solution.
Version: 3.0.2
Date: 2024/10/28
  Added:
    - Settings to disable the automatic deconstruction of cliffs, rocks, and trees. (Issue #37, Requested by Blastinburn)
  Changes:
    - Fixed settings for bricks in Tiles by Area. (Issue #36, Reported by Serjevski)
Version: 3.0.1
Date: 2024/10/26
  Changes:
    - Disabling pattern storage, solving crash reported by ololduck, Nachoboy00, and Os.
Version: 3.0.0
Date: 2024/10/26
  Changes:
    - Updated to Factorio 2.0.0
    - Disabling prototype GUI for now, to get it to run
Version: 2.3.3
Date: 2024/05/18
  Changes:
    - Fixed tile placement in space.
Version: 2.3.2
Date: 2024/05/18
  Added:
    - Setting to control update frequency. (Issue #26, Requested by Avaa2499)
    - Setting to control number of roboports processed per update.
Version: 2.3.1
Date: 2024/04/07
  Changes:
    - Adjusted the lower bound on usable bots to zero, so that it won't place a single tile ghost if you have 0 bots in the network. (Issue #24, Reported by skofisk)
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.3.0
Date: 2024/04/06
  Added:
    - Added landfill support, with logic to leave water around pumps if desired.
    - Nonfunctional GUI for managing settings in a better way has been started.
  Internal Changes:
    - Split code up into new subdirectories, and prepared groundwork for new settings GUI.
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.2.5
Date: 2024/03/30
  Changes:
    - Fixed an issue with some math that greatly reduced how many bots it would put to work.
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.2.4
Date: 2024/03/30
  Changes:
    - Fixed an issue where an internal tracking counter could get out of sync with the number of roboports in use.
    - Fixed a rare issue discovered by Dir39 that could cause a non-recoverable error.
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.2.3
Date: 2024/03/17
  Changes:
    - More tweaks to idle bot calculations that should improve creep throughput further
    - Fixed a crash when a port switched from initial creep to upgrade mode.
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.2.2
Date: 2024/03/16
  Changes:
    - Fixing bug with available-for-work bot calculations
  Known Issues:
    - Space Exploration Compatability: When attempting to place space scaffolding, it will error once per tile, but the creep will progress. (Issue #1)
    - Angels Bioprocessing Compatability: Attempting to place Bio Tiles near water will deadlock a ropobort's creep method. (Issue #10)
Version: 2.2.1
Date: 2024/03/14
  Changes:
    - Fixed slight mis-alignment with area creep. (Reported by: Violet_Scarelli)
    - Partially fixed issues with SE space surfaces, allowing 'asteroid' tiles to be upgraded into space platform.
Version: 2.2.0
Date: 2024/03/13
  Added:
    - Added a mode that allows you to select tile types based on logistics/construction area. (Suggested by: Violet_Scarelli)
  Changes:
    - Refactored the code to separate the various creep types into their own methods.
    - Partially fixed issues with SE space surfaces, allowing 'asteroid' tiles to be upgraded into space platform.
  Optimizations:
    - Removed redundant / unused code.
  Info:
    - When attempting to place space scaffolding, it will error once per tile, but the creep will progress.
Version: 2.1.1
Date: 2024/03/10
  Changes:
    - Added the idle bot logic mentioned in the 2.0.0 changelog. It will now limit bots used for construction based on this setting.
    - Additionally, each active roboport will limit how many ghosts it places, attempting to spread the work around between active roboports.
  Optimizations:
    - Removed redundant / unused code.
    - Improved looping logic to avoid early exits, allowing more processing per iteration.
  Info:
    - There may be minor issues with SE space surfaces, and placing tiles on asteroids. If you know of a way to improve this, I'd love to hear about it.
Version: 2.1.0
Date: 2024/03/10
  Added:
    - Added support for Space Exploration platforms.
    - Added setting for using logistic range instead of construction range for creep.
    - Added setting for how many items to keep in your logistics network before creep starts.
Version: 2.0.0
Date: 2021/12/19
  Changes:
    - New Author (Utoxin), New Name.
    - Changed logic around roboports 'sleeping' so that if all roboports are 'sleeping' it will wake them all back up and check for more work.
    - Updated required Factorio version to 1.1.49.
    - Starting laying groundwork for a new setting to control how many idle bots the mod is allowed to use. Currently, non-functional.
Version: 1.4.6
Date: 2020/12/08
  Changes:
    - Fixed case where non-electric roboports caused an error
Version: 1.4.5
Date: 2020/11/24
  Changes:
    - Updated for Factorio 1.1
    - Added support for raised_revive event.
Version: 1.4.4
Date: 2020/05/14
  Changes:
    - Made the concreep range setting more strict.  Now setting to 0 pauses the mod.
Version: 1.4.3
Date: 2020/04/24
  Bugfixes:
    - Fixed a bug preventing tile upgrading from proceeding
Version: 1.4.2
Date: 2020/04/24
  Changes:
    - Streamlined logic for reserving tiles for upgrading.
  Bugfixes:
    - Fixed potential error when number of available tiles was too low.
Version: 1.4.1
Date: 2020/04/06
  Bugfixes:
    - Fixed a script error around trying to preserve some refined-concrete.
Version: 1.4.0
Date: 2020/04/03
  Added:
    - Concreep won't place tiles unless there's more than 200 of the relevant item in the network.
    - Concreep won't activate unless there's 30 idle robots
Version: 1.3.9
Date: 2020/03/09
  Changes:
    - Fixed migration logic (old versions of concreep or adding to a new game)
Version: 1.3.8
Date: 2020/03/05
  Changes:
    - Changed how tiles are checked to support Space Exploration scaffold/plating.  Upgrading scaffold to plating not currently supported.
Version: 1.3.7
Date: 2020/01/23
  Changes:
    - Updated for Factorio 0.18
Version: 1.3.6
Date: 2019/10/30
  Added:
    - Added setting for using concreep logic for laying bricks.  On by default.
  Changes:
    - Concreep will finish paving an area before looking for tiles to upgrade.
Version: 1.3.5
Date: 2019/10/08
  Bugfixes:
    - Fixed bug to make the intended change in v1.3.4 work properly.
Version: 1.3.4
Date: 2019/09/20
  Bugfixes:
    - Added additional checks to ensure roboport tile matching works safely, like if dectorio is removed mid-game.
Version: 1.3.3
Date: 2019/09/19
  Bugfixes:
    - Added additional check to prevent placing brick when none are in the logistic network.
Version: 1.3.2
Date: 2019/09/18
  Added:
    - Concreep can also upgrade brick to concrete or reinforced concrete.
    - Added settings to upgrade brick or concrete.
  Fixed:
    - Restored replicating Dectorio and most other placed tiles
    - Concreep once again respects the range setting.
Version: 1.3.1
Date: 2019/08/26
  Fixed:
    - Fixed a crash when adding this mod to a pre-existing save
Version: 1.3.0
Date: 2019/08/25
  Added:
    - Concreep performs much better than ever before!
    - Concreep lays down reinforced concrete first, then regular concrete, then seeks out regular concerete to upgrade.
    - Concreep marks cliffs for deconstruction rather than autoremoves them using previous logic.
Version: 1.2.0
Date: 2017/12/28
  Added:
    - Concreep now autoremoves cliffs as concrete is laid down.  Right now it auto-deducts the cliff-explosives from the logistic network instead of delivering it via bot.  Hoping to change this in the future.
  Note:
    - A roboport may fail to remove cliffs if insufficient cliff-explosives are available, and it can be stuck in a state where it won't check again.
Version: 1.1.0
Date: 2017/12/15
  Added:
    - Updated for 0.16
    - Added option to scale back the range roboports will build concrete.
    - Added option to ignore already built tiles (Brick, asphault, etc)