jotd666 / gods-deluxe

MIT License
33 stars 3 forks source link

Project modernization #4

Open mbugni opened 11 months ago

mbugni commented 11 months ago

Preamble

Once upon a time

I loved this game when I was student, during an ancient time.

Today

I'm a Java developer and a Linux expert user, not a game developer.

Goal

I forked this project to experiment with some enhancement, especially to modernize code, building and dependencies.

Build enhancements

I used Maven to automate building and create a single .jar executable. An optional .zip containing just assets can be done as well.

The game can be run now with something like:

java -DROOT_DIR="/your/assets/folder" -jar gods-deluxe.jar

I adopted Maven Wrapper for portable builds:

./mvnw clean package 

Code enhancements (to do)

Delivery (to do)

Automatic builds will make simpler to create self-contained deliverables. My plan is to provide a Flatpak app for Linux users and possibly publish it on Flathub, just like I did with other games.

I think something similar can be done for Windows, but I'm not an expert of that platform.

Conclusion

@jotd666 what do you think about?

mbugni commented 11 months ago

Meanwhile I opened a pull request.

jotd666 commented 11 months ago

Hi,

Thanks for this. Glad that someone takes interest in the project. Doing a .jar instead of all those .classes is certainly a good idea. Is it possible to also put the resources (non-code) in the .jar file to get rid of ROOT_DIR variable ?

mbugni commented 11 months ago

Thanks for accepting my collaboration.

Is it possible to also put the resources (non-code) in the .jar file to get rid of ROOT_DIR variable ?

It's one of the goal I would like to get. The next release could contain 3 artifacts (automatically generated by Maven):

For those who wants to experiments with assets (like sounds/music):

java -DROOT_DIR="/your/assets/folder" -jar gods-deluxe-engine.jar

For those who want just play:

java -jar gods-deluxe.jar

But, if resources are well managed, it could be just one .jar (engine + assets) that can recognize the ROOT_DIR parameter and use it (if provided). Probably the best solution.

Before to do that, I suggest to improve other areas like:

If you agree, we can open issues for each activity and Git branches to manage them as PR.

jotd666 commented 11 months ago

That looks very good. You set the priorities, personally I'm not motivated to continue this project. Plus I got really tired of java :)

Is the PR thing necessary now that you have access to the repository?

Another issue: my old webpage is now gone, and there's no binary distribution of the game or even the music packs. Those should be in the "RELEASE" section of github maybe. I'm not paying hosting for that. My other stuff is on itch.io but it's specialized to Amiga assembly games I don't want to add other stuff and confuse people.

Le mar. 3 oct. 2023 à 10:39, Massi aka Ergosum @.***> a écrit :

Thanks for accepting my collaboration.

Is it possible to also put the resources (non-code) in the .jar file to get rid of ROOT_DIR variable ?

It's one of the goal I would like to get. The next release could contain 3 artifacts (automatically generated by Maven):

  • gods-deluxe-engine.jar -> Engine only
  • gods-deluxe-assets.zip -> Immutable assets only
  • gods-deluxe.jar -> Engine and assets

For those who wants to experiments with assets (like sounds/music):

java -DROOT_DIR="/your/assets/folder" -jar gods-deluxe-engine.jar

For those who want just play:

java -jar gods-deluxe.jar

But, if resources are well managed, it could be just one .jar (engine + assets) that can recognize the ROOT_DIR parameter and use it (if provided). Probably the best solution.

Before to do that, I suggest to improve other areas like:

  • Full Java 8 porting (JVM 1.8 it's available even for old 32-bit systems)
  • Relocable configurations (eg using .properties)
  • Remove local solutions in favour of Java APIs

If you agree, we can open issues for each activity and Git branches to manage them as PR.

— Reply to this email directly, view it on GitHub https://github.com/jotd666/gods-deluxe/issues/4#issuecomment-1744483049, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD54CEXBDGNWBKZTP75O4S3X5PFKNAVCNFSM6AAAAAA5MJYN2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONBUGQ4DGMBUHE . You are receiving this because you were mentioned.Message ID: @.***>

mbugni commented 11 months ago

Is the PR thing necessary now that you have access to the repository?

No, but four eyes are better than two. There are thing that I'm not able to test, like the editor. If you can take a look to PRs, it will be appreciated.

Another issue: my old webpage is now gone, and there's no binary distribution of the game or even the music packs.

Do you mean this one !?

I mirrored that, just in case.

I can turn the readme.txt into markdown format, so it can be the landing page for the project.

Those should be in the "RELEASE" section of github maybe.

Yes, GitHub releases area is the right place for deliverables.

I'm not paying hosting for that.

You can use GitHub pages for free. This is my page.

jotd666 commented 10 months ago

My old website is down now.

Thanks for your hard work!

mbugni commented 10 months ago

Current status (0.9.0-SNAPSHOT)

I think a release can be done.

jotd666 commented 10 months ago

Awesome work. thanks for the update!

Le jeu. 26 oct. 2023, 12:54, Massi aka Ergosum @.***> a écrit :

Current status (0.9.0-SNAPSHOT)

  • Filesystem issues are fixed (file names, paths, etc.) for Linux (MacOS user should benefit too)
  • Old/embedded dependencies replaced with most recently available
  • Assets and data folders can be relocated (by providing optional parameters -DGODS_ASSETS_DIR and -DGODS_DATA_DIR)
  • Classes and dependencies are packed in a single .jar
  • Metadata for Linux packaging are provided
  • The distro zip file can be created with command ./mvnw package

I think a release can be done.

— Reply to this email directly, view it on GitHub https://github.com/jotd666/gods-deluxe/issues/4#issuecomment-1780884137, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD54CESOO2RLRYTWMR7FTE3YBI6OFAVCNFSM6AAAAAA5MJYN2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBQHA4DIMJTG4 . You are receiving this because you were mentioned.Message ID: @.***>

mbugni commented 10 months ago

@jotd666 can you please take a look at gods-deluxe.metainfo.xml and check if everything is ok for you (author name, description etc.)?

I reported some info from the old website.

mbugni commented 10 months ago

Publishing on Flathub (for Linux users)

Now Gods Deluxe can be installed via Flatpak from this link:

Download Doom Runner