All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fuck if I know 🤷♀️
- Fix some bugs by reverting to OL-main
- Bumped the supported version of Spelunky
- Bumped the supported version of Spelunky
- Force related files to always be loaded from the same mod when randomly selecting character, e.g. load
char_black.png
andchar_black.name
from the same mod - Support for Korean, Simplified Chinese, Traditional Chinese, Japanese, Russian and emoji fonts for the ImGui overlay
- Add automatic shader hot-loading for all types of shader mods
- In speedrun mode explicitly disables all unnecessary hooks to reduce the chance of bugs sneaking into speedrun mode
- Potential crashes on some CPUs when mods use
.wav
files - Several issues related to random character select and customizable character sheets
- Issue that caused some turkey sprites from the turkey sprite sheet not to be used
- Issue that would result in vanilla pet sprites not being loaded in speedrun mode
- Issue that made Playlunky think a level mod was loaded the first time it is started after disabling said mod
- Dropped support for jpg and jpg2000
- Added support for the allowed mods in speedrun mode
- Huge bump of OL features
- Support for crossing pipes, including a
pipe_intersection
andpipe_crossing
tilecode (disabled by default as it will cause crashes in MP) - Enabled OL's fix for out-of-bounds liquids
- An issue that would not allow scripts to define textures based on vanilla texture files
- A rare crash caused from loading files off the main thread
- Added missing string-tables
- Crash when running speedrun mode
- Bugfix for vines that have 0, 3 or 4 connecting vines (thanks Omelette)
- Bumped the supported version of Spelunky
- Mods can ship with a
savegame.sav
file, users will then load from and save to that file. Can be disabled inplaylunky.ini
viaallow_save_game_mods
, defaults toon
. block_save_game
to block the game from saving tosavegame.sav
, in case you want to use mods without affecting your save. Set inplaylunky.ini
, defaults tooff
.- Dev option
enable_sprite_hot_loading
which automatically reloads sprite sheets (vanilla sheets, entity sheets and custom mapping sheets) when they change during runtime. This means you can work on your sheets without restarting the game. Set inplaylunky.ini
, defaults tooff
. - Dev option
sprite_hot_load_delay
to declare the delay measured in ms between a sheet changing and the game reloading it. Set inplaylunky.ini
, defaults to400
. - Reloading custom textures requires a call to
reload_texture
or a call with an identical texture definition todefine_texture
(thus reloading a script mod will likely reload all custom textures).
- Probably fixed theme-swap bug that was sometimes triggered after playing online.
- Bumped the supported version of Spelunky
- Reenabled script mods
- An option that allows loading plain
.str
files, disable by default. This option only changes default behavior, it's not adding any feature.
- Reenable character name, gender and heart color mods
- Bumped the supported version of Spelunky
- Disabled script mods while that is being worked on
- Disable character name, gender and heart color mods
- Some other mods will likely not work either
- An unmissable popup when starting up, give us some time
- An option to make FMOD update synchronously, this fixes some crashes that can happen with audio mods
- Added a Playlunky specific ImGui .ini file
- The cursed audio crash that plagued ancient CPUs is now gone
- A couple of crashes that could occur when using custom textures (fix from OL)
- Lua console, check the Wiki for more details
- Latest Lua features from OL
- Comes with a big refactor of the systems backing Lua scripts
- Crackling audio when using cached decoded audio files
- Random issues with custom and modded audio playback
- Just release latest Lua features as stable
- Sprite sheets starting with
char_
were never converted to be readable by the game, if they are not known files they should be tho
- Allows using images with weird bit depth, that said, the game wants 8 bits per channel so just save your images with that please
- A bug that prevented script mods from loading the first time the game is started after disabling speedrun mode
- Another bug with the custom sprite mapping, should be the last one 🤞
- Revert accidentally released experimental changes
- Issue with loading images without an alpha channel
- Bug that prevented custom sprite mapping from working
- A crash when running the daily
- Not correctly auto-recognizing speedrun mode from enabled mods
- Broken heart color read from char_*.json file when the
0x
prefix was not present
- Support for more image formats like .webp, .tiff, .bmp and others
- Newest features from Overlunky
- Newest features from Overlunky
- Character names, heart color and gender control in one json file
- Corrupted audio when source file was not 32 bits per sample
- Newest features from Overlunky (texture API)
- Bug with loose audio mods not loading the loose files
- New level gen API to be used from Lua
- Some issues with corrupt custom audio, both from loose file mods as well as completely custom audio
- Fixed some issues with cache invalidation when a mod uses custom tile map
- Fixed generation of load_order.txt when a mod ships mod_info.json
- Bumped the supported version of Spelunky
- Fixed a bug with callbacks running at wrong
- Fixed a possible crash with new pet entity sheets while stitching heads
- Support for character heart color mods
- Support for pet entity sheets v2
- Upscale output sprite sheets based on input entity sheets
- Fixed a bug with upscaled entity sheets
- Experimental extended sound API
- Double messages from scrips
- Bumped Overlunky latest
- Support for character name changes in Character Select
- Got some unreleased Overlunky features, don't rely on them
- Slightly improved startup times with disabled mods
- Limit the number of messages that can be pushed from Lua
- Issue with modified date on files being read wrong, causing cache to sometimes invalidate without reason
- Load order issues when using both old and new pets/mounts entity sheets at once
- Crash when playing the daily challenge
- Stronger posterization on sticker pixel art gen
- Scripts now execute according to load order
- Mod folder fixup moves only known texture and audio files
- Make the watermark almost invisible during gameplay
- Made the log output when extracting game assets a bit clearer
- Invalidate cache when sprite settings change
- Bug when loading old mounts entity sheets
- Crash with partially incomplete character sheets
- Wrap script descriptions instead of cutting them off
- Correctly reinitialize scripts when reloading them
- All the new entity sheets
- Custom sprite sheet mapping
- Warning for unsafe scripts
- Speedrun mode that loads only character mods and has no watermark during gameplay
- The need for steam_appid.txt when running Playlunky
- Bumped Overlunky to get some new features
- Issue with cached string tables and plain string table mods
- A bug in playlunky.ini generation
- Script support based on Overlunky
- Nightly builds that always stay up to date with Overlunky WHIP
- Support for new character sheets
- Options to control sticker/journal generation
- Option to generate sticker pixel art
- Option to disable loose file warning
- Generate .ini file instead of shipping it
- Bumped the supported version of Spelunky
- Moved mod .db into the global Packs/.db folder
- Hopefully made the rendering hooks compatible with Windows 7 (or more generally not Windows 10)
- Correctly handle deleted mods
- Correctly regenerate stickers, journal and characters when modifying a plain character sheet
- Avoid converting texture files that are not read by the game
- Don't leak memory when unzipping a mod
- A typo in a log message
- A crash when no mods were enabled
- Another typo in a log message
- Problem with the installer expecting to be run from a folder called "Spelunky 2"
- Some issues with files that use weird case
- Issue where loose audio would be cached even if the setting was disabled
- String mods work again now since the removal of strings08.str
- Removed cursor since it's not needed and interferes with Overlunky
- Hooks the games rendering now to add imgui in preparation for script support (which is still ways off)
- On-screen error printouts
- A watermark with version and all
- Merged sticker gen with entity merging code, thus full char sheets and regular char sheets work well together
- Make random character select work with full char sheets
- Correctly invalidate combined sprite sheets when updating load_order.txt (might have to be optimized in the future)
- Bad size in turkey sheet
- Bad tile pos for journal entry of hired hand
- Small bug that caused a tiny performance loss during startup
- Internal issue with mod names that sometimes caused issues with manually editing load_order.txt
- Issue where Playlunky would move unkown files into the top level folder when the intention was to move files to their known folders.
- A typo in a logging message.
- Bumped the supported version of Spelunky... again...
- Bumped the supported version of Spelunky.
- Loose audio file loading for both .wav and .ogg files. Supported formats are .wav, vorbis .ogg, opus .ogg, .flac and .mp3
- Option to determine whether loose audio files should be enabled. This is in order to avoid slow startup times or additional disk usage.
- Option to control whether audio files should be cached in a decoded format or not. This is a tradeoff where enabling this option will result in faster startup times but require additional disk usage.
- mod.db version, this will force a regeneration of assets on first load
- Version printouts for possibly easier debugging.
- Fixed an issue when a shader mod would modify more than one function.
- Now support loading loose .bank files, meaning audio mods will work with Playlunky.
- Fixed an issue with extracting assets that have non-matching hash length.
- Bumped the supported version of Spelunky.
- Removed an erroneous double occurrence of lime, resulting in wrong sticker generation.
- Add a playlunky.ini file for future configuration.
- Add support for Modlunky full sheets, e.g. char_black_full.png or poochie_full.png, for pets, mounts and characters.
- Add random mode for character mods (configured in playlunky.ini), which picks a random character mod from all installed mods per color.
- Bumped the supported version of Spelunky.
- Fix a crash when deleting a mod folder that was previously loaded
- Bumped the supported version of Spelunky.
- Add a mod installer that should make it super easy to install mods now (also works for Modlunky2 since it loads mods from the same folder)
- Shader mods now copy all parts that are not known into the shader (instead of being ignored)
- Shader mods are also properly parsed for comments (single line '//' and multiline '/*' comments should work)
- Slightly optimized pattern lookup in Spel2.exe
- Bumped OpenCV to latest
- Fix a mods folder structure unconditionally, which resolves some rare errors when changing existing mods
- Fixed an issue with pattern lookup in Spel2.exe that wouldn't look for the whole pattern if it contained null-characters
- Add support for (relatively) arbitrary character sheet sizes for sticker generation
- Trim strings before hashing, which should make this release compatible with Modlunky2
- Switched from stl hash to crc32, which should make this release compatible with Modlunky2
- Preliminary support for sparse string modding
- Support for sparse shader modding (i.e. placing a
shaders_mod.hlsl
into your mod that contains only modded functions) - Correctly regenerate stickers and shaders when mods get enabled or disabled
- mod.db version, this will force a regeneration of assets on first load
- Always show console on startup so users have some feedback while mods are loaded
- Issue that caused character stickers to be generated every time the game starts
- A rare crash with some of the games logging messages
- Potential graphical errors during character sticker generation
- Asset extraction for making future features more feasible (thanks to Modlunky team for their implementation)
- Automatic sticker and journal generation for character mods (thanks @Dregu)
- mod.db format for better compatibility with future versions
- Issue of mismatching file extension for DDS files extracted from the game executable
- Issue that cause the load order to be inverted
- Delete converted assets from the .db folder when their source assets were deleted
- Automatic mod reorganization, all files in a mod will be placed into their appropriate folders on first load
- Ability to disable mods in
load_order.txt
.
- File lookup at root, since mods are now organized correctly instead
- Issue with mods that have spaces in their names
- Error in readme.txt
- Automatic unzipping of zipped mods in the Mods/Packs folder
- Error popup on version mismatch
- A readme.txt with usage instructions
- Bumped supported version to 1.20.0j
- File lookup at the root when proper folder structure not present (to align with Modlunky)
- Heap corruption when loading loose files (because of 24 missing bytes in the allocation)
- Mod-Management based on the folder structure of Modlunky
- Automatic png to dds conversion
- Loose file loading