TheOddler / FactorioWorld

A mod for factorio that changes the map into a real-world map.
25 stars 3 forks source link

FactorioWorld

A mod for factorio that changes the map into a real-world map. You can choose between 'Atlantic' and 'Pacific' centered.

Note that it only changes the terrain, and not the spawning of resources. This is on the list of things to do, so maybe in the future!

Download

You can get this mod here: https://mods.factorio.com/mods/TheOddler/factorio-world

Usage

Settings

Use the in-game mod settings to set:

Available Spawn locations

This is a list of the regions and cities | found in 'data/spawns.lua':

Continent Region City
Africa Mali Bamako
Africa Congo Katanga
Africa Chad Mongo
Africa Egypt Cairo
Africa Morocco Marrakech
Asia China Beijing
Asia China Kunming
Asia Georgia Tbilisi
Asia India Delhi
Asia Saudi Arabia Riyadh
Asia Mongolia Moron
Europe Czech Republic Prague
Europe Russia Aktobe
Europe Russia Bilibino
Europe Russia Moscow
Europe Russia Omsk
Europe Russia Pechora
Europe Russia Yakutsk
Europe Spain Madrid
Europe UK London
North America Canada Brisay
North America Canada Kapuskasing
North America Canada Saskatoon
North America Greenland Summit Camp
North America Mexico Mexico City
North America United States Boise
North America United States Scranton
North America United States Topeka
North America United States Ungalik
South America Brazil Manaus
South America Argentina Cordoba
Oceania Australia Broome
Oceania Australia Sydney

Generating your own maps

The mod reads lua files generated by a converter writen in Python. These files are generated based on an image. Currently I'm using the "Natural Earth II with Shaded Relief, Water, and Drainages" image from Natural Earth.

The 'Pacific' map has been modified to switch the continents and remove Antarctica.

The generator simply iterates over each pixel, and assigns a tile-type to it. The algorithm uses reference colors, and checks which one is closer to encode the types. To compress the data a little I use a scheme where every tile-letter is followed by how many tiles there are of this type of that row. The mod then takes these strings (one for each line of pixels), decompresses it to something it can read very quickly, and assigns the tiles a new type when a chunk is generated.

Require Python libraries

Usage

To generate a new lua file and load in into your game you'll have to do a little manual labour:

  1. In convert.py change the settings at the top of the file
    • image_file: the name of the image to use (to be placed next to the convert.py file)
    • resize_width: the size you want the final map to be (can be set to None if you just want the same size as the provided image)
    • terrain_codes: set which colours are what terrains !!DANGER!! If you change these, you'll have to update the terrain_codes in control.lua as well
  2. Run convert.py
  3. Copy the created lua files (World_large.lua and World_small.lua) into the mod's root folder
  4. Run the game and start a new game