Skip to content

Zipped Save Files #166

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 59 commits into from
Jul 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
4d948f8
First implementation of saving/loading menu
Causeless Aug 14, 2023
ece8b62
Added activity/scene/date info
Causeless Aug 17, 2023
8dcf097
Always show save/load - we should disable the "Create Save" button in…
Causeless Aug 18, 2023
65fef08
Added order-by to save list
Causeless Aug 18, 2023
dd02bc4
Lots of fixes and improvements. Added save menu to main menu. Lots of…
Causeless Aug 18, 2023
79e0a79
Cleanup and consistency with listbox selection. Show "Overwrite" whe…
Causeless Aug 19, 2023
1f10ab7
Added confirmation dialog for overwrite/delete
Causeless Aug 19, 2023
bc69c68
Fixed spacing
Causeless Aug 19, 2023
2f29d79
Hopefully fix build
Causeless Aug 20, 2023
7656ea9
Added read/write with arbitrary streams
Causeless Aug 20, 2023
44a0d78
Prototyping for zip saves...
Causeless Aug 20, 2023
d5619dd
Merge branch 'development' into zip-save-files
Causeless Nov 13, 2023
d621aa6
Fix compile error
Causeless Nov 13, 2023
e16149a
Merge branch 'development' into zip-save-files
Causeless Nov 13, 2023
43f664e
Merge branch 'development' into zip-save-files
Causeless Dec 31, 2023
bfbb06a
Merge remote-tracking branch 'source/zip-save-files' into zip-save-files
traunts Jan 2, 2024
7bb4d19
Merge branch 'development' into zip-save-files
traunts Jan 2, 2024
2c6d289
Merge branch 'development' into zip-save-files
Causeless Jan 5, 2024
59ffb04
Merge branch 'development' into zip-save-files
Causeless Jan 20, 2024
b22c5ab
format
HeliumAnt Jan 20, 2024
882b41d
Merge branch 'development' into zip-save-files
HeliumAnt Jan 20, 2024
c0357ba
fix eof newlines
HeliumAnt Jan 20, 2024
5224634
apply doxygen
HeliumAnt Jan 20, 2024
6507b46
Merge branch 'development' into zip-save-files
HeliumAnt Jan 20, 2024
3542ee6
Merge branch 'development' into zip-save-files
Causeless Jan 21, 2024
6294d3d
Merge branch 'development' into zip-save-files
Causeless Jan 21, 2024
43dff35
Merge branch 'development' into zip-save-files
Causeless Jan 21, 2024
4dfdad6
Merge branch 'development' into zip-save-files
Causeless Jan 21, 2024
56bd587
re-run clang format
Causeless Jan 21, 2024
920f01a
Merge branch 'development' into zip-save-files
Causeless Sep 11, 2024
fdef918
Merge branch 'development' into zip-save-files
Causeless Dec 7, 2024
bb24006
Merge branch 'development' into zip-save-files
Causeless Dec 7, 2024
0853cbe
Merge branch 'development' into zip-save-files
Causeless Feb 28, 2025
1d3c878
Merge branch 'development' into zip-save-files
Causeless Jul 6, 2025
2bc4bdd
added comments so I kinda vaguely remember what I need to do
Causeless Jul 6, 2025
8093ff5
A little progress
Causeless Jul 6, 2025
5863694
a vague probably non-working way to save to memory buffer
Causeless Jul 6, 2025
4de5aa1
saving zips! need to do loading next
Causeless Jul 7, 2025
18313b2
Save/load ini- need to do pngs next
Causeless Jul 8, 2025
51eeba3
Progress towards loading, need to fix up unseen layers
Causeless Jul 8, 2025
b5e109a
Added extra free that migh've caused memory leaks
Causeless Jul 8, 2025
5d9326d
Might as well null these too
Causeless Jul 8, 2025
5fff423
Experimenting with an alternate way to attempt to fake our files as c…
Causeless Jul 8, 2025
49b6221
purge fmem and use SDL png functionality instead (much nicer!)
Causeless Jul 11, 2025
7918fcc
Override datapath to save preset properly
Causeless Jul 11, 2025
6e36aa9
Little more cleanup to (pretend to) save to our savegame .rte instead…
Causeless Jul 11, 2025
716909d
whoops, need path, not id
Causeless Jul 11, 2025
f35c497
Merge branch 'development' into zip-save-files-alternate
Causeless Jul 11, 2025
6c9354e
Seems to finally be working!
Causeless Jul 11, 2025
177bd6b
* Fixed showinjg scene/activity name in menu
Causeless Jul 12, 2025
e3a879c
Correctly save/load unseen layer
Causeless Jul 12, 2025
682e56b
Cleanup
Causeless Jul 12, 2025
2abaff3
Parallelized PNG writing
Causeless Jul 12, 2025
d33b92c
Allow loading a game while a save is happening, as long as they're to…
Causeless Jul 12, 2025
61b7aae
Updated performanceMan text to be accurate
Causeless Jul 12, 2025
3dc473a
Updated and reordered changelog a bit
Causeless Jul 12, 2025
c8d8e09
Hopefully fixed the build
Causeless Jul 12, 2025
3c8b158
No idea what's going on with Linux/MacOS
Causeless Jul 12, 2025
e9d1fec
Bodge for non-windows builds
Causeless Jul 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 22 additions & 18 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
<details><summary><b>Added</b></summary>

