# SkiEO Custom Maps By **Albatar (Élie Millon)**. Custom Maps adds playable custom maps and Lua mods to **Ski-E-O!**. The `skieomod` command-line tool installs the loader, keeps it updated before Steam Workshop becomes available, and helps you create and test your own projects. **Veymont**, also by Albatar (Élie Millon), is included and installed automatically. Explore Gresse-en-Vercors, the Grand Veymont and Mont Aiguille on an 8.064 × 12.096 km map with real terrain, snow, forests, 20 trails and nine lift alignments to see a complete example scene before making your own map. ## Install and play You need **Python 3.10 or later**, **pipx** on your PATH, and the Windows edition of Ski-E-O! or its demo installed through Steam. Linux with Proton is supported. Launch the game once, then close it before installation. ```sh pipx install --force --index-url https://skieomap.emillon.fr/downloads/pypi/ skieo-custom-map skieomod setup ``` The installation command always selects the latest published version. `setup` finds your Steam installation, installs UE4SS and Custom Maps, configures Proton when needed, and installs Veymont. If detection fails, use `skieomod setup --game-dir "PATH TO GAME"`. UE4SS comes from the project's retained, tested build. Its versioned archive and checksum stay fixed when upstream publishes a new experimental build. Start the game through Steam and select **New Game → Custom Map → Veymont**. No Workshop subscription or separate map download is required. ## Stay updated If you installed CLI 1.6 or earlier, repeat the installation command once: the expanded example needs CLI 1.7 or later. Close the game, then run: ```sh skieomod update --check skieomod update ``` Updates come from the project server, verify their checksums, back up replaced loader files and preserve existing maps and settings. Repeat the installation command above when you need to update the CLI itself. ## Create your first map Already have a heightmap? The [illustrated English tutorial](https://skieomap.emillon.fr/tutorials/heightmap/) walks through creation and testing without a graphical editor. CLI 1.10 builds from headerless R16LE/R16BE or non-interlaced 16-bit grayscale PNG without extra dependencies. Put the source file inside the project and add `build.heightmap` to `custom-map.json`: ```json "build": { "heightmap": { "file": "Terrain/source-heightmap.png", "spacing_meters": 8, "elevation_meters": [800, 2200] } } ``` Run `skieomod build my-map`, then `skieomod run my-map`. Build reads PNG dimensions and calculates the extent, elevation encoding, centred origin and preview. It writes the derived terrain metadata and portable R16 after validation, with backups in `.heightmap-backups/`, while retaining the original input. Raw R16 additionally needs `vertices: [width, height]` and optionally `format: "r16be"`. Supply your actual elevation endpoints, or the exporter's `height_scale_meters` and `height_offset_meters` instead of `elevation_meters`. ```sh skieomod help skieomod create map --output my-map --name "My resort" --author "Your name" skieomod build my-map skieomod run my-map ``` Maps can exceed 8 km and use rectangular extents. For a 16 × 12 km starter: ```sh skieomod create map --output large-map --size 16000 12000 --spacing 8 ``` Both lengths are in metres and must be multiples of the source spacing. The generated terrain guide explains resolution and rendering detail. New map projects also include `Vegetation/forest.json`: edit its `x` and `y` positions in metres. The build compiles it to SKXY; only binary trees enter the game. To bake erosion, green ground cover and automatic trees from the heightmap, set `build.heightmap.processing` and `build.vegetation` in the same JSON. The [vegetation guide](https://skieomap.emillon.fr/tutorials/heightmap/#bake) includes a complete preset. Every build starts from your original source; generated terrain and trees are reproducible. Open `my-map/README.md` and `my-map/docs/` for the commented scripts and next steps. `create mod` and `create mapmod` provide other templates; `skieomod help COMMAND` explains each command. This is a prerelease project: game updates can affect compatibility. Veymont credits IGN LiDAR HD (Open Licence v2.0) and OpenStreetMap contributors (ODbL 1.0); some demo lifts use substitute chairlift models.