Spiel-Vorstellung Open Half-Life (openhl) samt Anleitung zu xBSD

Sickboy

Müßiggänger
Half-Life (1998) ist als source port inkl. game data erschienen: Open Half-Life. Als Abhängigkeiten werden nur CMake, SDL 2, Python und Mono benötigt. Das Build-Skript lädt und entpackt die offiziellen Windows-Versionen automatisch. Der source port darf nicht zusammen mit den Assets als Paket verteilt werden (Lizenzbedingungen von Valve).


openhl.png


Läuft bisher ohne Probleme unter FreeBSD 12.2. OpenBSD wird aber auch unterstützt.
 
Interessant, aber leider werde ich aus der Readme nicht so ganz schlau. Wenn ich es richtig verstehe, muss man vorher Steam auf wine installiert haben? Gibt es keine Möglichkeit, das direkt unter wine oder gar unter Linux-Emu zu betreiben? Dieser Steam Client wird immer fetter und braucht immer länger, bis da ein Spiel startet habe ich meistens schon die Lust verloren...
 
Da es auch unter OpenBSD laeuft und es dort weder Wine noch Linux-Emu gibt, sollte das auch ohne laufen. Wenn ich das richtig verstehe, handelt es sich hierbei nur um die reine Engine. Die Assets (Grafiken, Audio, usw.) werden aus Lizenzgruenden nicht mitgeliefert. Diese muessen wohl dann von einer nativen Installation kopiert werden. Diese muss aber nicht auf dem gleichen Rechner vorliegen, sondern koennen auch von einer Windows-Installation oder Linux-Installation kopiert werden.

Inwieweit das mit https://developer.valvesoftware.com/wiki/SteamCMD funktioniert, kann ich nicht sagen. Damals ging das jedenfalls unter Linux, um an die Assets von Morrowind ranzukommen. :-)
 
Hey, ein Super-Tipp. Läuft einwandfrei unter FreeBSD 13. Nach Larry Laffer hab ich zum ersten mal wieder Lust auf ein Spiel.
 
Noch als Klarstellung: Wine ist nicht erforderlich. Das Build-Skript build.sh lädt den von Valve veröffentlichten Installer herunter und entpackt die Assets selbstständig (dafür wohl die Abhängigkeit zu Mono?). Half-Life und Opposing Force wurden von Valve kostenlos veröffentlicht. Add-ons, wie etwa Counter-Strike, werden natürlich auch unterstützt (Non-Steam-Version).
 
Das ist natürlich ne coole Sache :)

Allen die nochmal HL erleben wollen kann ich aber nur sehr Black Mesa ans Herz legen. Ein Fan-Remake von HL auf Basis der Source Engine. Weiß allerdings nicht ob das auf BSD läuft, Linux soll es laufen, ich habs unter Win gezockt da lief es einwandfrei.

Im Vergleich zum Original das doch schon sehr altbacken wirkt, ist Black Mesa wirklich hübsch anzusehen und braucht sich (auch dank der tollen Vorlage natürlich) heute als Shooter nicht verstecken.
 
Weiß allerdings nicht ob das auf BSD läuft, Linux soll es laufen, ich habs unter Win gezockt da lief es einwandfrei.
Nun, wenn es auf Win nicht liefe...^^.
Aber unter FreeBSD wird es höchstwahrscheinlich mit dem linux-steam-client laufen. Ich habe erfolgreich HL2 damit durchgzockt, als es für ein paar Wochen gratis war. Es lief wunderbar und ruckelfrei. CS: Global Offensive läuft darauf auch, allerdings scheint bei mir die Hardware nicht ganz ausreichend zu sein.
 
Nun, wenn es auf Win nicht liefe...^^.
Aber unter FreeBSD wird es höchstwahrscheinlich mit dem linux-steam-client laufen. Ich habe erfolgreich HL2 damit durchgzockt, als es für ein paar Wochen gratis war. Es lief wunderbar und ruckelfrei. CS: Global Offensive läuft darauf auch, allerdings scheint bei mir die Hardware nicht ganz ausreichend zu sein.

Naja gerade bei so kleinen Indiprojekten ists halt leider oft so, dass es leider auch unter Win zicken macht. Und es ist ja ein Fan-Remake. Daher wollte ich da Entwarnung geben!

Aber stimmt, es ist ja mit dem normalen Source-SDK gebaut da müsste es auch problemlos unter BSD laufen.
 
Habs auch zum Spass mal kompiliert unter Arch Linux mit Wayland... Wenn ich es starten will, kommen im Terminal noch ca. 10 Zeilen an Ausgabe. Danach hängt sich mein Rechner komplett auf. Nicht mal mehr Numlock kann ich noch an/abschalten.
 