- Pathfinding and navigation overhaul, including jetpack/jump-aware pathfinding.
Actors will now intelligently choose their path depending on how high they can jump, instead of always taking the shortest flying path. This will reduce instances of the AI getting stuck while trying to take paths that are impossible for them.
Actors will now choose their path depending on how high they can jump, instead of always taking the shortest flying path. This will reduce instances of the AI getting stuck while trying to take paths that are impossible for them.
Improvements to both `ACrab` and `AHuman` navigation. `ACrab`s are now aware of how to pathfind and navigate using their jetpack, and will use it where applicable. Actors are better at using their jetpack, and will use automovers if their jetpack is not sufficient to reach a destination.
Actors are now more capable and responsive when digging. They will dig to their target if they cannot reach it with their jetpack (for example if there is a long vertical shaft in the route they cannot get up), and they preferentially avoid rocks, metal and other hard substances by digging around them. Actors also dig faster and spend less time idle.
In the `CalculatePath` and `CalculatePathAsync` functions, the parameter `movePathToGround` has been replaced with `jumpHeight`, which is the height in metres the pathfind can jump vertically.
Expand All @@ -26,6 +26,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
Added new `Actor` INI and Lua (R/W) property `CanRun` which denotes whether the Actor can run or not.
Added new `Actor` INI and Lua (R/W) property `CrouchWalkSpeedMultiplier` which is a walking speed multiplier when at max crouch amount.

- New hotkey system for `Actor` and `HeldDevice`.
Pressing a certain new hotkey will mark it as activated on `Actor` and `HeldDevice`, letting scripts make use of the new bindings easily.
`Enum` binding for `HeldDevice.HeldDeviceHotkeyType`: `PRIMARYHOTKEY = 0, AUXILIARYHOTKEY = 1, HELDDEVICEHOTKEYTYPECOUNT = 2`.
`Enum` binding for `Actor.ActorHotkeyType`: `PRIMARYHOTKEY = 0, AUXILIARYHOTKEY = 1, ACTORHOTKEYTYPECOUNT = 2`.
Both `Actor` and `HeldDevice` have the following functions:
`HotkeyActionIsActivated(hotkeyType)` returns whether a certain hotkey action is being activated or not.
`ActivateHotkeyAction(hotkeyType)` activates a certain hotkey action.
`DeactivateHotkeyAction(hotkeyType)` deactivates a certain hotkey action.

- New hotkey bindings.
On Mouse+KB PC the defaults are: Weapon Primary Hotkey on V, Weapon Auxiliary Hotkey on H, Actor Primary Hotkey on X, Actor Auxiliary Hotkey on O.
Added new `Controller` states `WEAPON_PRIMARY_HOTKEYSTART`, `WEAPON_AUXILIARY_HOTKEYSTART`, `ACTOR_PRIMARY_HOTKEYSTART`, `ACTOR_AUXILIARY_HOTKEYSTART`, `WEAPON_PRIMARY_HOTKEY`, `WEAPON_AUXILIARY_HOTKEY`, `ACTOR_PRIMARY_HOTKEY`, `ACTOR_AUXILIARY_HOTKEY`

