Linux DLC


#1

Hi guys.

Awesome work on the linux port :slight_smile: A few little tweaks needed, but it works :slight_smile: Question though… how do you get DLC for the Linux version?

Also… I notice my version is 1.56, and 1.59 seems to be the latest for windows. That right?

Cheers!


#2

Immensely enjoying my first exposure to GSB (and running it on Linux earns you likely additional sales!), and other than a couple of minor hiccups getting it running on my system it works like a champ. I’m wondering what it’s going to take to run the DLC on Linux, since it’s currently only available for Windows and Mac. I’m guessing the different races should be simple, since I’m assuming that there’s no code changes needed (and if that’s the case, I’d be happy to help you package them for Linux users - I’ll even buy them first! :)).

Is the Galactic Conquest add-on similar, or does that require additional code? If the latter, any idea when we might see a Linux version? I really like the idea of it, although I’m sure it’ll be a while before I can build up my fleets enough to give it a go…

Anyway, definitely interested in Linux DLC and updates, and happy to help if I can!


#3

Procedure made with a little help from cliffski

  1. Buy DLC for Windows

  2. Instal DLC on Windows

  3. copy from Windows into Linux installation (for example installed in GSB directory) :

a. directory with DLC to main dir ( GSB/nomads GSB/campaign etc.)
b. data/install/DLC_RELATED into GSB/data/install/DLC_RELATED (from windows installation)
c. data/packages/DLC_RELATED into GSB/data/packades/DLC_RELATED (from windows installation)

  1. there is a tricky part: I had to convert ALL .dds files into .png (convert from ImageMagick and some unix magic : )
    (I didn’t have to delete .dds files - just added the .png ones)

thats all : )
solution isn’t perfect but works for me (Ubuntu 64 version 11.10 gnome-shell )

maybe future DLC releases will be ready for Linux without point 4 (or Linux will be ready to manage .dds files : )

Please try and tell if this works (and remember that this is a workaraound for experienced Linux users - not official procedure)


#4

I’m not sure if it’s just board reorganization, but it was a bit surprising to find the threads about the Linux version in HIB#4 suddenly gone, and myself without access to the Linux support area.

Is that the case, or is something else going on?


#5

Same here, must be permission set incorrectly for normal users of the board software.

EDIT: Now the linux support forum works.


#6

Thanks for this starting point, but I have 2 questions and one bone to pick. First the questions:

  1. What is the ImageMagick command you used to do the conversion? I’ve never worked with .dds files before (what are they? I’ve never seen the extension before, though they’re obviously some sort of image format…).
  2. Does this work for the Galactic Conquest expansion as well, or just the new races?

Now the bone - is there a way to extract the files from the Windows installer without running the actual install? While I can jump through hoops to install GSB + DLC on Windows, I run Linux (Fedora, currently F16) as my ONLY OS on my PC (I’m a Linux admin, and I don’t use Windows if I can avoid it :)). I suppose I can install via WINE, but that’s still less than satisfactory. That being said, I also recognize that this is a VERY new Linux port, and that this is a mostly one-man shop, and that these things can take a little time. My offer to assist is still open, if nothing else I have lots of experience creating RPMs, which covers half of the standard package manager formats :slight_smile:

Once I see your response on how to convert the .dds files, I’ll probably go ahead and buy at least the new races.

Thanks in advance!


#7

it’s the image magic “convert” program.

convert image.dds  image.png

through some mighty magic with find we can automate that more so (completely untested, but gets across the general idea)

for x in `find . -name "*.dds"`; do convert $x `dirname $x`/`basename $x .dds`.png; done

#8

convert file.dds file.png

Looks like Galactic Conquest works fine - just main title screen is white (and there are some OpenGL errors but nothing serious)

New races works without any known problems

but I played this only a few minutes… : )


#9

OK, cool! I don’t know if I’ll have time to purchase the various DLC before I go away for a long weekend tomorrow, but I’ll definitely be buying it when I get back! After all, the best way to encourage more Linux support is do buy stuff :slight_smile:


#10

Bought the DLC last night and even managed to make RPMs for myself of each of them (I’ll post them when I get back from vacation, just about to drop offline for a while). I’d love to figure out why the background in the menu is white, but that’s the only problem I saw in a very quick check. strace didn’t show me anything odd trying to access the titlescreenXXXX.jpg, so it has to be deeper than that. Again, when I get back :slight_smile:


#11

Check out my script in the Gratuitous Modding subforum – it converts all dds files to png. It works, but i will make it smarter in future versions, (continuos integration and dependency checking).


#12

Thanks guys : all the D.L.C are running great with your informations.
About the Galactic Conquest : you should rename Campaign Manual.pdf into CampaignManual.pdf too.
About the Parasites DLC : the 1.57 patch is needed in order to have “Support for longer race descriptions”.

My hardware is the following : AMD Phenom II X6, Nvidia GTX260+, 1680*1050, 8Go Ram, Gentoo x86_64 (kernel 3.1.5).
Now, I need to pratice !!!

Again, thanks for that fabulous game.


#13

Icculus made MojoDDS for his humble bundle games and it’s free to use in any closed source game.

http://icculus.org/cgi-bin/finger/finger.pl?user=icculus&date=2012-01-02&time=03-11-15

I’m waiting for any easy way to install the DLC on Linux before buying any.


#14

After reading this thread, here’s how it got all the DLC content working.

I did a full install of all DLC and GSB to Windows, and had my Linux version available as well.

Copy the full directory including all subdirectories (all DLC content included) from Windows to Linux.

Copy the Linux version over the Windows copy, this sets up libs and executables.

Recopy the Windows version overtop, this ensures that we have the latest files that may have been overwritten by inclusion in the Linux version.

After that, we have to convert all BMP files to JPG, and all DDS files to PNG.

Converting the BMP files to JPG solves all the “white screen” issues.

Run these from within the new merged GSB directory:
find . -name ‘*.bmp’ | while read X ; do NEW=$(echo X | sed 's/\.bmp/.jpg/g’) ; [ -f “$NEW” ] || convert “$X” "NEW" ; done find . -name '*.dds' | while read X ; do NEW=(echo X | sed 's/\.dds/.png/g’) ; [ -f “$NEW” ] || convert “$X” “$NEW” ; done

Seems to work like a charm! i’ve run through a few standalone battles and the campaign now, and it all looks good.


#15

You can use Wine instead of Windows if you don’t have a Windows installation.
Windows is useless in fact.


#16

Hello there,

As I had a few minutes ahead, I wrote a small script to install DLC under Linux.
It handles the extraction, copy and conversion of graphic files.

No need for Windows or even Wine! :wink:

Just pure Bash scripting, with help from InnoExtract and ImageMagick.

Feel free to comment.
You can find the original version here.

Here we go:

[code]#! /bin/bash

This is a quick hack made in order to install the GSB DLC under Linux

It comes with no warranty whatsoever: make a backup copy of your GSB directory!

Obviously, you will need InnoExtract in order to extract the .exe file:

HISTORY:

v0.1: creation and initial release

------------------------------------------------

RETURN STATUS

0: Operation completed

1: Syntax error

2: GSB directory not found/not writable

3: Current directory not writable

4: DLC not found

5: Required binary not found

6: Unknown DLC

7: DLC already installed

8: User disagreed to proceed

declare -r YELLOW="\e[33;1m"
declare -r NORM="\e[0m"

function syntax () {
cat <<EoF
Syntax: $0 DLC_Name GSB_dir
GSB_dir must exist and be writable
Current directory must be writable
EoF
exit 1
}

function die () {
MSG="$1"
EXIT_CODE=$2
echo -e $MSG
exit $EXIT_CODE
}