Habs nun auch mal getestet. Läuft einwandfrei unter FreeBSD 13.0.
Schaffe ca. 70 fps mit einer Radeon RX560 und meinem doch schon etwas betagtem i7 2600K.
 
Tolle Sache, wenn auch nach so vielen Jahren! Wie installiert man denn die Add-ons wie Counter-Strike? Was ich in der README auch nicht ganz verstanden habe, ist, wie man Opposing Force installiert?
Den Counter-Strike-Ordner “cstrike” nach /usr/home/<user>/.local/share/xash3d/ kopieren, sofern du das Spiel in $HOME/.local/bin/ installiert hast. Dann Half-Life mit “hl -game cstrike” starten oder im Spiel-Menü (“Custom”) auswählen.

Für Opposing Force musst du IMHO “steaminstall_full.exe” selbstständig herunterladen und nach openhl/dist/ kopieren.
 
/usr/home/<user>/.local/share/xash3d/
Der Pfad existiert bei mir nicht. Ich habe "steaminstall_full.exe" heruntergeladen und nach openhl/dist/ kopiert, doch wenn ich aus dem Ordner "openhl" heraus "export/bin/opfor" ausführe, startet nur wieder HL. Muss nicht vorher build.sh ausgeführt werden? Allerdings habe ich in das Skript reingeschaut und es steht dort nichts bezüglich "steaminstall_full.exe", also würde ich vermuten, dass wieder nur HL installiert werden würde.

Ich verstehe auch diese Aussage aus der README nicht:

"By default, both the main Half-Life game and Opposing Force is
compiled. However only the Half-Life data files are provided to
conserve space. Opposing Force can be obtained from the
steaminstall_full.exe package."

Also da steht, dass auch Opposing Force compiliert wird, aber nur die HL Dateien zur Verfügung gestellt werden, um Platz zu sparen???
 
Im GitHub-Repo ist nur Half-Life ohne Add-on enthalten (Ordner dist/). Nachdem du steaminstall_full.exe dahin kopiert und build.sh aufgerufen hast (steaminstall_halflife.exe.a* vorher löschen?), sollte es zumindest in der Theorie klappen.
 
Also zuerst:

Code:
$ cd openhl/dist/
$ ls
half-life.gcf            steaminstall_halflife.exe.aa
steaminstall_full.exe        steaminstall_halflife.exe.ab
steaminstall_halflife.exe    steaminstall_halflife.exe.ac
$ rm steaminstall_halflife.exe.a*
$ cd ..

Danach:

Code:
$ sh build.sh
mkdir: /usr/home/werner/openhl/export: File exists

Nach Löschen des Ordners export und nochmaligem Ausführen von build.sh:


Code:
Combining steaminstall_halflife.exe
cat: steaminstall_halflife.exe.aa: No such file or directory

Toll, jetzt is alles kaputt und der vorletzten Zeile entnehme ich, dass er doch wieder nur "steaminstall_halflife.exe" installiert hätte.
 
So, habe es jetzt selber mal probiert. Leider muss man das Build-Skript manuell anpassen. Mit dem folgenden klappt es:
Code:
set -e

ROOTDIR="$(pwd)"
DISTDIR="$ROOTDIR/dist"
SRCDIR="$ROOTDIR/src"
DESTDIR="$ROOTDIR/export"

if [ -z "$PYTHON" ]; then
  PYTHON=python3
fi

build_engine()
{
  cd "$SRCDIR/engine"

  #$PYTHON waf configure -T release --64bits --single-binary --prefix="$DESTDIR"
  $PYTHON waf configure -T release --64bits --prefix="$DESTDIR"
  $PYTHON waf build
  $PYTHON waf install
}

build_hlsdk()
{
  cd "$SRCDIR/hlsdk"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -D64BIT=ON \
    -DSERVER_INSTALL_DIR=valve \
    -DCLIENT_INSTALL_DIR=valve \
    -DGAMEDIR="$DESTDIR/lib/xash3d"

  cmake --build build
  cmake --build build --target install
}

build_opforsdk()
{
  cd "$SRCDIR/opfor-sdk"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -D64BIT=ON \
    -DSERVER_INSTALL_DIR=gearbox \
    -DCLIENT_INSTALL_DIR=gearbox \
    -DGAMEDIR="$DESTDIR/lib/xash3d"

  cmake --build build
  cmake --build build --target install
}

build_hlextract()
{
  cd "$SRCDIR/hlextract"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release

  cmake --build build
}

build_wiseunpacker()
{
  cd "$SRCDIR/wiseunpacker"
  make
}

