maps4fs 1.0.1__tar.gz → 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of maps4fs might be problematic. Click here for more details.
- {maps4fs-1.0.1 → maps4fs-1.0.4}/PKG-INFO +22 -4
- {maps4fs-1.0.1 → maps4fs-1.0.4}/README.md +21 -3
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/background.py +3 -4
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/config.py +1 -1
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/dem.py +12 -8
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/grle.py +1 -2
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/i3d.py +3 -5
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/map.py +3 -3
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/texture.py +4 -4
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs.egg-info/PKG-INFO +22 -4
- {maps4fs-1.0.1 → maps4fs-1.0.4}/pyproject.toml +1 -1
- {maps4fs-1.0.1 → maps4fs-1.0.4}/LICENSE.md +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/__init__.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/__init__.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/component.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/game.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/path_steps.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/qgis.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/generator/tile.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/logger.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/toolbox/__init__.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/toolbox/background.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs/toolbox/dem.py +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs.egg-info/SOURCES.txt +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs.egg-info/dependency_links.txt +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs.egg-info/requires.txt +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/maps4fs.egg-info/top_level.txt +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/setup.cfg +0 -0
- {maps4fs-1.0.1 → maps4fs-1.0.4}/tests/test_generator.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: maps4fs
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.4
|
4
4
|
Summary: Generate map templates for Farming Simulator from real places.
|
5
5
|
Author-email: iwatkot <iwatkot@gmail.com>
|
6
6
|
License: MIT License
|
@@ -89,6 +89,13 @@ Requires-Dist: pympler
|
|
89
89
|
There are several ways to use the tool. You obviously need the **first one**, but you can choose any of the others depending on your needs.<br>
|
90
90
|
### 🚜 For most users
|
91
91
|
**Option 1:** open the [maps4fs](https://maps4fs.streamlit.app) on StreamLit and generate a map template in a few clicks.<br>
|
92
|
+
<i>Note, that StreamLit community hosting has some limitations, such as: <br>
|
93
|
+
1. Maximum map size is 4096x4096 meters. <br>
|
94
|
+
2. Advanced settings are disabled. <br>
|
95
|
+
3. Texure dissolving is disabled (they will look worse). </i><br>
|
96
|
+
|
97
|
+
If you run the application locally, you won't have any of these limitations and will be able to generate maps of any size with any settings you want and nice looking textures.<br>
|
98
|
+
So, jump to [Docker version](#option-2-docker-version) to launch the tool with one command and get the full experience.<br>
|
92
99
|
|
93
100
|

|
94
101
|
|
@@ -141,14 +148,22 @@ You'll find detailed instructions on how to run the project below. But if you pr
|
|
141
148
|
<i>Video tutorial: How to generate a Farming Simulator 22 map from real-world data.</i>
|
142
149
|
|
143
150
|
### Option 1: StreamLit
|
144
|
-
🟢 Recommended for all users
|
151
|
+
🟢 Recommended for all users.
|
152
|
+
🛠️ Don't need to install anything.
|
153
|
+
🗺️ Supported map sizes: 2x2, 4x4 km.
|
154
|
+
⚙️ Advanced settings: disabled.
|
155
|
+
🖼️ Texture dissolving: disabled.
|
145
156
|
Using the [StreamLit](https://maps4fs.streamlit.app) version of the tool is the easiest way to generate a map template. Just open the link and follow the instructions.
|
146
157
|
Note: due to CPU and RAM limitations of the hosting, the generation may take some time. If you need faster processing, use the [Docker version](#option-2-docker-version).<br>
|
147
158
|
|
148
159
|
Using it is easy and doesn't require any guides. Enjoy!
|
149
160
|
|
150
161
|
### Option 2: Docker version
|
151
|
-
🟠 Recommended for users who want
|
162
|
+
🟠 Recommended for users who want bigger maps, fast generation, nice looking textures and advanced settings.
|
163
|
+
🛠️ Launch with one single command.
|
164
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
165
|
+
⚙️ Advanced settings: enabled.
|
166
|
+
🖼️ Texture dissolving: enabled.
|
152
167
|
You can launch the project with minimalistic UI in your browser using Docker. Follow these steps:
|
153
168
|
|
154
169
|
1. Install [Docker](https://docs.docker.com/get-docker/) for your OS.
|
@@ -161,7 +176,10 @@ docker run -d -p 8501:8501 iwatkot/maps4fs
|
|
161
176
|
5. When the map is generated click on the `Download` button to get the map.
|
162
177
|
|
163
178
|
### Option 3: Python package
|
164
|
-
🔴 Recommended for developers
|
179
|
+
🔴 Recommended for developers.
|
180
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
181
|
+
⚙️ Advanced settings: enabled.
|
182
|
+
🖼️ Texture dissolving: enabled.
|
165
183
|
You can use the Python package to generate maps. Follow these steps:
|
166
184
|
|
167
185
|
1. Install the package from PyPI:
|
@@ -64,6 +64,13 @@
|
|
64
64
|
There are several ways to use the tool. You obviously need the **first one**, but you can choose any of the others depending on your needs.<br>
|
65
65
|
### 🚜 For most users
|
66
66
|
**Option 1:** open the [maps4fs](https://maps4fs.streamlit.app) on StreamLit and generate a map template in a few clicks.<br>
|
67
|
+
<i>Note, that StreamLit community hosting has some limitations, such as: <br>
|
68
|
+
1. Maximum map size is 4096x4096 meters. <br>
|
69
|
+
2. Advanced settings are disabled. <br>
|
70
|
+
3. Texure dissolving is disabled (they will look worse). </i><br>
|
71
|
+
|
72
|
+
If you run the application locally, you won't have any of these limitations and will be able to generate maps of any size with any settings you want and nice looking textures.<br>
|
73
|
+
So, jump to [Docker version](#option-2-docker-version) to launch the tool with one command and get the full experience.<br>
|
67
74
|
|
68
75
|

|
69
76
|
|
@@ -116,14 +123,22 @@ You'll find detailed instructions on how to run the project below. But if you pr
|
|
116
123
|
<i>Video tutorial: How to generate a Farming Simulator 22 map from real-world data.</i>
|
117
124
|
|
118
125
|
### Option 1: StreamLit
|
119
|
-
🟢 Recommended for all users
|
126
|
+
🟢 Recommended for all users.
|
127
|
+
🛠️ Don't need to install anything.
|
128
|
+
🗺️ Supported map sizes: 2x2, 4x4 km.
|
129
|
+
⚙️ Advanced settings: disabled.
|
130
|
+
🖼️ Texture dissolving: disabled.
|
120
131
|
Using the [StreamLit](https://maps4fs.streamlit.app) version of the tool is the easiest way to generate a map template. Just open the link and follow the instructions.
|
121
132
|
Note: due to CPU and RAM limitations of the hosting, the generation may take some time. If you need faster processing, use the [Docker version](#option-2-docker-version).<br>
|
122
133
|
|
123
134
|
Using it is easy and doesn't require any guides. Enjoy!
|
124
135
|
|
125
136
|
### Option 2: Docker version
|
126
|
-
🟠 Recommended for users who want
|
137
|
+
🟠 Recommended for users who want bigger maps, fast generation, nice looking textures and advanced settings.
|
138
|
+
🛠️ Launch with one single command.
|
139
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
140
|
+
⚙️ Advanced settings: enabled.
|
141
|
+
🖼️ Texture dissolving: enabled.
|
127
142
|
You can launch the project with minimalistic UI in your browser using Docker. Follow these steps:
|
128
143
|
|
129
144
|
1. Install [Docker](https://docs.docker.com/get-docker/) for your OS.
|
@@ -136,7 +151,10 @@ docker run -d -p 8501:8501 iwatkot/maps4fs
|
|
136
151
|
5. When the map is generated click on the `Download` button to get the map.
|
137
152
|
|
138
153
|
### Option 3: Python package
|
139
|
-
🔴 Recommended for developers
|
154
|
+
🔴 Recommended for developers.
|
155
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
156
|
+
⚙️ Advanced settings: enabled.
|
157
|
+
🖼️ Texture dissolving: enabled.
|
140
158
|
You can use the Python package to generate maps. Follow these steps:
|
141
159
|
|
142
160
|
1. Install the package from PyPI:
|
@@ -143,7 +143,7 @@ class Background(Component):
|
|
143
143
|
self.logger.warning("DEM file not found, generation will be stopped: %s", dem_path)
|
144
144
|
return
|
145
145
|
|
146
|
-
self.logger.
|
146
|
+
self.logger.debug("DEM file for tile %s found: %s", tile.code, dem_path)
|
147
147
|
|
148
148
|
base_directory = os.path.dirname(dem_path)
|
149
149
|
save_path = os.path.join(base_directory, f"{tile.code}.obj")
|
@@ -164,7 +164,6 @@ class Background(Component):
|
|
164
164
|
if tile_code == PATH_FULL_NAME:
|
165
165
|
resize_factor = FULL_RESIZE_FACTOR
|
166
166
|
simplify_factor = FULL_SIMPLIFY_FACTOR
|
167
|
-
self.logger.info("Generating a full map obj file")
|
168
167
|
else:
|
169
168
|
resize_factor = RESIZE_FACTOR
|
170
169
|
simplify_factor = SIMPLIFY_FACTOR
|
@@ -214,7 +213,7 @@ class Background(Component):
|
|
214
213
|
mesh.apply_transform(rotation_matrix_y)
|
215
214
|
mesh.apply_transform(rotation_matrix_z)
|
216
215
|
|
217
|
-
self.logger.
|
216
|
+
self.logger.debug("Mesh generated with %s faces, will be simplified", len(mesh.faces))
|
218
217
|
|
219
218
|
# Simplify the mesh to reduce the number of faces.
|
220
219
|
mesh = mesh.simplify_quadric_decimation(face_count=len(faces) // simplify_factor)
|
@@ -224,7 +223,7 @@ class Background(Component):
|
|
224
223
|
self.mesh_to_stl(mesh)
|
225
224
|
|
226
225
|
mesh.export(save_path)
|
227
|
-
self.logger.
|
226
|
+
self.logger.debug("Obj file saved: %s", save_path)
|
228
227
|
|
229
228
|
def mesh_to_stl(self, mesh: trimesh.Trimesh) -> None:
|
230
229
|
"""Converts the mesh to an STL file and saves it in the previews directory.
|
@@ -36,7 +36,7 @@ class Config(Component):
|
|
36
36
|
self.logger.warning("Map XML file not found: %s.", self._map_xml_path)
|
37
37
|
return
|
38
38
|
tree = ET.parse(self._map_xml_path)
|
39
|
-
self.logger.
|
39
|
+
self.logger.info("Map XML file loaded from: %s.", self._map_xml_path)
|
40
40
|
root = tree.getroot()
|
41
41
|
for map_elem in root.iter("map"):
|
42
42
|
map_elem.set("width", str(self.map_width))
|
@@ -103,7 +103,7 @@ class DEM(Component):
|
|
103
103
|
north, south, east, west = self.bbox
|
104
104
|
|
105
105
|
dem_output_resolution = self.get_output_resolution()
|
106
|
-
self.logger.
|
106
|
+
self.logger.info("DEM output resolution: %s.", dem_output_resolution)
|
107
107
|
|
108
108
|
tile_path = self._srtm_tile()
|
109
109
|
if not tile_path:
|
@@ -223,7 +223,7 @@ class DEM(Component):
|
|
223
223
|
)
|
224
224
|
|
225
225
|
cv2.imwrite(self._dem_path, resampled_data)
|
226
|
-
self.logger.
|
226
|
+
self.logger.info("DEM data was saved to %s.", self._dem_path)
|
227
227
|
|
228
228
|
if self.game.additional_dem_name is not None:
|
229
229
|
self.make_copy(self.game.additional_dem_name)
|
@@ -239,7 +239,7 @@ class DEM(Component):
|
|
239
239
|
additional_dem_path = os.path.join(dem_directory, dem_name)
|
240
240
|
|
241
241
|
shutil.copyfile(self._dem_path, additional_dem_path)
|
242
|
-
self.logger.
|
242
|
+
self.logger.info("Additional DEM data was copied to %s.", additional_dem_path)
|
243
243
|
|
244
244
|
def _tile_info(self, lat: float, lon: float) -> tuple[str, str]:
|
245
245
|
"""Returns latitude band and tile name for SRTM tile from coordinates.
|
@@ -260,7 +260,7 @@ class DEM(Component):
|
|
260
260
|
else:
|
261
261
|
tile_name = f"{latitude_band}E{abs(tile_longitude):03d}"
|
262
262
|
|
263
|
-
self.logger.
|
263
|
+
self.logger.info(
|
264
264
|
"Detected tile name: %s for coordinates: lat %s, lon %s.", tile_name, lat, lon
|
265
265
|
)
|
266
266
|
return latitude_band, tile_name
|
@@ -421,14 +421,18 @@ class DEM(Component):
|
|
421
421
|
|
422
422
|
scaling_factor = self._get_scaling_factor(max_dev)
|
423
423
|
adjusted_max_height = int(65535 * scaling_factor)
|
424
|
-
self.logger.
|
425
|
-
|
426
|
-
|
424
|
+
self.logger.info(
|
425
|
+
"Maximum deviation: %s. Scaling factor: %s. Adjusted max height: %s.",
|
426
|
+
max_dev,
|
427
|
+
scaling_factor,
|
428
|
+
adjusted_max_height,
|
427
429
|
)
|
428
430
|
normalized_data = (
|
429
431
|
(data - data.min()) / (data.max() - data.min()) * adjusted_max_height
|
430
432
|
).astype("uint16")
|
431
433
|
self.logger.debug(
|
432
|
-
|
434
|
+
"DEM data was normalized to %s - %s.",
|
435
|
+
normalized_data.min(),
|
436
|
+
normalized_data.max(),
|
433
437
|
)
|
434
438
|
return normalized_data
|
@@ -59,9 +59,8 @@ class GRLE(Component):
|
|
59
59
|
|
60
60
|
# Create the InfoLayer PNG file with zeros.
|
61
61
|
info_layer_data = np.zeros((height, width), dtype=data_type)
|
62
|
-
print(info_layer_data.shape)
|
63
62
|
cv2.imwrite(file_path, info_layer_data) # pylint: disable=no-member
|
64
|
-
self.logger.
|
63
|
+
self.logger.debug("InfoLayer PNG file %s created.", file_path)
|
65
64
|
else:
|
66
65
|
self.logger.warning("Invalid InfoLayer schema: %s.", info_layer)
|
67
66
|
|
@@ -89,7 +89,7 @@ class I3d(Component):
|
|
89
89
|
self.logger.debug("TerrainTransformGroup element updated in I3D file.")
|
90
90
|
|
91
91
|
tree.write(self._map_i3d_path) # type: ignore
|
92
|
-
self.logger.
|
92
|
+
self.logger.info("Map I3D file saved to: %s.", self._map_i3d_path)
|
93
93
|
|
94
94
|
def previews(self) -> list[str]:
|
95
95
|
"""Returns a list of paths to the preview images (empty list).
|
@@ -120,13 +120,11 @@ class I3d(Component):
|
|
120
120
|
self.logger.warning("Fields data not found in textures info layer.")
|
121
121
|
return
|
122
122
|
|
123
|
-
self.logger.
|
123
|
+
self.logger.info("Found %s fields in textures info layer.", len(fields))
|
124
124
|
|
125
125
|
root = tree.getroot()
|
126
126
|
gameplay_node = root.find(".//TransformGroup[@name='gameplay']")
|
127
127
|
if gameplay_node is not None:
|
128
|
-
self.logger.debug("Found the gameplay node.")
|
129
|
-
|
130
128
|
fields_node = gameplay_node.find(".//TransformGroup[@name='fields']")
|
131
129
|
user_attributes_node = root.find(".//UserAttributes")
|
132
130
|
|
@@ -194,7 +192,7 @@ class I3d(Component):
|
|
194
192
|
node_id += 1
|
195
193
|
|
196
194
|
tree.write(self._map_i3d_path) # type: ignore
|
197
|
-
self.logger.
|
195
|
+
self.logger.info("Map I3D file saved to: %s.", self._map_i3d_path)
|
198
196
|
|
199
197
|
def get_name_indicator_node(self, node_id: int, field_id: int) -> tuple[ET.Element, int]:
|
200
198
|
"""Creates a name indicator node with given node ID and field ID.
|
@@ -44,17 +44,17 @@ class Map:
|
|
44
44
|
if not logger:
|
45
45
|
logger = Logger(to_stdout=True, to_file=False)
|
46
46
|
self.logger = logger
|
47
|
-
self.logger.
|
47
|
+
self.logger.info("Game was set to %s", game.code)
|
48
48
|
|
49
49
|
self.kwargs = kwargs
|
50
|
-
self.logger.
|
50
|
+
self.logger.info("Additional arguments: %s", kwargs)
|
51
51
|
|
52
52
|
os.makedirs(self.map_directory, exist_ok=True)
|
53
53
|
self.logger.debug("Map directory created: %s", self.map_directory)
|
54
54
|
|
55
55
|
try:
|
56
56
|
shutil.unpack_archive(game.template_path, self.map_directory)
|
57
|
-
self.logger.
|
57
|
+
self.logger.debug("Map template unpacked to %s", self.map_directory)
|
58
58
|
except Exception as e:
|
59
59
|
raise RuntimeError(f"Can not unpack map template due to error: {e}") from e
|
60
60
|
|
@@ -239,7 +239,7 @@ class Texture(Component):
|
|
239
239
|
|
240
240
|
for layer in self.layers:
|
241
241
|
self._generate_weights(layer)
|
242
|
-
self.logger.
|
242
|
+
self.logger.info("Prepared weights for %s layers.", len(self.layers))
|
243
243
|
|
244
244
|
def _generate_weights(self, layer: Layer) -> None:
|
245
245
|
"""Generates weight files for textures. Each file is a numpy array of zeros and
|
@@ -339,7 +339,7 @@ class Texture(Component):
|
|
339
339
|
cumulative_image = cv2.bitwise_or(cumulative_image, output_image)
|
340
340
|
|
341
341
|
cv2.imwrite(layer_path, output_image)
|
342
|
-
self.logger.
|
342
|
+
self.logger.info("Texture %s saved.", layer_path)
|
343
343
|
|
344
344
|
# Save info layer data.
|
345
345
|
with open(self.info_layer_path, "w", encoding="utf-8") as f:
|
@@ -351,7 +351,7 @@ class Texture(Component):
|
|
351
351
|
if not self.light_version:
|
352
352
|
self.dissolve()
|
353
353
|
else:
|
354
|
-
self.logger.
|
354
|
+
self.logger.debug("Skipping dissolve in light version of the map.")
|
355
355
|
|
356
356
|
def dissolve(self) -> None:
|
357
357
|
"""Dissolves textures of the layers with tags into sublayers for them to look more
|
@@ -423,7 +423,7 @@ class Texture(Component):
|
|
423
423
|
self.logger.debug("Drawing base layer %s.", layer_path)
|
424
424
|
img = cv2.bitwise_not(cumulative_image)
|
425
425
|
cv2.imwrite(layer_path, img)
|
426
|
-
self.logger.
|
426
|
+
self.logger.info("Base texture %s saved.", layer_path)
|
427
427
|
|
428
428
|
def get_relative_x(self, x: float) -> int:
|
429
429
|
"""Converts UTM X coordinate to relative X coordinate in map image.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: maps4fs
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.4
|
4
4
|
Summary: Generate map templates for Farming Simulator from real places.
|
5
5
|
Author-email: iwatkot <iwatkot@gmail.com>
|
6
6
|
License: MIT License
|
@@ -89,6 +89,13 @@ Requires-Dist: pympler
|
|
89
89
|
There are several ways to use the tool. You obviously need the **first one**, but you can choose any of the others depending on your needs.<br>
|
90
90
|
### 🚜 For most users
|
91
91
|
**Option 1:** open the [maps4fs](https://maps4fs.streamlit.app) on StreamLit and generate a map template in a few clicks.<br>
|
92
|
+
<i>Note, that StreamLit community hosting has some limitations, such as: <br>
|
93
|
+
1. Maximum map size is 4096x4096 meters. <br>
|
94
|
+
2. Advanced settings are disabled. <br>
|
95
|
+
3. Texure dissolving is disabled (they will look worse). </i><br>
|
96
|
+
|
97
|
+
If you run the application locally, you won't have any of these limitations and will be able to generate maps of any size with any settings you want and nice looking textures.<br>
|
98
|
+
So, jump to [Docker version](#option-2-docker-version) to launch the tool with one command and get the full experience.<br>
|
92
99
|
|
93
100
|

|
94
101
|
|
@@ -141,14 +148,22 @@ You'll find detailed instructions on how to run the project below. But if you pr
|
|
141
148
|
<i>Video tutorial: How to generate a Farming Simulator 22 map from real-world data.</i>
|
142
149
|
|
143
150
|
### Option 1: StreamLit
|
144
|
-
🟢 Recommended for all users
|
151
|
+
🟢 Recommended for all users.
|
152
|
+
🛠️ Don't need to install anything.
|
153
|
+
🗺️ Supported map sizes: 2x2, 4x4 km.
|
154
|
+
⚙️ Advanced settings: disabled.
|
155
|
+
🖼️ Texture dissolving: disabled.
|
145
156
|
Using the [StreamLit](https://maps4fs.streamlit.app) version of the tool is the easiest way to generate a map template. Just open the link and follow the instructions.
|
146
157
|
Note: due to CPU and RAM limitations of the hosting, the generation may take some time. If you need faster processing, use the [Docker version](#option-2-docker-version).<br>
|
147
158
|
|
148
159
|
Using it is easy and doesn't require any guides. Enjoy!
|
149
160
|
|
150
161
|
### Option 2: Docker version
|
151
|
-
🟠 Recommended for users who want
|
162
|
+
🟠 Recommended for users who want bigger maps, fast generation, nice looking textures and advanced settings.
|
163
|
+
🛠️ Launch with one single command.
|
164
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
165
|
+
⚙️ Advanced settings: enabled.
|
166
|
+
🖼️ Texture dissolving: enabled.
|
152
167
|
You can launch the project with minimalistic UI in your browser using Docker. Follow these steps:
|
153
168
|
|
154
169
|
1. Install [Docker](https://docs.docker.com/get-docker/) for your OS.
|
@@ -161,7 +176,10 @@ docker run -d -p 8501:8501 iwatkot/maps4fs
|
|
161
176
|
5. When the map is generated click on the `Download` button to get the map.
|
162
177
|
|
163
178
|
### Option 3: Python package
|
164
|
-
🔴 Recommended for developers
|
179
|
+
🔴 Recommended for developers.
|
180
|
+
🗺️ Supported map sizes: 2x2, 4x4, 8x8, 16x16 km and any custom size.
|
181
|
+
⚙️ Advanced settings: enabled.
|
182
|
+
🖼️ Texture dissolving: enabled.
|
165
183
|
You can use the Python package to generate maps. Follow these steps:
|
166
184
|
|
167
185
|
1. Install the package from PyPI:
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "maps4fs"
|
7
|
-
version = "1.0.
|
7
|
+
version = "1.0.4"
|
8
8
|
description = "Generate map templates for Farming Simulator from real places."
|
9
9
|
authors = [{name = "iwatkot", email = "iwatkot@gmail.com"}]
|
10
10
|
license = {text = "MIT License"}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|