games-fps/unreal-tournament-data: New package to separate data from engine

The game is now essentially free to download from OldUnreal. You can still
install from CD, DVD, or GOG if you want to, but the OldUnreal ISO is used by
default. See this package's long description for details.

This installs Bonus Packs 1 to 4 regardless of installation source. Bonus
Pack 4 was not part of the Game of the Year Edition or any other release,
but it is included by OldUnreal's installer, so I have followed suit and
versioned this as _p4 accordingly.

The data used to be installed as part of games-fps/unreal-tournament, but
that package was last rited many years ago. It has now been restored, but
with just the engine.

I wouldn't normally lump a GOG installer together with other sources because
a bump would disrupt non-GOG users, but the game is no longer by sold by GOG,
so it shouldn't ever change, at least not in any way that would change the
resulting install.

Signed-off-by: James Le Cuirot <chewi@gentoo.org>
This commit is contained in:
James Le Cuirot
2026-07-30 23:32:08 +01:00
parent 0f7bd62043
commit 7e6e8f1334
9 changed files with 531 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
DIST UT_GOTY_CD1.iso 649633792 BLAKE2B f4054aaf30a90c1992d4592f43a199512da21cf8072a523a78d30dadeb669285001b86aa0d9475e1d687a3ee5afa957a250312d1abe8543d348faea5d57ed6e1 SHA512 a3b0bab60c1e76034ec2f3e3069ddddc56ec5992f0b6419053faa5a72f0518f7349fc1ef2428ec775982f771e45853d37cfffe8f66f330549a83448a7c03ee3a
DIST setup_ut_goty_2.0.0.5.exe 316872152 BLAKE2B 5f83fa23d0a16888702e4db22c717e904e5836e8def35603115e3561e4bc506224172671ae20d5ab4c448f7f237f3c1a4f755fc30f0e4ebb4fbaa484d6dd9ac9 SHA512 228e8b553826d7eaaf2dcacd20675f1d1921337139d61f00e273fc668beeafad451be92a685a6ce73b83bed6379cb8d9bdc95336ae967239b241485c4b4bc1d5
DIST utbonuspack-zip.zip 13732267 BLAKE2B 7991e6273b4484b422f685a5eda97660ebd5147bbb6d0a5faedb2ef4c07b5cb554c12041f66e53f827479095983afc81a7da631589a77f5fa2b3764630634aeb SHA512 54dd43e082a1ea81631a3c540331efcbc753d687e9c35543cc60cbc27515e92fca81aaf538862eefab1d08556d7bdde458495ce4c6bc8c9c6fce2a2df3ab1131
DIST utbonuspack2.zip 1594762 BLAKE2B b758f092179e556fed0b6cb3a3931dea10cd81536c27fff25cd2ed02f9e4a0006af1b693a571b54060a6611f94511bb4b4703fd22f69c8989c0b2ba27933182e SHA512 3e7d5961628cb9aadcd044f5b3608186b34d7d5784a96be2d12cd982ac5f1b52404ea8dfc40f16b3324868479f410cce483816056039252d1740fab277eebc87
DIST utbonuspack3-zip.zip 4799960 BLAKE2B e0dc1b6716d4f89f27cba5efdc12a3a4d014c5fdc8cdc9087cf229e04b23e42f380643979fc5a9c85e9f90586c28d1e44e9efe395b2a6653e508924708e025e0 SHA512 6b7b58aee9148b3a8a2eb65f5753c98c962a79e362f88fcd44e037b8fbb2deadbfb85036d4141dc30fc3bcb3c9ed8e7f84fc5215ac8427b4b1d4d6165ec6ee6d
DIST utbonuspack4-zip.7z 11268844 BLAKE2B 73ab0fa5e6656b371997e449bc3577f48d1bd84343aba9c332f2dda0a92bf36f766943e176a596758160311b5cc3b8e94db2fc938360d954268d19a416506357 SHA512 8ec6f4da1e567665750087bdc27f2284ce7e9c8a698cc0114a5e9663f73810c42bf6010d174232f6c80e16bcfe51090e2a21764f9a0ce75e437ae758d2335c5f

View File