prepare_system()
{
  mkdir "$DESTDIR"
  cp -r "$ROOTDIR/system/"* "$DESTDIR"
  chmod +x "$DESTDIR/bin/hl"
  chmod +x "$DESTDIR/bin/opfor"
}

extract_valve()
{
  cd "$DISTDIR"
  # Recombine after the
  # split -b 100M steaminstall_halflife.exe steaminstall_halflife.exe.
  #echo "Combining steaminstall_halflife.exe"
  #cat steaminstall_halflife.exe.aa > steaminstall_halflife.exe
  #cat steaminstall_halflife.exe.ab >> steaminstall_halflife.exe
  #cat steaminstall_halflife.exe.ac >> steaminstall_halflife.exe

  echo "Extracting public Half-Life installer"
  mono "$SRCDIR/wiseunpacker/WiseUnpacker.exe" steaminstall_full.exe
  mv steaminstall_full/MAINDIR\\SteamApps\\half-life.gcf half-life.gcf
  mv "steaminstall_full/MAINDIR\\SteamApps\\opposing force.gcf" "opposing force.gcf"
  rm -rf steaminstall_full

  mkdir -p "$DESTDIR/share/xash3d"
  cd "$DESTDIR/share/xash3d"
  "$SRCDIR/hlextract/build/hlextract" -p "$DISTDIR/half-life.gcf" -e valve -d .
  "$SRCDIR/hlextract/build/hlextract" -p "$DISTDIR/opposing force.gcf" -e gearbox -d .
  cp -r "$SRCDIR/overlays/valve/"* "valve"
  cp -r "$SRCDIR/overlays/gearbox/"* "gearbox"
}

prepare_system
build_hlextract
build_wiseunpacker
extract_valve
build_engine
build_hlsdk
build_opforsdk

Das Skript im Repo ersetzen, dann:

1. build.sh aufrufen.
2. Den Inhalt von Ordner export/ nach $HOME/.local/ kopieren.
3. Falls $HOME/.local/bin/ in $PATH ist: einfach "hl" im Terminal aufrufen.
4. Im Menü "Console" auswählen und eingeben: "game gearbox". Das startet dann Opposing-Force. Über das Shell-Skript "opfor" funktionierte es bei mir nicht. Über die Konsole kann man dann auch jedes andere Spiel aufrufen, etwa "game cstrike" für Counter-Strike (Ordner "cstrike" muss in "$HOME/.local/share/xash3d/" vorhanden sein).

Edit: overlays hinzugefügt.
 
Mit Deinem Installationsscript (ist da alles richtig gelaufen?)

Code:
 Extracting settings.scr: 0%....50%....100% OK (2054 B)
  Extracting skillopfor.cfg: 0%....50%....100% OK (5834 B)
  Extracting titles.txt: 0%....50%....100% OK (6312 B)
  Extracting user.scr: 0%....50%....100% OK (1214 B)
  Done gearbox: OK (173990661 B)

