Code Monkey home page Code Monkey logo

macata-launcher's Introduction

   _____         _________         __           .____                               .__                  
  /     \ _____  \_   ___ \_____ _/  |______    |    |   _____   __ __  ____   ____ |  |__   ___________ 
 /  \ /  \\__  \ /    \  \/\__  \\   __\__  \   |    |   \__  \ |  |  \/    \_/ ___\|  |  \_/ __ \_  __ \
/    Y    \/ __ \\     \____/ __ \|  |  / __ \_ |    |___ / __ \|  |  /   |  \  \___|   Y  \  ___/|  | \/
\____|__  (____  /\______  (____  /__| (____  / |_______ (____  /____/|___|  /\___  >___|  /\___  >__|   
        \/     \/        \/     \/          \/          \/    \/           \/     \/     \/     \/       

MaCata - A Cataclysm: DDA macOS Launcher

animated


GitHub GitHub Workflow Status (with branch) GitHub Workflow Status (with branch)

Requirements

MaCata requires Java 11 to run.

Installation

Just put the macatalauncher.jar in some folder of your choice and double click!

Features

Current

  • Launch game & launch from last played world
  • Save management & backups
    • Custom save directory is located at /<macata_launcher_folder>/saves
    • Custom backups directory is located at /<macata_launcher_folder>/backups
  • Centralized data folder: put all your mods/tilesets/sounds into the launcher's custom data directory (made after the first launch of the game through the launcher), and they will get picked up by the game even if you later upgrade or swap CDDA binaries.
    • No more having to move folders between Cataclysm.apps on each Experimental upgrade!
    • This shared data directory is located at /<macata_launcher_folder>/userdir
  • Soundpack management

Planned

  • Mod support (soon)
  • Tileset support (soon)
  • Automatic CDDA binary updates & backups

Maybes

  • Windows/Linux support
    • I want to focus mainly on macOS since there are already some excellent launchers for Windows and Linux already.
      • Having said that, given the current launcher architecture, I would like to think it wouldn't be terribly hard to support Linux and/or Windows. Just a couple of changes to the launcher class maybe? PRs welcome!

FAQ

Why Yet Another Launcher?

Story time! TL:DR at the bottom:

A couple of years ago, during the pandemic, I discovered Cataclysm - Dark Days Ahead. Being a zombie game and a survival game aficionado, upon finding one that scratched both itches in such a comprehensive way that I hadn't seen since Project Zomboid, well... lets just say I got hooked immediately.

I started my CDDA journey on Windows, on which remyroy's launcher was an absolute boon for getting a newbie like me started. When I had found out it was no longer receiving updates, I picked up its maintenance in an effort to keep my main CDDA driver alive.

Other tools emerged soon afterwards, like the incredible Catapult Launcher which is doubly excellent for both providing Linux support and for being able to use it for Cataclysm Bright Nights.

Some time later, I shifted into using a Mac as my main development machine, and thus I started playing CDDA on it. Unfortunately for me though, I couldn't find any launcher that worked with the Mac version of the game! Remyroy's launcher is too specifically tailored for Windows for me to ever be able to add cross-platform support without having to completely rewrite the tool from scratch. As for Catapult, being developed in Godot, I had high hopes I could make it work with a bit of elbow grease. Alas, I like to think I got pretty far, but I could never make it function completely (I never got the .dmg unpacking to work quite right on GDScript).

Defeated, I had resigned myself to waiting until someone, anyone, made a launcher that worked with Mac. I wasn't asking for much, just a tool that allowed me to manage my saves and could spare me the tedium of having to use bash scripts for automating the tasks. Until one day I snapped...

thanos-fine-ill-do-it-myself.gif

TL:DR

At the time of writing this, I haven't ever come across a launcher that worked with macOS.

Why Java? If you were focusing on MacOS, wouldn't it have been better to write it as a native app?

I am mainly a Java developer. Plus, Java has a humongous library collection for virtually every situation that could be conceived; and Swing is an incredibly boring & mature (both good things!) toolkit for GUI apps. What is not to love? ;)

macata-launcher's People

Contributors

dazednconfused- avatar fa-zz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

fa-zz

macata-launcher's Issues

Have the launcher refresh the GUI on exiting the game

...so it can pick up the latest save, and enable the "Run latest world" button. Currently the Run button launches the game and immediately refreshes, and ideally it should monitor the game's process in order to refresh upon exit.

Show renaming errors in backups section

ie: Ehen renaming the save into something that already exists, it fails silently (though without crashes, which is nice). One must look at the logs in order to see that the file was not renamed only because its name already existed

Can't launch compiled jar

Thanks a lot for developing a launcher for Mac! Unfortunately, I was unable to compile a functional .jar to launch and test the app. I'm not experienced with Java at all so no ideas on what could have gone wrong, sorry.
The command sequence was as follows:
git clone https://github.com/DazedNConfused-/macata-launcher.git

Then in the root of cloned git:
mvn validate
mvn compile
mvn test
mvn package
mvn verify
cd target
java -jar macatalauncher-0.1.jar

The outputs of the commands are attached in the text file compile_console.txt.
I'm using java 19.0.2 and maven 3.9.0. The maven functions ran without any errors and with some warnings in artifact relocation (?).
The launch error is:
Error: LinkageError occurred while loading main class com.dazednconfused.catalauncher.gui.MainWindow
java.lang.ClassFormatError: Duplicate method name "$$$getFont$$$" with signature "(Ljava.lang.String;IILjava.awt.Font;)Ljava.awt.Font;" in class file com/dazednconfused/catalauncher/gui/MainWindow

Thanks for your attention!

Launcher auto-updater

As new releases of the launcher pile up, the need for a way to notify of newer versions of the launcher increases.

Should add a button in the Help menu, something akin to 'check for updates' that polls GitHub's releases...

Be able to specify compression level for save backups as configurable parameter

Title mostly. As saves increase in size, the time required to make the backups (unsurprisingly) increases. The fact that the backup manager relies on the highest possible compression contributes to the "slowness".

It would be a nice QoL enhancement that this compression level could be specified by the user, so he may be able to select "store"-level compression and have blazing fast backups.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.