@@ -0,0 +1,7 @@
BonusPackReadme.txt
BP4Readme.txt
Logo.bmp
ReadMe.htm
Unreal.ico
UnrealTournamentLogo.bmp
UnrealTournamentSetupLogo.bmp

View File

@@ -0,0 +1,95 @@
AS-Frigate.unr
AS-Guardia.unr
AS-HiSpeed.unr
AS-Mazon.unr
AS-OceanFloor.unr
AS-Overlord.unr
AS-Rook.unr
AS-Tutorial.unr
CityIntro.unr
CTF-Beatitude.unr
CTF-Command.unr
CTF-Coret.unr
CTF-Cybrosis][.unr
CTF-Darji16.unr
CTF-Dreary.unr
CTF-EpicBoy.unr
CTF-EternalCave.unr
CTF-Face-SE.unr
CTF-Face.unr
CTF-Face][.unr
CTF-Gauntlet.unr
CTF-HallOfGiants.unr
CTF-High.unr
CTF-Hydro16.unr
CTF-Kosov.unr
CTF-LavaGiant.unr
CTF-Niven.unr
CTF-November.unr
CTF-Noxion16.unr
CTF-Nucleus.unr
CTF-Orbital.unr
CTF-Ratchet.unr
CTF-Tutorial.unr
DM-Agony.unr
DM-ArcaneTemple.unr
DM-Barricade.unr
DM-Bishop.unr
DM-Closer.unr
DM-Codex.unr
DM-Conveyor.unr
DM-Crane.unr
DM-Curse][.unr
DM-Cybrosis][.unr
DM-Deck16][.unr
DM-Fetid.unr
DM-Fractal.unr
DM-Gothic.unr
DM-Grinder.unr
DM-Grit-TOURNEY.unr
DM-HealPod][.unr
DM-HyperBlast.unr
DM-KGalleon.unr
DM-Liandri.unr
DM-Malevolence.unr
DM-Mojo][.unr
DM-Morbias][.unr
DM-Morpheus.unr
DM-Oblivion.unr
DM-Peak.unr
DM-Phobos.unr
DM-Pressure.unr
DM-Pyramid.unr
DM-Shrapnel][.unr
DM-SpaceNoxx.unr
DM-Stalwart.unr
DM-StalwartXL.unr
DM-Tempest.unr
DM-Turbine.unr
DM-Tutorial.unr
DM-Viridian-TOURNEY.unr
DM-Zeto.unr
DOM-Bullet.unr
DOM-Cidom.unr
DOM-Cinder.unr
DOM-Condemned.unr
DOM-Cryptic.unr
DOM-Gearbolt.unr
DOM-Ghardhen.unr
DOM-Lament.unr
DOM-Lament][.unr
DOM-Leadworks.unr
DOM-MetalDream.unr
DOM-Olden.unr
DOM-Sesmar.unr
DOM-Tutorial.unr
DOM-WolfsBay.unr
Entry.unr
EOL_Assault.unr
EOL_Challenge.unr
EOL_CTF.unr
EOL_Deathmatch.unr
EOL_Domination.unr
EOL_Statues.unr
UTCredits.unr
UT-Logo-Map.unr

View File

@@ -0,0 +1,30 @@
Botmca9.umx
Botpck10.umx
Cannon.umx
Colossus.umx
Course.umx
Credits.umx
Ending.umx
Enigma.umx
firebr.umx
Foregone.umx
Godown.umx
Lock.umx
Mech8.umx
Mission.umx
Nether.umx
Organic.umx
Phantom.umx
Razor-ub.umx
Run.umx
Savemeg.umx
SaveMe.umx
Seeker2.umx
Seeker.umx
Skyward.umx
Strider.umx
Suprfist.umx
UnWorld2.umx
utmenu23.umx
Uttitle.umx
Wheels.umx

View File

@@ -0,0 +1,29 @@
Activates.uax
Addon1.uax
AmbAncient.uax
AmbCity.uax
AmbModern.uax
AmbOutside.uax
Announcer.uax
BossVoice.uax
DDay.uax
DMatch.uax
DoorsAnc.uax
DoorsMod.uax
Extro.uax
Female1Voice.uax
Female2Voice.uax
FemaleSounds.uax
LadderSounds.uax
Male1Voice.uax
Male2Voice.uax
MaleSounds.uax
noxxsnd.uax
openingwave.uax
Pan1.uax
rain.uax
TutVoiceAS.uax
TutVoiceCTF.uax
TutVoiceDM.uax
TutVoiceDOM.uax
VRikers.uax

View File

@@ -0,0 +1,3 @@
BotPack.u
Manifest.ini
OpenGlDrv.ini

View File

@@ -0,0 +1,110 @@
AlfaFX.utx
Ancient.utx
ArenaTex.utx
Belt_fx.utx
BluffFX.utx
BossSkins.utx
castle1.utx
ChizraEFX.utx
city.utx
commandoskins.utx
Coret_FX.utx
Creative.utx
credits.utx
Crypt2.utx
Crypt_FX.utx
Crypt.utx
CTF.utx
DacomaFem.utx
DacomaSkins.utx
DDayFX.utx
DecayedS.utx
Detail.utx
DMeffects.utx
EgyptPan.utx
Egypt.utx
eol.utx
Faces.utx
Factory.utx
FCommandoSkins.utx
Female1Skins.utx
Female2Skins.utx
FireEng.utx
FlareFX.utx
FractalFX.utx
GenEarth.utx
GenFluid.utx
GenFX.utx
GenIn.utx
GenTerra.utx
GenWarp.utx
GothFem.utx
GothSkins.utx
GreatFire2.utx
GreatFire.utx
HubEffects.utx
Indus1.utx
Indus2.utx
Indus3.utx
Indus4.utx
Indus5.utx
Indus6.utx
Indus7.utx
ISVFX.utx
JWSky.utx
LadrArrow.utx
LadrStatic.utx
LavaFX.utx
Lian-X.utx
Liquids.utx
Logo.utx
Male1Skins.utx
Male2Skins.utx
Male3Skins.utx
MenuGr.utx
Metalmys.utx
Mine.utx
NaliCast.utx
NaliFX.utx
NivenFX.utx
noxxpack.utx
of1.utx
Old_FX.utx
Palettes.utx
PhraelFx.utx
PlayrShp.utx
Queen.utx
RainFX.utx
Render.utx
RotatingU.utx
Scripted.utx
SGirlSkins.utx
SGTech1.utx
ShaneChurch.utx
ShaneDay.utx
ShaneSky.utx
Skaarj.utx
SkTrooperSkins.utx
SkyBox.utx
SkyCity.utx
Slums.utx
Soldierskins.utx
SpaceFX.utx
Starship.utx
tcowmeshskins.utx
TCrystal.utx
Terranius.utx
tnalimeshskins.utx
TrenchesFX.utx
tskmskins.utx
UT_ArtFX.utx
UTbase1.utx
UTcrypt.utx
UTtech1.utx
UTtech2.utx
UTtech3.utx
UT.utx
XbpFX.utx
XFX.utx
Xtortion.utx
xutfx.utx

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>games@gentoo.org</email>
<name>Gentoo Games Project</name>
</maintainer>
<use>
<flag name="gog">Install from the GOG.com release. Note that the game is no longer sold here.</flag>
<flag name="bonuspacks">Download Bonus Packs 1 to 3. Mandatory if installing from the original non-GOTY Edition CD.</flag>
</use>
<longdescription>
This package installs just the data files, not the engine, for Epic's
popular first-person shooter game, Unreal Tournament (99).
Epic privately shared the engine sources with the community OldUnreal
team, who now maintain it and publish modern builds. Epic also, somewhat
informally, gave permission for OldUnreal to host a CD ISO of the game
for the community to download and play for free.
GamingOnLinux shared this news and confirmed it with Epic here:
https://www.gamingonlinux.com/2024/11/classic-unreal-tournament-and-unreal-now-easier-to-download-free-thanks-to-oldunreal/
"We can confirm that Unreal 1 and Unreal Tournament are available on
archive.org and people are free to independently link to and play
these versions."
Epic's web page for Unreal Tournament links to OldUnreal for downloads:
https://www.epicgames.com/unrealtournament
By default, this package will fetch that ISO from OldUnreal. If you do
not want to use OldUnreal's ISO, you also have the option to install
from CD, DVD, or GOG instead. Note that the game can no longer be
purchased from GOG or anywhere else. Epic even removed it from their own
store. Also note that the GOG edition lacks the French, German, Italian,
and Spanish sound files.
If you are installing from the original non Game of the Year Edition CD,
which lacks Bonus Packs 1 to 3, you must enable the bonuspacks USE flag
to download them. Bonus Pack 4 is downloaded unconditionally.
</longdescription>
</pkgmetadata>

View File

@@ -0,0 +1,209 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CDROM_OPTIONAL="yes"
inherit cdrom check-reqs multiprocessing
DESCRIPTION="Data files for Unreal Tournament (99)"
HOMEPAGE="https://liandri.beyondunreal.com/Unreal_Tournament"
GOG="setup_ut_goty_2.0.0.5.exe"
SRC_URI="
fetch+https://files.oldunreal.net/utbonuspack4-zip.7z
!cdinstall? ( !gog? ( fetch+https://files.oldunreal.net/UT_GOTY_CD1.ISO -> UT_GOTY_CD1.iso ) )
gog? ( ${GOG} )
bonuspacks? (
fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack-zip.zip
fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack2.zip
fetch+https://unreal-archive-files-na.s3.ca-east-tor.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack3-zip.zip
)
"
S="${WORKDIR}"
LICENSE="Epic-TOS" # See metadata.xml for the legal background.
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="bonuspacks doc gog l10n_es l10n_fr l10n_it"
RESTRICT="bindist gog? ( fetch ) mirror"
REQUIRED_USE="
?? ( cdinstall gog )
!cdinstall? ( !bonuspacks )
"
UT_DEPEND=">=games-fps/unreal-tournament-469e"
BDEPEND="
${UT_DEPEND}
app-arch/libarchive
cdinstall? ( app-arch/unshield )
gog? ( app-arch/innoextract )
"
RDEPEND="
${UT_DEPEND}
"
# Assuming the OldUnreal ISO.
CHECKREQS_DISK_BUILD="2G"
pkg_nofetch() {
einfo "Please download ${GOG} from GOG and move it"
einfo "to your distfiles directory. Note that you can no longer buy this"
einfo "game from GOG, so disable USE=\"gog\" to use OldUnreal's free ISO if"
einfo "you don't already own the game."
}
locale_mismatch() {
case "${1}" in
*.est|*.est_*|3_UnrealTournament_*_Spanish) ! use l10n_es ;;
*.frt|*.frt_*|3_UnrealTournament_*_French) ! use l10n_fr ;;
*.itt|*.itt_*|3_UnrealTournament_*_Italian) ! use l10n_it ;;
*) return 1 ;;
esac
}
src_unpack() {
if use gog; then
if use l10n_es || use l10n_fr || use l10n_it; then
ewarn "The GOG edition lacks localised audio. Please disable USE=\"gog\" if you"
ewarn "would prefer to use a free game download that does include this content."
echo
fi
ln -s . app || die
innoextract --extract --include app "${DISTDIR}/${GOG}" || die
else
if use cdinstall; then
ewarn "It is no longer necessary to install this from CD or DVD. Please"
ewarn "disable USE=\"cdinstall\" if you would prefer to download the game for"
ewarn "free."
echo
else
# We might as well handle a downloaded ISO and a user-provided ISO
# the same way through cdrom.eclass.
CD_ROOT="${DISTDIR}/UT_GOTY_CD1.iso"
fi
# The German Midway DVD doesn't include UT99.
cdrom_get_cds Manuals/UnrealTournament_English.pdf:Maps/DM-SpaceNoxx.unr.uz:Maps/DM-Pressure.unr
case ${CDROM_SET} in
0) einfo "Found Midway Unreal Anthology DVD" ;;
1) einfo "Found Unreal Tournament Game of the Year Edition CD" ;;
2) einfo "Found Unreal Tournament original CD" ;;
esac
case ${CDROM_SET} in
2)
if ! use bonuspacks; then
die "Your installation source lacks Bonus Packs 1 to 3. Please enable USE=\"bonuspacks\" to download them."
fi ;;
*)
if use bonuspacks; then
ewarn "Enabling USE=\"bonuspacks\" just downloads unnecessary files with"
ewarn "this installation source. Please disable it."
fi ;;
esac
local group dir cdnum
case ${CDROM_SET} in
0)
# Symlinks for unshield. These files need to be in the same
# directory but on the disk, they are not for some reason.
ln -snf "${CDROM_ROOT}"/{Disk1/data1.hdr,Disk*/data*.cab} "${T}"/ || die
for group in $(unshield g "${T}"/data1.cab || die); do
case ${group} in
3_UnrealTournament_System_All) : ;;
3_UnrealTournament_EXE|3_UnrealTournament_Manual_*|3_UnrealTournament_NetGamesUSA|3_UnrealTournament_System_*|3_UnrealTournament_Web) continue ;;
3_UnrealTournament_*) : ;;
*) continue ;;
esac
locale_mismatch "${group}" && continue
unshield -g "${group}" x "${T}"/data1.cab || die
done
for dir in 3_UnrealTournament_*; do
mv -v "${dir}" "${dir#3_UnrealTournament_}" || die
done
use l10n_es && { rename -v .uax .est_uax Sounds_Spanish/*.uax || die; }
use l10n_fr && { rename -v .uax .frt_uax Sounds_French/*.uax || die; }
use l10n_it && { rename -v .uax .itt_uax Sounds_Italian/*.uax || die; }
for dir in *_*/; do
mkdir -p "${dir%_*}" || die
tar -C "${dir}" --remove-files -cf - . | tar -C "${dir%_*}" -xvf - || die
done
;;
1)
tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die
# The engine has the decompresser for the maps. TODO: Use the
# new -samefolder option when bumping the engine to 469f.
unreal-tournament-ucc &>/dev/null || die # Create ~/.utpg early to avoid race.
ls Maps/*.unr.uz | xargs -P "$(get_makeopts_jobs)" -ti unreal-tournament-ucc decompress "${PWD}"/{} >/dev/null || die
mv -v ~/.utpg/System/*.unr Maps/ || die
rm -v Maps/*.unr.uz || die
;;
2)
tar -C "${CDROM_ROOT}" --mode=u+w -cf - . | tar -xvf - || die
# Extract Bonus Packs 1-3, which were included in GOTY Edition.
bsdtar --strip-components=1 -xvf "${DISTDIR}"/utbonuspack-zip.zip || die
bsdtar -C Maps -xvf "${DISTDIR}"/utbonuspack2.zip \*.unr || die
bsdtar --strip-components=1 -xvf "${DISTDIR}"/utbonuspack3-zip.zip || die
mv system/* System/ || die
mv textures/* Textures/ || die
;;
esac
# Filename casing of localised audio needs to match the English version.
mv -v Sounds/{OpeningWave,openingwave}.est_uax || die
fi
# None of the installation sources include Bonus Pack 4, but OldUnreal's
# installer includes it, so we should too.
bsdtar -xvf "${DISTDIR}"/utbonuspack4-zip.7z || die
}
src_install() {
local dir file
if use doc; then
case ${CDROM_SET} in
0) newdoc "${CDROM_ROOT}"/Manuals/UnrealTournament_English.pdf Manual.pdf ;;
1|2) : ;; # No PDF
*) dodoc Manual/Manual.pdf ;;
esac
fi
# Drop unwanted localisation files.
while read -r file; do
if locale_mismatch "${file}"; then
rm -v "${file}" || die
fi
done < <(find -type f)
insinto /opt/unreal-tournament
keepdir /opt/unreal-tournament/Logs
# Drop any other non-localisation files not included in our listings for
# cleanliness and consistency between installation sources. These listings
# are (mostly) based on OldUnreal's installation.
for file in "${FILESDIR}"/listings/*; do
dir=${file##*/}
find "${dir}" -type f | grep -Fxvf <(sed -r -e "s:^:${dir}/:" -e 's:(.*)\.uax$:\1.uax\n\1.est_uax\n\1.frt_uax\n\1.itt_uax:' "${file}") | xargs -r rm -v -- || die
doins -r "${dir}"
done
# The same map with different filenames works for Deathmatch and Domination.
dosym "DM-Cybrosis][.unr" "/opt/unreal-tournament/Maps/DOM-Cybrosis][.unr"
}
pkg_postinst() {
einfo "Much better textures are available from the Unreal HD Textures project."
einfo "You can simply extract their .utx files into ~/.utpg/Textures."
}