Done.
/usr/home/werner/openhl/dist/opposing force.gcf closed.
cp: /usr/home/werner/openhl/src/overlays/gearbox/*: No such file or directory
$

Und wenn ich dann im Ordner openhl "export/bin/hl" eingebe:

Code:
$ cd openhl/
$ ls
build.bak    dist        README.txt    system
build.sh    export        src
$ export/bin/hl
export/bin/hl: /usr/home/werner/openhl/export/lib/xash3d/xash3d: not found

Den Inhalt von Ordner export/ nach $HOME/.local/ kopieren.
Siehe screenshot. Da habe ich dann abgebrochen und manuell den Ordner "xash3d" in .local/share kopiert.
Aber wenn ich dann aus .local/bin heraus starten will, genau das gleiche:

Code:
$ pwd
/usr/home/werner/.local/bin
$ ./hl
./hl: /usr/home/werner/.local/lib/xash3d/xash3d: not found

Aber warum muss überhaupt etwas nach .local kopiert werden? Laut Anleitung reicht doch "export/bin/hl" um das Spiel auszuführen?
 

Anhänge

  • HL installation.png
    HL installation.png
    34,7 KB · Aufrufe: 201
Bitte mal mit einem Aussagekräftigerem Threadtitel an einen Moderator wenden.
 
Sorry, mein Fehler. Finde es aber auch sehr nachlässig vom Maintainer, dass er das Build-Skript nicht gleich für Opposing Force angepasst hat. Stattdessen darf mensch rumraten, welche Dateien denn kopiert werden müssen.

Die Zeile 97 in meiner build.sh bitte löschen (bei mir fehlte dann das Opposing Force Hintergrundbild, wird halt nur das default angezeigt). Da ich den alten Beitrag nicht mehr ändern kann, hier noch einmal die komplette Datei:

Code:
set -e

ROOTDIR="$(pwd)"
DISTDIR="$ROOTDIR/dist"
SRCDIR="$ROOTDIR/src"
DESTDIR="$ROOTDIR/export"

if [ -z "$PYTHON" ]; then
  PYTHON=python3
fi

build_engine()
{
  cd "$SRCDIR/engine"

  #$PYTHON waf configure -T release --64bits --single-binary --prefix="$DESTDIR"
  $PYTHON waf configure -T release --64bits --prefix="$DESTDIR"
  $PYTHON waf build
  $PYTHON waf install
}

build_hlsdk()
{
  cd "$SRCDIR/hlsdk"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -D64BIT=ON \
    -DSERVER_INSTALL_DIR=valve \
    -DCLIENT_INSTALL_DIR=valve \
    -DGAMEDIR="$DESTDIR/lib/xash3d"

  cmake --build build
  cmake --build build --target install
}

build_opforsdk()
{
  cd "$SRCDIR/opfor-sdk"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -D64BIT=ON \
    -DSERVER_INSTALL_DIR=gearbox \
    -DCLIENT_INSTALL_DIR=gearbox \
    -DGAMEDIR="$DESTDIR/lib/xash3d"

  cmake --build build
  cmake --build build --target install
}

build_hlextract()
{
  cd "$SRCDIR/hlextract"

  cmake -B build \
    -DCMAKE_BUILD_TYPE=Release

  cmake --build build
}

build_wiseunpacker()
{
  cd "$SRCDIR/wiseunpacker"
  make
}

prepare_system()
{
  mkdir "$DESTDIR"
  cp -r "$ROOTDIR/system/"* "$DESTDIR"
  chmod +x "$DESTDIR/bin/hl"
  chmod +x "$DESTDIR/bin/opfor"
}

extract_valve()
{
  cd "$DISTDIR"
  # Recombine after the
  # split -b 100M steaminstall_halflife.exe steaminstall_halflife.exe.
  #echo "Combining steaminstall_halflife.exe"
  #cat steaminstall_halflife.exe.aa > steaminstall_halflife.exe
  #cat steaminstall_halflife.exe.ab >> steaminstall_halflife.exe
  #cat steaminstall_halflife.exe.ac >> steaminstall_halflife.exe

  echo "Extracting public Half-Life installer"
  mono "$SRCDIR/wiseunpacker/WiseUnpacker.exe" steaminstall_full.exe
  mv steaminstall_full/MAINDIR\\SteamApps\\half-life.gcf half-life.gcf
  mv "steaminstall_full/MAINDIR\\SteamApps\\opposing force.gcf" "opposing force.gcf"
  rm -rf steaminstall_full

  mkdir -p "$DESTDIR/share/xash3d"
  cd "$DESTDIR/share/xash3d"
  "$SRCDIR/hlextract/build/hlextract" -p "$DISTDIR/half-life.gcf" -e valve -d .
  "$SRCDIR/hlextract/build/hlextract" -p "$DISTDIR/opposing force.gcf" -e gearbox -d .
  cp -r "$SRCDIR/overlays/valve/"* "valve"
}

prepare_system
build_hlextract
build_wiseunpacker
extract_valve
build_engine
build_hlsdk
build_opforsdk

Aber warum muss überhaupt etwas nach .local kopiert werden? Laut Anleitung reicht doch "export/bin/hl" um das Spiel auszuführen?
Musst du nicht, es lässt sich halt nicht so einfach nach /usr/local/ installieren. Dachte nur, dass $HOME/.local/ ein guter Ort wäre.
 
Finde es aber auch sehr nachlässig vom Maintainer, dass er das Build-Skript nicht gleich für Opposing Force angepasst hat. Stattdessen darf mensch rumraten, welche Dateien denn kopiert werden müssen.
In der Tat. Mittlerweile hat sich im internationalen Thread herausgestellt, dass lediglich Zeile 94 aus build.sh auskommentiert werden muss...^^.

Ich habe noch eine alte Blue Shift CD. Soweit ich mich erinnern kann, enthielt diese verbesserte Texturen für HL und Opposing Force. Hast Du da vielleicht eine Idee, ob/wie man die im Nachhinein in diese Installation hier reinbringen könnte?
Der Interesse halber habe ich auch mal versucht, einfach die "steaminstall_full.exe" mal mit wine zu installieren. Da startet aber letztlich nur der Steam-Client in olivgrün (wahrscheinlich uralte Version) und dieser scheint nicht zu funktionieren. Was sollte man dann also davon haben? Ließen sich die mit wine installierten Dateien irgendwie verwenden, oder gibt es eine Möglichkeit, die Spiele direkt ohne den Steam-Client zu starten?
 
Zurück
Oben