games/rigel-engine: Added (Duke Nukem II reimplementation)

Signed-off-by: bedlam <dave@slackbuilds.org>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2023-01-24 05:07:08 +00:00 committed by Willy Sudiarto Raharjo
parent 8688e336e1
commit a492e8a4ba
No known key found for this signature in database
GPG key ID: 3F617144D7238786
8 changed files with 431 additions and 0 deletions

16
games/rigel-engine/README Normal file
View file

@ -0,0 +1,16 @@
rigel-engine (Duke Nukem II reimplementation)
RigelEngine is a reimplementation of the game Duke Nukem II,
originally released by Apogee Software in 1993 for MS-DOS. RigelEngine
works as a drop-in replacement for the original executable: It reads
the game's data files and plays just like the original, but runs
natively on modern operating systems and is written in modern C++
code.
If you're looking for the shareware data files, they're available here:
https://archive.org/download/msdos_DUKE2_shareware/DUKE2.zip
Compared to running the original in an emulator, RigelEngine offers
many modern enhancements and usability improvements.
The executable and man page are called "RigelEngine".

View file

@ -0,0 +1,117 @@
.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "RIGELENGINE" 6 "2023-01-23" "0.9.1" "SlackBuilds.org"
.SH NAME
RigelEngine \- reimplementation of Duke Nukem II
.\" RST source for RigelEngine(1) man page. Convert with:
.
.\" rst2man.py RigelEngine.rst > RigelEngine.6
.
.SH SYNOPSIS
.sp
RigelEngine [\fB\-s\fP | \fB\-\-skip\-intro\fP] [\fB\-d\fP | \fB\-\-debug\-mode\fP] [\fB\-\-no\-audio\fP] [\fB\-\-play\-demo\fP] [\fB\-l\fP | \fB\-\-play\-level\fP \fIlevel\-name\fP] [\fB\-\-difficulty\fP \fIeasy|medium|hard\fP] [\fB\-\-player\-pos\fP \fIx,y\fP] [\fIgame\-path\fP]
.SH DESCRIPTION
.sp
\fBRigelEngine\fP is a modern reimplementation of the game Duke Nukem II,
originally released in 1993 for MS\-DOS by Apogee Software.
.sp
In order to run RigelEngine, the game data from the original game is
required. Both the shareware version and the registered version work.
When launching RigelEngine for the first time, it will show a file
browser UI and ask you to select the location of your Duke Nukem
II installation. The chosen path will be stored in the game\(aqs user
profile, so that you don\(aqt have to select it again next time.
.sp
It\(aqs also possible to pass the path to the game files as argument on
the command line.
.sp
The only files actually used by RigelEngine are \fBNUKEM2.CMP\fP (the main
data tile; required) and \fBNUKEM2.F1\fP through \fBNUKEM2.F5\fP (intro movie
files; actually optional).
.SH OPTIONS
.INDENT 0.0
.TP
.B \-?, \-h, \-\-help
Show built\-in help and exit.
.UNINDENT
.INDENT 0.0
.TP
.B \-s\fP,\fB \-\-skip\-intro
Skip intro movies/Apogee logo, go straight to main menu.
.TP
.B \-d\fP,\fB \-\-debug\-mode
Enable debugging features.
.TP
.B \-\-no\-audio
Disable all audio output.
.TP
.B \-\-play\-demo
Play pre\-recorded demo.
.UNINDENT
.INDENT 0.0
.TP
.B \fB\-l\fP, \fB\-\-play\-level\fP \fIlevel\-name\fP
Directly jump to given map, skipping intro/menu etc.
.TP
.B \fB\-\-difficulty\fP \fIeasy|medium|hard\fP
Difficulty to use when jumping to a level.
.TP
.B \fB\-\-player\-pos\fP \fIx,y\fP
Position to place the player at when jumping to a level.
.TP
.B \fIgame\-path\fP
Path to original game\(aqs installation. If not provided here, the game will show a folder browser UI.
.UNINDENT
.SH FILES
.sp
\fB$XDG_DATA_HOME/lethal\-guitar/Rigel Engine/\fP
.INDENT 0.0
.INDENT 3.5
Per\-user configuration, savegames, and log file are stored here.
.UNINDENT
.UNINDENT
.sp
The default value of \fB$XDG_DATA_HOME\fP is the same as \fB$HOME\fP\&.
.SH COPYRIGHT
.sp
See the file /usr/doc/rigel\-engine\-0.9.1/LICENSE.md for license information.
.SH AUTHORS
.sp
RigelEngine was written by lethal\-guitar.
.sp
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
.SH SEE ALSO
.sp
/usr/doc/rigel\-engine\-0.9.1/README.md
.sp
\fI\%https://github.com/lethal\-guitar/RigelEngine/wiki\fP
.\" Generated by docutils manpage writer.
.

View file

@ -0,0 +1,102 @@
.. RST source for RigelEngine(1) man page. Convert with:
.. rst2man.py RigelEngine.rst > RigelEngine.6
.. |version| replace:: 0.9.1
.. |date| date::
===========
RigelEngine
===========
---------------------------------
reimplementation of Duke Nukem II
---------------------------------
:Manual section: 6
:Manual group: SlackBuilds.org
:Date: |date|
:Version: |version|
SYNOPSIS
========
RigelEngine [**-s** | **--skip-intro**] [**-d** | **--debug-mode**] [**--no-audio**] [**--play-demo**] [**-l** | **--play-level** *level-name*] [**--difficulty** *easy|medium|hard*] [**--player-pos** *x,y*] [*game-path*]
DESCRIPTION
===========
**RigelEngine** is a modern reimplementation of the game Duke Nukem II,
originally released in 1993 for MS-DOS by Apogee Software.
In order to run RigelEngine, the game data from the original game is
required. Both the shareware version and the registered version work.
When launching RigelEngine for the first time, it will show a file
browser UI and ask you to select the location of your Duke Nukem
II installation. The chosen path will be stored in the game's user
profile, so that you don't have to select it again next time.
It's also possible to pass the path to the game files as argument on
the command line.
The only files actually used by RigelEngine are **NUKEM2.CMP** (the main
data tile; required) and **NUKEM2.F1** through **NUKEM2.F5** (intro movie
files; actually optional).
OPTIONS
=======
-?, -h, --help
Show built-in help and exit.
-s, --skip-intro
Skip intro movies/Apogee logo, go straight to main menu.
-d, --debug-mode
Enable debugging features.
--no-audio
Disable all audio output.
--play-demo
Play pre-recorded demo.
**-l**, **--play-level** *level-name*
Directly jump to given map, skipping intro/menu etc.
**--difficulty** *easy|medium|hard*
Difficulty to use when jumping to a level.
**--player-pos** *x,y*
Position to place the player at when jumping to a level.
*game-path*
Path to original game's installation. If not provided here, the game will show a folder browser UI.
FILES
=====
**$XDG_DATA_HOME/lethal-guitar/Rigel Engine/**
Per-user configuration, savegames, and log file are stored here.
The default value of **$XDG_DATA_HOME** is the same as **$HOME**.
COPYRIGHT
=========
See the file /usr/doc/rigel-engine-|version|/LICENSE.md for license information.
AUTHORS
=======
RigelEngine was written by lethal-guitar.
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
SEE ALSO
========
/usr/doc/rigel-engine-|version|/README.md
https://github.com/lethal-guitar/RigelEngine/wiki

View file

@ -0,0 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi

View file

@ -0,0 +1,48 @@
#!/bin/sh
# Create source tarball from rigel-engine git repo, including
# submodules. The auto-generated source tarballs from github don't
# have the submodules, which is the only reason this exists...
# Note that this script doesn't need to be run as root. It does need to
# be able to write to the current directory it's run from.
# Takes one optional argument, which is the commit or tag to create a
# tarball of. With no arg, HEAD is used.
PRGNAM=rigel-engine
CLONE_URL=https://github.com/lethal-guitar/RigelEngine/
set -e
GITDIR=$( mktemp -dt $PRGNAM.git.XXXXXX )
rm -rf $GITDIR
git clone $CLONE_URL $GITDIR
CWD="$( pwd )"
cd $GITDIR
if [ "$1" != "" ]; then
git reset --hard "$1" || exit 1
fi
git submodule update --init --recursive
GIT_SHA=$( git rev-parse --short HEAD )
DATE=$( git log --date=format:%Y%m%d --format=%cd | head -1 )
VERTAG=$( git tag -l | tail -1 )
VERSION=${VERTAG}+${DATE}_${GIT_SHA}
find . -name .git\* -print0 | xargs -0 rm -rf
cd "$CWD"
rm -rf $PRGNAM-$VERSION $PRGNAM-$VERSION.tar.xz
mv $GITDIR $PRGNAM-$VERSION
tar cvfJ $PRGNAM-$VERSION.tar.xz $PRGNAM-$VERSION
echo
echo "Created tarball: $PRGNAM-$VERSION.tar.xz"
echo "VERSION=$VERSION"

View file

@ -0,0 +1,110 @@
#!/bin/bash
# Slackware build script for rigel-engine
# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# If you're wondering why I host my own source tarball instead of
# using the github one, it's because the github tarball is missing the
# submodules.
# If you're wondering why the package is called rigel-engine and not
# RigelEngine, it's because I dislike MixedCase package names. Not
# going to change it.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rigel-engine
SRCNAM=RigelEngine
VERSION=${VERSION:-0.9.1}
GITVER="v0.9.1+20221210_84ae53f0" # result of "sh git2tarxz.sh v0.9.1"
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$GITVER
tar xvf $CWD/$PRGNAM-$GITVER.tar.xz
cd $PRGNAM-$GITVER
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# Use full path in .desktop file.
sed -i '/^Exec=/s,=,=/usr/games/,' dist/linux/*.desktop
mkdir -p build
cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_BINDIR=/usr/games \
-DCMAKE_BUILD_TYPE=Release ..
make
make install/strip DESTDIR=$PKG
cd ..
# A couple of extra icon sizes exist, include them.
for px in 16 32; do
size=${px}x${px}
dir=$PKG/usr/share/icons/hicolor/$size/apps
mkdir -p $dir
install -m0644 dist/icon_original/$px.png $dir
done
# man page written for this SlackBuild, made from README.md and --help.
PKGMAN6=$PKG/usr/man/man6
mkdir -p $PKGMAN6
gzip -9c < $CWD/$SRCNAM.6 > $PKGMAN6/$SRCNAM.6.gz
# symlink to the package name, too:
ln -s $SRCNAM.6.gz $PKGMAN6/$PRGNAM.6.gz
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
cp -a AUTHORS* CONTRIB* LICENSE* README* $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View file

@ -0,0 +1,10 @@
PRGNAM="rigel-engine"
VERSION="0.9.1"
HOMEPAGE="https://github.com/lethal-guitar/RigelEngine/"
DOWNLOAD="https://slackware.uk/~urchlay/src/rigel-engine-v0.9.1+20221210_84ae53f0.tar.xz"
MD5SUM="e76c8abe342f59300e54a88c8788ea05"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
EMAIL="urchlay@slackware.uk"

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
rigel-engine: rigel-engine (Duke Nukem II reimplementation)
rigel-engine:
rigel-engine: RigelEngine is a reimplementation of the game Duke Nukem II,
rigel-engine: originally released by Apogee Software in 1993 for MS-DOS. RigelEngine
rigel-engine: works as a drop-in replacement for the original executable: It reads
rigel-engine: the game's data files and plays just like the original, but runs
rigel-engine: natively on modern operating systems and is written in modern C++
rigel-engine: code.
rigel-engine:
rigel-engine:
rigel-engine: