Hello everyone, update 0.15 is now live.
This update has taken quite a bit longer than usual, which is primarily due to some massive changes to critical systems that also required a lot of testing to prevent bugs.
This update brings major improvements to memory usage, saving, and overall stability to meet new requirements and expectations. A significant portion of the backend has been reworked to support these changes.
Backup Reminder:
Creating backups periodically is always a good practice, especially with early access software.
Your projects can be found in your Documents folder:
(E.g. C:\\Users\\USERNAME\\Documents\\Card Engine\\Projects)
Database
The old database system loaded everything into memory when opening a project. While this ensured a smooth experience with little to no loading, it did not scale well. As the asset browser grew with built in assets plus your custom assets, it led to high memory usage, instability, and even crashes on weaker computers with low RAM.
To address this, I’ve rebuilt the entire database from the ground up with a focus on dynamic asset loading and unloading. Assets are now loaded on demand, which reduces active memory usage and improves scalability significantly.
This also opens the door for potential changes to the asset browser, such as excluding certain built in categories from loading to avoid UI clutter for users only using custom assets. This is something that might be explored in the future.
You’ll notice more frequent loading screens or loading moments during use, this is the trade-off for better stability in large projects. I plan to improve the UX around this (like adding more loading bars) as we approach the polishing phase, closer to release.
Saving
The save system has also been overhauled. The previous autosave approach didn’t scale well, especially in projects with 1000+ cards, where frequent autosaving caused freezes and interruptions, or even crashing the app on weaker systems.
The new system replaces autosave with manual saving and a “Save before quit” prompt. This provides more control over saving and helps avoid workflow disruptions in larger projects. This also allows you to revert project wide changes by simply not saving. You will now see a progress bar while saving as well.
You can save manually via the top-right dropdown or by pressing CTRL + S. If you attempt to close a project or the app, you’ll be prompted to save.
Can’t load project known issue
Some users have reported corrupted project files leading to projects that won’t load. This has been rare, and despite extensive testing, I have not been able to reproduce the issue on my end, making it difficult to diagnose or confirm fixes.
Thus, any fixes related to this should be considered tentative, as they lack verification.
Card Engine stores backups of previous successful saves in /Temp folders. Every user who reached out about this bug has either been guided through a fix or stopped following up, so I’ve assumed it was resolved in those cases.
While the issue is likely fixed with the new save system changes, I’ve also added automatic recovery for detected file corruption from those same backup files. If anyone has experienced this issue and can’t open their project and hasn’t reached out for support, opening Card Engine should now automatically resolve corrupted file issues.
Patch Notes
Save system
New manual save system replaces the old autosave system to improve scalability, performance, and stability
Files are now locked while Card Engine writes to them, preventing potential issues if other programs access them during the write to file process
Implemented disk flushing in file-saving operations to prevent partial writes (corrupted files) if the app is force-closed unexpectedly due to crashes, OS crashes, loss of power or other critical failures
With the new manual save system, I’ve also added CTRL + S as a shortcut for triggering a save
Database
The entire database system has been remade from scratch to support new requirements and expectations
Assets are now loaded on demand and unloaded when no longer needed. This reduces active memory usage and raises the ceiling for how many assets can be used in a project
Custom assets can now be re-loaded on card face refreshes or by re-opening the custom category in the asset browser instead of requiring a full project reload. (e.g. placing an image in the /CustomAssets folder of your project, then simply re-opening the category in the asset browser, and it will just be there)
Changes and improvements
The font selection dropdown menu now loads fonts asynchronously and uses the new database system for reduced memory overhead
Removed all redundant automatic save triggers
Removed the “Seconds since last autosave” tooltip from the save button in the central navigation panel (now shown in the new Save Changes window)
Removed the autosave frequency option from the settings
Removed invisible spacing between text buttons in the top-right central navigation panel. It should now be smoother and easier to click
The selected font name text in the editor under the text tab no longer uses the actual font, it is now displayed in the global Arial UI font to ensure readability even at smaller resolutions
Added padding to the Selected font name text
A loading bar is now shown while loading projects in the Project Hub regardless of whether it’s initiated from the refresh button or the Hub being opened
The fade effect when entering the Project Hub now waits until all loading is complete to make it smoother
The fade effect will now play if refreshing the projects list in the Project Hub through the refresh button
Removed the brightened screen behind the loading bar in the Project Hub to make it look the same as the loaded project UI. The transition between them should now look smoother
Pop-up panel backgrounds are now slightly brighter
A notification will now be shown if the save process fails
The asset browser will now remember the last category that was open when used for swapping sprites in an image element
Card Engine now creates snapshots in each project's Temp folder when launched, if the application version differs from the project version. This enables rollback in case a new update introduces bugs
Improved asset recovery features: If a custom image is deleted, all instances of it across the project turn into red warning triangles. If the asset is re-imported (via the asset browser importer or by dropping the file into /customAssets), the new database system will immediately restore them during card face refreshes, as long as the category name and asset names are the same
Fixes
Fixed font inconsistencies in the UI. All UI fonts should now be Arial
Fixed an issue where the edit text mouse icon did not show when hovering certain input fields (e.g. card name in the editor)
Top-right notifications now appear behind the Central navigation dropdown panel. It will no longer block the buttons
Fixed a 1px line gap in frame_17
Fixed a 1px line gap in the font selection dropdown search bar field
Fixed settings data being saved twice when leaving the Project Hub
Fixed an issue with overly dark colors when hovering the search bar in the font selection dropdown
Fixed error message structure if an unexpected data type is loaded (e.g. mismatch from manual file edits)
Custom categories can no longer use the same names as built-in ones, as this caused an issue where only custom assets would appear when opening the built in category with the same name, due to custom assets taking priority. A “Name unavailable” notification will be shown when attempting to create the category if a name conflict occurs now
Fixed an issue where variable texts on Templates and cards in the recycle bin were not refreshed in the collection display after changing a variable key word
Fixed an issue where variable texts in the editor were not refreshed if changing a variable key word
Fixed incorrect topbar color in the image picker within the asset browser
Fixed incorrect topbar colors in the project hub (Main Menu)
Fixed version number not updating correctly in the settings panel in the Project Hub (Main menu)
Fixed the right-click menu going out of bounds when right-clicking assets on the far right in the asset browser
Fixed DPI metadata not being added to exported image files in landscape and portrait mode, which defaulted to 96 instead of the intended value of 300
Fixed the preview text in the variables window not formatting as an icon when using asset names instead of indexes
Fixed a bug where importing pre-made example templates failed to assign element IDs correctly, preventing actions like deleting a template-derived element from propagating to regular cards using that template
