gameflorist / dunedynasty

(Continuation of the abandoned sourceforge project.) Dune Dynasty is a remaster / enhancement of the classic real-time strategy game Dune II by Westwood Studios. It builds upon the original reverse-engineered game engine and adds many enhancements, modernizations and new features. Windows, macOS and Linux are supported.
GNU General Public License v2.0
65 stars 8 forks source link

Linux flatpack/AppImage other rpm/.deb #7

Open Dracks opened 10 months ago

Dracks commented 10 months ago

To continue the discussion opened in my P/R: https://github.com/gameflorist/dunedynasty/pull/6

Will be nice to have some flatpack, appimage or similar, since I've got a linux as a personal laptop, I will try to investigate and generate.

The only issue I see is how to work with the external data, since should not be anymore relative to the executable and should be in the user directory or some global/system directory. But first things first, create some packed app for linux.

Note: I cannot assign it to me :(

codeflorist commented 10 months ago

I assigned you the issue!

All external data (meaning the data, music, save and campaign directories as well as duneconfig.cfg) can already reside in the personal data directory ~/.local/share/dunedynasty. So that should already work out of the box.

The folders music (external music packs) and campaign (custom campaigns) might be a bit problematic though, since they include required ini- and cfg-files. So these folders must be copied over to the personal data directory.

It would be the best option to retain the functionality to have everything in the same folder as the executable. This way file-handling would be consistant on all platforms, the music and campaign folders can simply be used as-is, and portable mode (e.g. on a USB-stick) would be possible just as on the other platforms.

Dracks commented 6 months ago

Hey, I just had some advance (sorry, I didn't had a lot of time to move it), but I see that cmake is not checking for the library enet, and then when compiles is crashing, (I will try to add that to the flathub) but I think will be nice to have it in the cmake

codeflorist commented 6 months ago

hey @Dracks,

thanks for the great work! i've just pushed a commit, that makes cmake check for the ENET, MAD and FLUIDSYNTH libraries.

MAD (package libmad0-dev) is required for mp3-playback and FLUIDSYNTH (packages libfluidsynth-dev and fluidsynth) for soundfont-based MIDI playback. both are required for the full functionality of Dune Dynasty.

publishing to flathub is definitely a good idea! i'll look into it, once your pull request is merged.

Dracks commented 6 months ago

hey, one thing, what should be the name to be used in the flatpak?

codeflorist commented 6 months ago

hey, one thing, what should be the name to be used in the flatpak?

Does it have to be a special format? Or just the app name? "Dune Dynasty" i'd say then.

Dracks commented 6 months ago

Does it have to be a special format? Or just the app name? "Dune Dynasty" i'd say then.

Sorry, name was not correct, it was the id, is this ID: https://github.com/gameflorist/dunedynasty/pull/14/files#diff-c1ccd431d3ba4694ebb86aa70c6bac63933495f3a54a38ee2fc0770101efac3aR1

I think we can use com.github.dunedynasty too, but not sure.

codeflorist commented 6 months ago

Ah, ok. According to the docs it should be the reverse-DNS of a domain controlled by the project with the trailing section representing the specific project.

I've just created https://gameflorist.github.io (just a redirect to https://github.com/gameflorist).

So i think the appropriate ID would be "io.github.gameflorist.dunedynasty".

Dracks commented 5 days ago

Hey,

I know I'm not super active, sorry a lot of side projects, what I saw is that usually flatpak scripts are put in a diferent github repositori, Is it fine that I create it and when I've got some poc working you fork it, and then we set yours as principal?

Another thing, flatpak works as some kind of container, which makes the accessing the data a lot more tricky.

Jaume

codeflorist commented 5 days ago

Hey Jaume,

No worries at all, take your time!

Regarding the repository: I could also create the repo and add you as a collaborator. What name would you suggest? gameflorist/dunedynasty-flatpak?

Dracks commented 5 days ago

yeah, that should work...

But it will take a lot of time, I'm trying to pack another app, because I wish to have it on steamdeck, and is been a nightmare. At lease for a person that doesn't know almost anything about flatpak :(

Still, I think I'm close to get it runing in the other one, and with that, should be easy to get it here.

Dracks commented 4 days ago

Hey, I get it building,

But I don't get the data, currently, I've got this:

[dracks@frame-work-fedora flatpak_dunedynasty]$ flatpak run com.gameflorist.dunedynasty
Dune data directory: .
Personal data directory: /home/dracks/.var/app/com.gameflorist.dunedynasty/config/dunedynasty/
--------------------------
ERROR LOADING DATA FILE

Did you copy the Dune2 1.07eu data files into the data directory
./data ?

[dracks@frame-work-fedora flatpak_dunedynasty]$ ls /home/dracks/.var/app/com.gameflorist.dunedynasty/config/dunedynasty/
data
[dracks@frame-work-fedora flatpak_dunedynasty]$ ls /home/dracks/.var/app/com.gameflorist.dunedynasty/config/dunedynasty/data/
ATRE.PAK  ENGLISH.PAK   FINALE.PAK  GERMAN.PAK  INTRO.PAK     MENTAT.PAK  ORDOS.PAK     SOUND.PAK
DUNE.PAK  FILELIST.TXT  FRENCH.PAK  HARK.PAK    INTROVOC.PAK  MERC.PAK    SCENARIO.PAK  VOC.PAK

I've also have a copy of the data in ~/.config/dunedynasty/data and ~/.local/share/dunedynasty And of course I added the permissions to access this folders.

This are the permissions: image

If you create a repo, I will upload my current stuff (also, I added an action to generate the flatpak)

Will be nice, if when there is no contents, we show a window telling exactly what's missing. (If you guide me, I can modify the code, I know a little bit of C and C++)

Dracks

codeflorist commented 3 days ago

Very cool! 😊👍

I've just created https://github.com/gameflorist/dunedynasty-flatpak and added you as a collaborator.

Regarding location for data:

I've also have a copy of the data in ~/.config/dunedynasty/data and ~/.local/share/dunedynasty

Try ~/.local/share/dunedynasty/data. That should work.

Will be nice, if when there is no contents, we show a window telling exactly what's missing. (If you guide me, I can modify the code, I know a little bit of C and C++)

Currently the following message is displayed:

Did you copy the Dune2 1.07eu data files into the data directory
./data ?

Would it suffice to change this to something like this?

Did you copy the Dune2 1.07eu data files into the data directory?
The data directory can be placed in one of the following locations:
./data
~/.local/share/dunedynasty/data
Dracks commented 3 days ago

Thanks,

I just pushed my changes, I just realise I've got some issues with permissions and files I think. The other project that I was trying to get with flatpak (which is working), has some issues with the configuration, is not saving the file, any time that I restart the project, starts without a config.

I was thinking to ask in the flatpak forum, (If I don't see any solution next month, I will put it there)

If you have some time and wishes to test something, there is an action in the workflow of the flatpak repo, to build and generate a flatpak bundle (you can try if you wish/have linux)