diff --git a/games/maelstrom/Maelstrom.6 b/games/maelstrom/Maelstrom.6 new file mode 100644 index 0000000000..dc60bbebd6 --- /dev/null +++ b/games/maelstrom/Maelstrom.6 @@ -0,0 +1,227 @@ +.TH MAELSTROM "6" "April 2009" "Ambrosia Software" "Games" +.SH NAME +Maelstrom \- Enhanced Asteroids\-like game +.SH SYNOPSIS +.B Maelstrom +[\-netscores] \-printscores +.P +.B Maelstrom +[options] +.P +.B Maelstrom\-netd +.br +\fI(see NETWORKING, below, for a description of Maelstrom\-netd)\fR +.SH DESCRIPTION +Maelstrom is a game based on Asteroids, but with several gameplay enhancements: +.P +\- High\-resolution color graphics +.br +\- Digital audio +.br +\- Powerups +.br +\- Networked multiplayer/deathmatch mode (up to 3 players) +.br +\- World\-wide high score server +.P +Game storyline: +.br +You pilot your ship through the dreaded "Maelstrom" asteroid belt \-\- +suddenly your best friend thrusts towards you and fires, directly at your +cockpit. You raise your shields just in time, and the battle is joined. +.P +The deadliest stretch of space known to mankind has just gotten +deadlier. Everywhere massive asteroids jostle for a chance to crush your +ship, and deadly shinobi fighter patrols pursue you across the asteroid +belt. But the deadliest of them all is your sister ship, assigned to +you on patrol. The pilot, trained by your own Navy, battle hardened by +months in the Maelstrom, is equipped with a twin of your own ship and +intimate knowledge of your tactics. +.P +The lovely Stratocaster R&R facility never sounded so good, but as you +fire full thrusters to dodge the latest barrage you begin to think you'll +never get home... +.SH OPTIONS +.TP +\fB\-fullscreen\fR +Run Maelstrom in full\-screen mode. You may also press Alt\-Enter +while Maelstrom is running, to toggle full\-screen. +.TP +\fB\-gamma\fR [0\-8] +Set the gamma correction +.TP +\fB\-volume\fR [0\-8] +Set the sound volume +.TP +\fB\-netscores\fR +Use the world\-wide network score server +.TP +\fB\-player\fR N[@host][:port] +Designate player N (at host and/or port). N must be an integer, 1 to 3. +.TP +\fB\-server\fR N@host[:port] +Play with N players using server at host. N must be an integer, 1 to 3. +.TP +\fB\-deathmatch\fR [N] +Play deathmatch to N frags (default = 8) +.SH CONTROLS +The game may be played with either the keyboard or a joystick. +The game controls may be remapped by pressing C at the main menu. The +default keyboard controls are: +.TP +\fBTab\fR, \fBJoystick Button 1\fR +Fire +.TP +\fBUp Arrow\fR, \fBJoystick Up\fR +Thrust +.TP +\fBSpace\fR, \fBJoystick Button 2\fR +Shield +.TP +\fBRight Arrow\fR, \fBJoystick Right\fR +Turn Clockwise +.TP +\fBLeft Arrow\fR, \fBJoystick Left\fR +Turn Counter\-clockwise +.TP +\fBP\fR +Pause +.TP +\fBEscape\fR +Abort Game +.TP +\fBAlt\-Enter\fR +Toggle between fullscreen and windowed modes. This keystroke +may not be remapped. +.P +No special configuration must be done to play with a joystick, provided +the joystick is supported by the SDL library on your OS. +There is no way +to remap the joystick controls. +.SH NETWORKING +.SS Netplay Without a Server +Networking has been tested on Linux, SGI and DEC. It is known to +work between SGI and DEC systems (cross\-platform), and between systems +of the same type. +.P +Up to three players can play, and the syntax is as follows: +.P +(On machine 1) +.br +.B +.nh +Maelstrom \-player 1 \-player 2@machine2 \-player 3@machine3 +.hy +.P +(On machine 2) +.br +.B +.nh +Maelstrom \-player 1@machine1 \-player 2 \-player 3@machine3 +.hy +.P +(On machine 3) +.br +.B +.nh +Maelstrom \-player 1@machine1 \-player 2@machine2 \-player 3 +.hy +.SS Netplay With a Server +You can also use a network address server that handles the difficulties +of getting all the players and addresses right. The address server is +installed as \fBMaelstrom\-netd\fR, and if run on say "servhost", the syntax +for a three player game would be: +.P +(On machine A) +.br +.B +.nh +Maelstrom \-player 1 \-server 3@servhost +.hy +.P +(On machine B) +.br +.B +.nh +Maelstrom \-player 2 \-server 3@servhost +.hy +.P +(On machine C) +.br +.B +.nh +Maelstrom \-player 3 \-server 3@servhost +.hy +.P +The address server will let players know if they have conflicting +player numbers, and will set up the proper addresses for all players. +It can field multiple games, and can be a "game hub" where a bunch +of players can get together for romping network games. :) +.P +\fBNOTE\fR: Maelstrom-netd will not run correctly on 64\-bit hosts, +and Maelstrom running on a 64\-bit host cannot successfully play in a +mutiplayer game with the -server option. Use non\-server networked +play mode instead. +.SS Network Ports +By default, Maelstrom uses UDP ports 44718 to 44720 for networked games, +where the port number is the player number plus 44717. +(these may be overridden with the \fI:port\fR syntax, above). +.P +\fBMaelstrom-netd\fR listens on TCP port 44717. +.P +The global +high\-score server listens on the host \fBdevolution.com\fR, TCP port 4444. +.SH ADD\-ONS +Maelstrom add\-ons consist of replacement sounds, replacement sprites, +or both. Typically, the add\-on content is distributed as a zip file. +.P +There is a collection of Maelstrom add\-on content at +.br +.nh +\fIhttp://www.devolution.com/~slouken/Maelstrom/add-ons.html\fR +.hy +.SS Automated Installation (Preferred) +Use \fBmaelstrom_addon_package.pl\fR to convert the zip +file to a Slackware package, then use \fBinstallpkg\fR to install the +add\-on. Run \fBmaelstrom_addon_package.pl \-\-help\fR for more information. +.SS Manual Installation +Look within the zip file for files named +\fI%Maelstrom_Sprites\fR and/or \fI%Maelstrom_Sounds\fR or similar +(the % may be missing, the _ may be a space, and/or the filenames +may end with .bin). Copy these files to +.P +.nh +\fB/usr/share/games/Maelstrom/%Maelstrom_Sprites\fR +.br +and/or +.br +\fB/usr/share/games/Maelstrom/%Maelstrom_Sounds\fR +.hy +.P +\fBNOTE\fR: \fIThe % is important!\fR +.SS Add\-On Limitations +There is no way to install more than one add\-on at a time, or to disable +the installed add\-on without uninstalling it. There is also no way to +install add\-ons in a user's home directory, or any other place than +the system\-wide game data directory. +.SH FILES +.TP +\fB/usr/share/games/Maelstrom/\fR +game data (images, music, sound) +.TP +\fB$HOME/.Maelstrom\-data\fR +per\-user settings and high\-score records +.SH AUTHORS +The original version of this game was written for the Macintosh by +Andrew Welch, of Ambrosia Software. It was ported to Linux and then +to the Simple DirectMedia Layer library by Sam Lantinga. +.P +Man page created by B. Watson for SlackBuilds.org project (but others +are free to use it) +.SH COPYRIGHT +The source code to Maelstrom 3.0 and higher has been released under +the GNU General Public License which can be found in COPYING.GPL. +.P +The artwork and sounds used by Maelstrom are copyright Ambrosia Software +(http://www.ambrosiasw.com) and may not be redistributed separately from +the Maelstrom GPL source code. diff --git a/games/maelstrom/README b/games/maelstrom/README new file mode 100644 index 0000000000..c3e64cfe97 --- /dev/null +++ b/games/maelstrom/README @@ -0,0 +1,15 @@ +Maelstrom is a game similar to Asteroids. + +You pilot your ship through the dreaded "Maelstrom" asteroid belt -- +suddenly your best friend thrusts towards you and fires, directly at your +cockpit. You raise your shields just in time, and the battle is joined. +The deadliest stretch of space known to mankind has just gotten +deadlier. + +This package also comes with a script to create Slackware packages +from the Maelstrom add-on graphics/sound files. +Run 'maelstrom_addon_package.pl --help' for more information. + +Note to users of 64-bit and other non-x86 Slackware derivatives: you +won't be able to host or join multiplayer games that use a server. +Peer to peer (without the -server argument) multiplayer works OK though. diff --git a/games/maelstrom/compile_fix.diff b/games/maelstrom/compile_fix.diff new file mode 100644 index 0000000000..6570dee650 --- /dev/null +++ b/games/maelstrom/compile_fix.diff @@ -0,0 +1,14 @@ +diff -Naur Maelstrom-3.0.6/screenlib/SDL_FrameBuf.cpp Maelstrom-3.0.6.patched/screenlib/SDL_FrameBuf.cpp +--- Maelstrom-3.0.6/screenlib/SDL_FrameBuf.cpp 2001-07-22 17:03:13.000000000 -0400 ++++ Maelstrom-3.0.6.patched/screenlib/SDL_FrameBuf.cpp 2009-04-14 14:15:49.000000000 -0400 +@@ -848,8 +848,8 @@ + for ( i=0; i /dev/null +fi diff --git a/games/maelstrom/install_dirs.diff b/games/maelstrom/install_dirs.diff new file mode 100644 index 0000000000..08c95405b1 --- /dev/null +++ b/games/maelstrom/install_dirs.diff @@ -0,0 +1,35 @@ +diff -Naur Maelstrom-3.0.6/Makefile.in Maelstrom-3.0.6.patched/Makefile.in +--- Maelstrom-3.0.6/Makefile.in 2002-10-20 00:19:42.000000000 -0400 ++++ Maelstrom-3.0.6.patched/Makefile.in 2009-04-14 14:45:59.000000000 -0400 +@@ -431,7 +431,7 @@ + + # Special install rule for the game + install: +- make install_gamedata target=@GAME_INSTALLDIR@ ++ make install_gamedata target=$(DESTDIR)/@GAME_INSTALLDIR@ + + install_gamedata: + sh mkinstalldirs $(target)/ +@@ -444,8 +444,8 @@ + chmod 666 $(target)/Maelstrom-Scores + + install_gamedocs: +- sh mkinstalldirs $(target)/ +- cp -rv README* COPYING* Docs* $(target)/ ++ sh mkinstalldirs $(DESTDIR)/$(target)/ ++ cp -rv README* COPYING* Docs* $(DESTDIR)/$(target)/ + + # Rule to build tar-gzipped distribution package + $(PACKAGE)-$(VERSION).tar.gz: dist +diff -Naur Maelstrom-3.0.6/configure Maelstrom-3.0.6.patched/configure +--- Maelstrom-3.0.6/configure 2002-10-19 23:43:07.000000000 -0400 ++++ Maelstrom-3.0.6.patched/configure 2009-04-14 14:47:33.000000000 -0400 +@@ -3232,7 +3232,7 @@ + GAME_INSTALLDIR="\$(prefix)/games/$PACKAGE" + ;; + *) +- GAME_INSTALLDIR="\$(prefix)/games/$PACKAGE" ++ GAME_INSTALLDIR="\$(prefix)/share/games/$PACKAGE" + ;; + esac + diff --git a/games/maelstrom/maelstrom.SlackBuild b/games/maelstrom/maelstrom.SlackBuild new file mode 100644 index 0000000000..188176ce8f --- /dev/null +++ b/games/maelstrom/maelstrom.SlackBuild @@ -0,0 +1,93 @@ +#!/bin/sh + +# Slackware build script for maelstrom + +# Written by B. Watson (yalhcru@gmail.com) + +# Note to 64-bit users: Maelstrom-netd and the -server option to Maelstrom +# do not work correctly. I haven't investigated why. You can still play +# networked games in non-server mode (see man page). Users of actual +# Slackware are not affected by this. + +PRGNAM=maelstrom +SRCNAM=Maelstrom +VERSION=${VERSION:-3.0.6} +ARCH=${ARCH:-i486} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $SRCNAM-$VERSION +tar xvf $CWD/$SRCNAM-$VERSION.tar.gz +cd $SRCNAM-$VERSION +chown -R root:root . +chmod -R a-s,u+w,go+r-w . + +# Fix 64-bit compile issue (not needed on 32-bit, but does no harm) +patch -p1 < $CWD/compile_fix.diff + +# Install game data in /usr/share/games/Maelstrom, not /usr/games/Maelstrom +# (also make `make install' support DESTDIR properly!) +patch -p1 < $CWD/install_dirs.diff + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --bindir=/usr/games + +make +make install DESTDIR=$PKG +strip $PKG/usr/games/* + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +make install_gamedocs target=$PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +# Why does `make install' install this? +rm -f $PKG/usr/doc/$PRGNAM-$VERSION/Docs/Makefile + +install -m0755 -o root -g root $CWD/maelstrom_addon_package.pl $PKG/usr/games + +# CLI users would probably prefer to type 'maelstrom', not 'Maelstrom' +( cd $PKG/usr/games && ln -s $SRCNAM $PRGNAM ) + +mkdir -p $PKG/usr/share/pixmaps +( cd $PKG/usr/share/pixmaps + ln -s ../games/$SRCNAM/icon.xpm $PRGNAM.xpm +) + +mkdir -p $PKG/usr/share/applications +cp $CWD/$PRGNAM.desktop $PKG/usr/share/applications + +mkdir -p $PKG/usr/man/man6 +gzip -9c $CWD/$SRCNAM.6 > $PKG/usr/man/man6/$SRCNAM.6.gz + +( cd $PKG/usr/man/man6 + ln -s $SRCNAM.6.gz $PRGNAM.6.gz + ln -s $SRCNAM.6.gz $SRCNAM-netd.6.gz +) + +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.tgz diff --git a/games/maelstrom/maelstrom.desktop b/games/maelstrom/maelstrom.desktop new file mode 100644 index 0000000000..1c968032b8 --- /dev/null +++ b/games/maelstrom/maelstrom.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Maelstrom +Exec=Maelstrom +Type=Application +Icon=maelstrom +GenericName=Maelstrom +Categories=Game;Arcade; diff --git a/games/maelstrom/maelstrom.info b/games/maelstrom/maelstrom.info new file mode 100644 index 0000000000..38d31bf065 --- /dev/null +++ b/games/maelstrom/maelstrom.info @@ -0,0 +1,8 @@ +PRGNAM="maelstrom" +VERSION="3.0.6" +HOMEPAGE="http://www.devolution.com/~slouken/Maelstrom/" +DOWNLOAD="http://www.devolution.com/~slouken/Maelstrom/src/Maelstrom-3.0.6.tar.gz" +MD5SUM="4fbeb6070eebdf161bd156b083b8804e" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" +APPROVED="dsomero" diff --git a/games/maelstrom/maelstrom_addon_package.pl b/games/maelstrom/maelstrom_addon_package.pl new file mode 100644 index 0000000000..7358784c3b --- /dev/null +++ b/games/maelstrom/maelstrom_addon_package.pl @@ -0,0 +1,168 @@ +#!/usr/bin/perl -w + +# maelstrom_addon_package.pl - create a Slackware tgz +# package from a Maelstrom addon zip file, for use with +# the SlackBuilds.org maelstrom package. + +# Beware: only *one* addon may be installed at a time! + +# This script is meant to work on a stock Slackware system, so it +# doesn't use any CPAN modules (which makes the code a bit awkward). + +# Author: B. Watson (yalhcru@gmail.com) + +# This program is released into the public domain; do as ye list wi' her. +# Author not responsible for any damages resulting from the use of this +# program. + +use strict; +use File::Find; # core Perl module, not CPAN + +our $GAMEDIR = "/usr/share/games/Maelstrom"; + +chomp(our $pkgver = `date +%Y%m%d`); + +our $pkgname; +our $spritefile; +our $soundfile; +our @text_files; + +sub usage() { + warn <$package_dir/install/slack-desc"; + print $f "$pkgname: Maelstrom add-on sprites/sound package\n"; + print $f "$pkgname:\n" for (1..10); + close $f; +} + +sub copy_files($) { + my $package_dir = shift; + + system("mkdir -p $package_dir/usr/share/games/Maelstrom"); + system("mkdir -p $package_dir/usr/doc/$pkgname-$pkgver"); + + system("cp \"$_\" $package_dir/usr/doc/$pkgname-$pkgver") for @text_files; + + if($spritefile) { + system("cp \"$spritefile\" " . + "$package_dir/usr/share/games/Maelstrom/\%Maelstrom_Sprites"); + } + + if($soundfile) { + system("cp \"$soundfile\" " . + "$package_dir/usr/share/games/Maelstrom/\%Maelstrom_Sounds"); + } +} + +sub wanted { + my $file = $File::Find::fullname; + if(/\.txt$/i) { + warn "Found text file: $file\n"; + push @text_files, $file; + } elsif(/\%?maelstrom.sounds(?:\..*)?$/i) { + warn "Found sounds: $file\n"; + warn "warning: Duplicate sounds file $file\n" if $soundfile; + $soundfile = $file; + } elsif(/\%?maelstrom.sprites(?:\..*)?$/i) { + warn "Found sprites: $file\n"; + warn "warning: Duplicate sprites file $file\n" if $spritefile; + $spritefile = $file; + } +} + +# main() +my $archive = shift || usage(); +usage() if $archive =~ /^--?(?:\?|h(?:elp)?)/i; + +die "You must run this script as root\n" if $> != 0; + +$pkgname = shift || $archive; +for($pkgname) { + s/.*\///; + s/\..*//; + s/-/_/g; + s/\W//g; + y/A-Z/a-z/; +} + +die "Invalid package name\n" unless $pkgname; + +$pkgname =~ s/^/maelstrom_addon_/; + +if($archive =~ /^(?:ht|f)tps?:\/\//) { + system("wget -O /tmp/$pkgname.zip \"$archive\""); + $archive = "/tmp/$pkgname.zip"; +} + +my $unzip_dir = make_temp_dir(); + +extract($unzip_dir, $archive); +find({ wanted => \&wanted, follow => 1 }, $unzip_dir); + +unless($spritefile or $soundfile) { + die "Can't find any sprites or sounds, aborting\n"; +} + +my $package_dir = make_temp_dir(); + +copy_files($package_dir); +make_slack_desc($package_dir); + +chdir($package_dir) or die $!; +system("/sbin/makepkg -l y -c y /tmp/$pkgname-$pkgver-noarch-1_mael.tgz"); +chdir("/"); +cleanup($package_dir, $unzip_dir); + diff --git a/games/maelstrom/slack-desc b/games/maelstrom/slack-desc new file mode 100644 index 0000000000..e498ffdae2 --- /dev/null +++ b/games/maelstrom/slack-desc @@ -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 ':'. + + |-----handy-ruler------------------------------------------------------| +maelstrom: maelstrom (a game similar to Asteroids) +maelstrom: +maelstrom: You pilot your ship through the dreaded "Maelstrom" asteroid belt -- +maelstrom: suddenly your best friend thrusts towards you and fires, directly +maelstrom: at your cockpit. You raise your shields just in time, and the battle +maelstrom: is joined. The deadliest stretch of space known to mankind has just +maelstrom: gotten deadlier. +maelstrom: +maelstrom: +maelstrom: +maelstrom: