Scripts - joric/supraland GitHub Wiki

supraland-parser.py

This is based on UE4Parse json output format. Current version is pyUE4Parse commit 90e309b.

How to run

UE4Parse fork is currently syncronized to 90e309b, there may be breaking changes after that. See #20.

  • Install my UE4Parse fork: pip install UE4Parse[tex]@git+https://github.com/joric/pyUE4Parse.git
  • Or the original pip install UE4Parse[tex]@git+https://github.com/MinshuG/pyUE4Parse.git@90e309b
  • Install dependencies: pip install mathutils aes
  • Run run.cmd, follow onscreen instructions.

Note that you have to export levels first, they are large (100+ mb) json files, stored in %temp% directory. Script uses them to export a smaller marker json files (about 300k) that can be used in the interactive map.

Textures

Script exports some maps, you also can export all images in FModel, right click on Materials, "Save Folder's Packages Textures".

  • SupralandSIU/Content/Materials/HUDItems.
  • SupralandSIU/Content/Blueprints/PlayerMap/Textures
  • SupralandSIU/Content/Blueprints/Levelobjects

Areas

SIU introduces areas (levels), each area has its own world matrix. you have to transform objects accordingly. Properties for all STU areas (i.e. names/transforms) are stored in the base area, DLC2_Complete, in the LevelStreamingAlwaysLoaded nodes.

Entities

See Classes.

gentiles.py

Originally "GENERATE SLIPPY MAP TILES" by Jeff Thompson and Dan Davis. I've added jpeg support and 0 scale level support.

You can use lossless compression for the selected levels, see viva-games cmd. I personally don't want lossless compression for this map, 5-8 megs is big enough. I use default pillow jpeg compression level, you can try im.save(..., quality=95).

The base map for Six Inches Under is DLC2_Complete.umap, it includes all other submaps internally (look for LevelTransform keys). The base map size is also included in this umap (look for MapWorldSize).

Supraland Crash doesn't have a map in resources so it was captured in the game engine (not by me) in 2048x2048 (raw_image) and then upscaled to 8192x8192. It's probably possible to upscale other maps as well, say to 32768x32768 (4x) with something like Upscayl but it's quite slow and the size will be 16x (~256 megs for 3 maps).

Unfortunately, you can't put images in LFS for the interactive maps, because LFS-stored files show as empty in GitHub Pages.

UE4Reader.js

Parses UE4 save file format (GVAS). Originaly by LewisPattJr (see 5c2daddbf). I've added "Translation" node support to load player position from SIU, it uses compound "Translation" node instead of "Vector" (since 1.2.3349 there's also a Scale3D component). There are other js GVAS readers (e.g. UESaveTool), but they don't seem compatible with the Supraland saves.

There's no "found" state in the game originally. Maybe it's worth to use 3 categories as in save file without dumbing it down to "found": "ThingsToRemove", "ThingsToActivate", and "ThingsToOpenForever". E.g. items in stores may be removed at start of the game, when player didn't even touch them. The most obvious example are volcano spawners ("EnemySpawn3_C"), see Classes for details.

References