Jump to content

Recommended Posts

Hey all! I'm DecDuck and for the past couple years, I've been working on and off on a little project called KleiCreator. Written in Java and using the Swing library, KleiCreator is a GUI tool to create mods for Klei Entertainment's games, starting with the one and only Don't Starve Together.

As a strong believer in the powers of open-source and collaborative programming, I want to let this community know what's happening and how they can help. Even just bug testing and opening issues is a huge help, as I don't always test my code properly. Whatever you can do to aid the project is appreciated.

For everyone out there that's doing Hacktoberfest this year, the repository is tagged with the right topics, so any PR you make will count towards your total (yay).

Where I'm at with this project:

  • Project creation & loading, along with save files
  • Configuration system using 'datasets' and string-object key-value entries.
  • Support for dark mode (personally the best feature here)
  • Automatically checks for updates from the GitHub releases using semantic versioning (we're on v0.1.1 as of now)
  • Basic mod detail entry and export (meaning it is translated into the modinfo.lua)
  • Item components (but no export). Components (with tooltips)
    • Armor
    • Edible
    • Equippable
    • FiniteUses
    • Tool
    • Waterproof
  • Recipes (but no export). Unlimited ingredients, plus support for workstation and tech levels
  • Resource system, with textures, animations and 'speech' resources
  • Speech system, with a simple text-based definition
  • PLUGIN SUPPORT (this was a pain, and probably not worth it, but it was fun and I learnt a lot)

I'm looking to: (these are ideas I came up with on the spot and are very long term)

  • Get exports working for items
  • Custom character support
  • Maybe a block/tree coding language/action flow to setup custom scripts (little complicated, I know, but there's probably a library somewhere)
  • A custom speech editor (rather than a text file)
  • Maybe integration with the actual game using a client-side mod?
  • Much more to come

Note: I've moved from GitHub to GitLab to GitHub, so the Git history is a bit of a mess. Although now, I'm definitely planning to keep it on GitHub

Project Repository (GitHub)

  • Sanity 1
  • GL Happy 1

I've realised I haven't explained how KleiCreator works as whole very well. Essentially:

  1. You have a project file (.prog) that has an XML representation of a Java object that's loaded in at runtime
  2. This object has all the information about your mod in a very easy-to-manipulate Java format
  3. When you are finished with your mod, you click the 'Export' button and it converts all these Java objects into Lua code and sets up the correct directory structure
  4. Boom! A (hopefully) functioning mod

So what I mean by "no export" or "Get exports working for items" is that while these have Java representations and you can manipulate the data inside the objects, there's no way of converting to the much needed Lua code. Without export functionality, the feature is a little useless.

Hey!

I've been considering the idea of making a mod maker with a GUI for a while now; great to see you've got one! =D

I'd love to try it out, but the releases page doesn't seem to be working (private?) and I haven't been able to build it from the source code so far (I haven't touched Java in many years and am unfamiliar with Gradle, so it's giving me issues).

If you could post a public release and/or some build instructions, that'd be great :D

Thanks for making something like this. =)

Alright, finally got it working! ^_^

Instructions for anyone else interested:

  1. Download and install JDK 17.
  2. Go to the project page that @DecDuck linked to, click the green "Code" button and use the "Download ZIP" option to download the project (or clone it if you have Git installed).
  3. Extract (if you downloaded it as a ZIP file), then open a console and go to the project folder.
  4. Type "gradlew" to let it install some stuff it needs, if it needs them.
  5. Type "gradlew build" (you may be able to do this without 4, not sure).
  6. A file should be created, app\build\libs\app-0.1.0.jar (the underlined number might be different). Double-click it to run the program.

It looks like it still has some ways to go, but kudos to @DecDuckfor making this! :D

  • Like 1

Thanks for the instructions @Fluxistence !

 

I've now packaged up an actual release (v0.1.1) that should allow you to download the .jar and skip straight to step 6.

 

This version has some changes to the UI as well, making the export & save buttons accessible from anywhere, as well as the latest line of the log at the bottom (because some functions have no user feedback other than a log message). Let me know if you like them / have any suggestions.

 

 

Thanks, that's sure to be more convenient. =)

I would still recommend adding build instructions to the README.md file though.

One other suggestion off the top of my head:
When you exit the program it asks you if you want to save or not. You currently have two options, yes and no, and I assume that closing the question is the same as no.
You really should add a third option to cancel exiting. If someone accidentally closes the program, being forced to either save or lose changes is not a good thing to happen. And closing the dialog should cancel it as well.
Furthermore, I haven't checked this, but make sure that it only asks this if there have been changes to the project. Not only is asking the user if they want to save redundant if there have been no changes, it can also make them question themselves thinking that there were changes and they don't know what they are.

By the way, you may want to consider adding a GitHub action for automatically creating releases from tags or branches.
From what I've seen what you have now just builds it, which I'm guessing is more of a test/validation thing.

Thank you for the suggestions!

I've updated the GitHub actions to automatically build jars and upload them as artifacts. I've also added some build instructions to the README.

I've also taken your suggestions and opened them as issues, so anyone can have a go at them. Any more suggestions would be appreciated, either on here or opened as issues (with the latter being preferred).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...