CDDA Command Center - concept and feature request thread
(early development version screenshot)
As there is no cross-platform launcher for CDDA yet and current Windows one is very basic when it comes to functionality, I decided to create a new launcher. In this thread, I will show planned features. If you have any feature requests or want to discuss something related to the program/ask a question, please feel free to write below - it will be easier to make changes now than after the release!
I will release first public version once all basics will be done (launching/updating the game, basic mod/soundpack/tileset/backup management).
GitHub repository of the project: https://github.com/Warlander/CDDA-Command-Center
Quick technical details
Target platforms - Windows 64-bit, Linux 64-bit, OSX
Programming language used - Java 8 or higher
GUI Technology - JavaFX with ControlsFX
Currently planned features are:
- Launching the game
- Checking for stable and unstable releases
- Updating the game
- Auto-detecting any external modifications of game folders and taking them into account inside launcher
- Program database containing informations about CDDA mods, soundpacks and tilesets
- Program database updates not requiring the program update
- Mod manager including ability to automatically update known mods from GitHub or CDDA-CC database
- Soundpack manager including ability to automatically update known soundtracks from GitHub or CDDA-CC database
- Tileset manager including ability to automatically update known tilesets from GitHub or CDDA-CC database
- Save manager
- Backup manager
The database will contain informations about mods, soundpacks and tilesets (below I’m referencing to all of them as just “mods”). Information about them can exist in four forms:
First two are contained in program online database, which can be configured to always stay in sync with GitHub version without need to download new program version:
- GitHub reference (launcher will pull all info about mod from its own GitHub, and use it to auto-update the mod)
- Program database reference (database contains download link to the mod and current version. Increasing version number in database can trigger automatic update of the mod)
Last two exist only locally:
- CDDA included mod (for mods that are included with the game on download - I’m not sure about possible complications of that yet, but ideally launcher would automatically remove them if they are mainlined to reduce the clutter)
- Manually added mod
Hey this sounds really neato. I stopped using the current launcher because my entire folder disappeared after one update and I lost my saves, custom mods, templates, modified sound and gfx packs
Make sure your launcher doesn’t include that feature and I’ll be all over it :]
Tilesets tab would be nice
Not on screenshot but it’s planned feature on list as well.
What kind of backups would you like to see?
(option to revert back to last installed version like in Windows CDDA Game Launcher will always be there)
- Entire game folder backups
- All worlds + saves backups
- Every world with separate backup (merge of backup and world/save manager functionalities)
A couple of non-implemented suggestions for existing launcher:
You know what would be great? Updating by deltas instead of clearing and readding files.
I don’t know how this launcher works, but the other launcher is way too heavy on updates. There really is no need to remove every file and add back.
The question is how to implement this delta-style updating, so yeah it’s mostly a far-future request.
I agree. It would be nice to somehow have the /data/ folder synced to the master repo and then download the exe and replace it. Right now the exes are all bundled in zips so there is no way to eliminate all that extra fluff from the download when you only need to update one JSON file
It might be possible to check what needs updating using Git comparison between two commits. There is one big problem, through - if any source file is changed (which is the case in most builds), entire game needs to be re-downloaded anyway as currently there is no way to get just the executable file. This solution would also need much more code, and therefore be more difficult to maintain/keep bug-free.
If you’re compiling from source, then make already handles it – it compiles only the parts that have changed, and then reassembles the executable, so it’s much faster than a compile from scratch.
I’d assume a launcher miiight automate that if you had a compile environment set up, but it shouldn’t require one. Binary diff and patch tools exist already.
A cross-platform launcher for CDDA!! (´▿`)/
Assuming it wouldn’t be hard, dark mode would be much appreciated! If not, let the window use GTK3 for tux penguin users.
JavaFX is using GTK2 under the hood, but it is possible to do some CSS magic (JavaFX offers full CSS support) to introduce different color themes.
I made a quick test and wildcard selector
* works pretty well, but some nodes need special handling to look good after global color change.
Everything in first tab is functional already, backup creation/restoration is very safe compared to current Windows launcher (launcher makes sure at least one game copy is always intact, and never modifies it without duplicating first). Current progress screenshot:
How long does it take to fetch and display the revision notes in that window? I ask cuz half the reason (other than my files being deleted) I quit using the current launcher is because it took a solid two to three millennia to fetch and parse the update notes and it was always faster for me to just go to the website and read it there while I waited for the update to finish installing and copying my saves over.
Unstable changelog is usually near instant for me (<300 ms), stable changelog takes 1-3 seconds. Parsing itself takes less than a single frame.
The likely problem in case of Windows launcher is that it pulls changelog directly from Jenkins website instead of API, which takes much longer to load and parse. It also got infinite scrolling, but I doubt that’s the issue here.
As long as it isn’t a requirement to use it as a default. Seems good as is.