- Added multiseat support for multiple mice and keyboards on one computer.

- Added optional player argument to all `UInputMan:Key*` Lua Methods. (e.g. `KeyHeld(keycode, player)`) This allows checking individual player's keyboards, when multiple keyboards are available.

- New music system, including a dynamic horizontal sequencing system, under the new music manager `MusicMan`.
`PlayDynamicSong(string songName, string songSectionName, bool playImmediately, bool playTransition, bool smoothFade)` to play a new DynamicSong.
`SetNextDynamicSongSection(string songSectionName, bool playImmediately, bool playTransition, bool smoothFade)` to queue a new DynamicSongSection for the currently playing song.
Expand All @@ -51,19 +68,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- New `AEmitter` and `PEmitter` INI and Lua (R/W) property `PlayBurstSound` which denotes whether the BurstSound should play when appropriate. This should not be confused for a trigger - it's just a enable/disable toggle to avoid having to remove and add BurstSound altogether.

- New `MOSprite` INI and Lua (R/W) integer property `ForcedHFlip` which forces a certain flippedness and disallows anything else from ever changing it without clearing the forced value first. 0 is forced not flipped, 1 forced flipped, and -1 is no force.

- New hotkey bindings.
On Mouse+KB PC the defaults are: Weapon Primary Hotkey on V, Weapon Auxiliary Hotkey on H, Actor Primary Hotkey on X, Actor Auxiliary Hotkey on O.
Added new `Controller` states `WEAPON_PRIMARY_HOTKEYSTART`, `WEAPON_AUXILIARY_HOTKEYSTART`, `ACTOR_PRIMARY_HOTKEYSTART`, `ACTOR_AUXILIARY_HOTKEYSTART`, `WEAPON_PRIMARY_HOTKEY`, `WEAPON_AUXILIARY_HOTKEY`, `ACTOR_PRIMARY_HOTKEY`, `ACTOR_AUXILIARY_HOTKEY`

- New hotkey system for `Actor` and `HeldDevice`.
Pressing a certain new hotkey will mark it as activated on `Actor` and `HeldDevice`, letting scripts make use of the new bindings easily.
`Enum` binding for `HeldDevice.HeldDeviceHotkeyType`: `PRIMARYHOTKEY = 0, AUXILIARYHOTKEY = 1, HELDDEVICEHOTKEYTYPECOUNT = 2`.
`Enum` binding for `Actor.ActorHotkeyType`: `PRIMARYHOTKEY = 0, AUXILIARYHOTKEY = 1, ACTORHOTKEYTYPECOUNT = 2`.
Both `Actor` and `HeldDevice` have the following functions:
`HotkeyActionIsActivated(hotkeyType)` returns whether a certain hotkey action is being activated or not.
`ActivateHotkeyAction(hotkeyType)` activates a certain hotkey action.
`DeactivateHotkeyAction(hotkeyType)` deactivates a certain hotkey action.

- New `Controller` state `WEAPON_RELOADHELD`, which is true every frame reload input is held (as opposed to `WEAPON_RELOAD` which is only true once when pressed).

Expand Down Expand Up @@ -134,10 +138,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
```
Original bindings with no scale argument are untouched and can be called as they were.

- Added multiseat support for multiple mice and keyboards on one computer.

- Added optional player argument to all `UInputMan:Key*` Lua Methods. (e.g. `KeyHeld(keycode, player)`) This allows checking individual player's keyboards, when multiple keyboards are available.

</details>

<details><summary><b>Changed</b></summary>
Expand All @@ -148,6 +148,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
The Ronin Scrambler, the basic scanner, and `SceneMan:CastUnseenRay` have been changed to accomodate fog-of-war resolutions as fine as 1x1 and as coarse as 20x20.
The fog-of-war revealing code is now multithreaded to increase performance.

- Save files are now compressed and stored in a single file, instead of a directory.
Savefiles have the extension `.ccsave`, but their underlying format is really just a `.zip` file. This can be opened and modified as before with any zip file viewer.
These savefiles can be safely renamed and moved without breaking the savegame, unlike before.

- All vanilla scenario activities have had their settings polished, respecting settings which make sense and disabling settings which don't.
You can now have fog of war in the test scene, and can no longer require path to orbit in Zero-G Diggers-Only One Man Army.

Expand Down
Loading