function check_bin () {
BIN=which $1 2>/dev/null
[[ -z $BIN ]] && die “Can’t find $1 in your $PATH…” 5
return
}

[[ $# != 2 ]] && syntax

Disclaimer/Agreement

clear
cat <<EoF
#######################################

REMEMBER TO MAKE A BACKUP COPY

OF YOUR GSB DIRECTORY BEFORE

USING THIS SOFTWARE!!!

IF YOU HAVE A DIRECTORY NAMED

app IN THE CURRENT DIRECTORY

ITS CONTENT WILL BE OVERWRITTEN

WITHOUT ASKING !!!

#######################################

EoF
echo -n “Do you want to continue? [Y/n] "
read answer
REGEX=”^(n|N)(o|O)?.*$"
[[ $answer =~ $REGEX ]] && die “Aborting.” 8

DLC="$1"
GSB="$2"

Stripping DLC from .exe extension

DLC_NAME=basename "${DLC/.exe/}"

Writable dirs?

([[ -d “$2” ]] && [[ -w “$2” ]]) || die “$2 must be a writable directory” 2
[[ -w . ]] || die “Current directory must be writable” 3

Is DLC a real file?

[[ -f “$DLC” ]] || die “$DLC not found” 4

Check presence of required binaries

for b in innoextract convert find; do check_bin $b; done

Handling DLC particularities

case DLC_NAME in *Installer) # Basic DLC: getting rid of "Installer" and changing to lowercase DATA_DIR={DLC_NAME/Installer/}
DATA_DIR={DATA_DIR,,} PRETTY_NAME="{YELLOW}{DATA_DIR^}{NORM}"
;;
GalacticConquest)
# Particular case of Galactic Conquest
DATA_DIR=“campaign”;
PRETTY_NAME="{YELLOW}Galactic Conquest{NORM}"
;;
*)
die “Unknown DLC” 6
;;
esac

Won’t re-install without warning user

CHECK_FILE="{GSB}/data/installs/{DATA_DIR}.txt"
[[ -f $CHECK_FILE ]] && die “$PRETTY_NAME appears to be already installed.\nTo re-install, remove $CHECK_FILE” 7

echo -e “Will install ${PRETTY_NAME}”
echo “Extracting DLC”
innoextract -s -p 1 “$DLC”

echo “Copying file”
cp -a app/${DATA_DIR} “$GSB”
cp -a app/data/* “$GSB/data/”
[[ $DATA_DIR == campaign ]] && mv “$GSB/campaign/data/Campaign Manual.pdf” “$GSB/campaign/data/CampaignManual.pdf”

OLDIFS="$IFS"
IFS=’\n’
echo “Converting DDS images to PNG (can take a while)”
find “$GSB/$DATA_DIR” -name “.dds" | (while read dds_file; do
convert “dds_file" "{dds_file/.dds/.png}”
done)
#echo “Removing DDS images”
#find “$GSB” -name "
.dds” -exec rm {} ;
echo “Converting BMP images to JPG”
find “$GSB/$DATA_DIR” -name “.bmp" | (while read bmp_file; do
convert “bmp_file" "{bmp_file/.bmp/.jpg}”
done)
#echo “Removing BMP images”
#find “$GSB” -name "
.bmp” -exec rm {} ;
IFS="$OLDIFS"

echo “Cleaning up”
rm -rf app
echo -e “${PRETTY_NAME} installed, enjoy!”

exit 0

EoF

[/code]


#17

The script is really convenient, thanks. I can’t get it to extract Galactic Conquest though. It reports “unknown DLC” when I run ./installDLC.sh GSBGalacticConquest.exe GSB
All the other DLCs appear to have extracted okay and I can select those races in the faction select menu.


#18

That’s because your binary isn’t named as my script expect it (mine was GalacticConquest.exe).

Rename it (‘mv GSBGalacticConquest.exe GalacticConquest.exe’) and try again.


#19

That was quick, and correct! Thanks.


#20

You’re welcome.