Skip to content

Commit

Permalink
feat: Rounding up Open Quartz & Prototype; Build code & info (#55)
Browse files Browse the repository at this point in the history
* DRY on the cross-platform and some built code.
* ConfigParser-based INI handling (currently for first-time checks).
* Update docs wrt Open Quartz.
* Don't use custom skins (fixes #11 - again? :-))
* UI labelling tweaks for clarity.
* Update code copyright ranges.
* Re-add GNU Free Documentation Licence (it is in there twice due to two docs that use it).
* Fix heading levels in docs.
* Fix map-building as part of build on Windows (don't flash up command prompt; fix cross-platform logic).
* Slightly less verbosity.
* Update change log.
* Update build instructions wrt Quake textures.
  • Loading branch information
matatk authored Sep 7, 2020
1 parent fb5660b commit 8f1d00a
Show file tree
Hide file tree
Showing 38 changed files with 1,266 additions and 347 deletions.
79 changes: 47 additions & 32 deletions LICENCE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
AudioQuake, Level Description Language and distributed software---Licences
==========================================================================

This file aims to clarify the licencing terms that AudioQuake, Level
Description Language (LDL) and the supporting data and programs
distributed with them (not all created by us) fall under. It exists to
make sure that you're completely aware of what you (and we) can and
can't do with the software. Each section describes a component of the
AudioQuake and LDL distribution and the licence used for it.
This file describes the licencing terms for AudioQuake, the Level
Description Language (LDL) tools and the supporting data and programs
distributed with them (not all created by us). It exists to make sure
that you're completely aware of what you (and we) can and can't do with
the software. After the following summary, each section describes a
component of the AudioQuake and LDL distribution and the licence used
for it.

tl;dr:
------
Expand All @@ -20,7 +21,8 @@ There are three licences in use:
- The Prototype textures are copyright 2017-2019 by Aleksander
"Khreathor" Marhall (<[email protected]>;
<https://twitter.com/khreathor>). They're freely usable in Quake or
any game, as long as Aleksander gets a credit---thanks Aleksander!
any game, as long as Aleksander gets a credit, which is totally
reasonable: thanks Aleksander!
- Everything else is distributed under the GNU General Public Licence
(GPL), version 2 or later.

Expand All @@ -31,6 +33,32 @@ This is the QuakeWorld game engine on which AudioQuake is based. It is
distributed under the GNU General Public Licence (GPL). For more
information, please read the COPYING file.

Quake map compilation tools
---------------------------

This repo builds on id's "Quake Tools" code, which is also released
under the GNU GPL.

That code is linked to this repo via a submodule, and the compiled tools
are distributed as part of the AudioQuake and LDL bundle. Some patches
(maintained in this repo) are applied to ensure the software will build,
and to relax constraints it places on the paths where WAD files are
located. Those patches, as they're both applicable to GPL'd software,
and reside in this repo, are too distributed under the GPL.

Open Quartz data pack
---------------------

The Open Quartz game data, which includes sounds, textures, models,
maps, gamecode (although the AGRIP gamecode is used instead) and UI
graphics, is included out-of-the-box. This means you can have fun right
away, even if you haven't bought Quake. You can make maps and play
multiplayer games with Open Quartz.

The project is hosted on another service, but development stopped some
time ago, so the latest data files are included here and, as usual, are
covered by the GNU GPL.

AudioQuake (gamecode and data)
------------------------------

Expand All @@ -45,45 +73,32 @@ under the GPL too. Please check out the [AudioQuake
ACKNOWLEDGEMENTS](audioquake/ACKNOWLEDGEMENTS.md) file for details---and
many thanks to everyone on whose work we've been able to build!

AudioQuake Launcher
-------------------
AudioQuake and LDL launcher
---------------------------

The launcher is a separate program to the game engine and data. It
provides a UI for running, customising, modding and making maps for the
game, as well as text-to-speech facilities for when the game is running.
Again, this is distributed under the GNU GPL. For details on what this
means, please consult the COPYING file.

Level Description Language
--------------------------
Level Description Language tools
--------------------------------

The LDL library and UI (integrated into the AudioQuake launcher) were
developed as part of AGRIP and are released under the GNU GPL, as above.
The LDL library and UI (integrated into the launcher) were developed as
part of AGRIP and are released under the GNU GPL, as above.

Quake map compilation tools
---------------------------

This repo builds on id's "Quake Tools" code, which is also released
under the GNU GPL.
Prototype textures
------------------

That code is linked to this repo via a submodule, and the compiled tools
are distributed as part of the AudioQuake and LDL bundle. Some patches
(maintained in this repo) are applied to ensure the software will build,
and to relax constraints it places on the paths where WAD files are
located. Those patches, as they're both applicable to GPL'd software,
and reside in this repo, are too distributed under the GPL.
These textures are used in the high-contrast variants of maps. They are
freely usable in Quake or other games, and are copyright 2017-2019 by
Aleksander "Khreathor" Marhall (<[email protected]>;
<https://twitter.com/khreathor>). Thank you, Aleksander!

AudioQuake and Level Description Language documentation
-------------------------------------------------------

The manual for AudioQuake and documentation for LDL are distributed
under the GNU Free Documentation Licence (FDL). A copy of this is
included in an appendix of the AudioQuake manual.

Prototype textures
------------------

These textures are used in the high-contrast variants of maps. They are
freely usable in Quake or other games, and are copyright 2017-2019 by
Aleksander "Khreathor" Marhall (<[email protected]>;
<https://twitter.com/khreathor>). Thank you, Aleksander!
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
AGRIP AudioQuake and Level Description Language
===============================================

***Quake* has a "15" certificate. For obvious reasons, we do not
recommend nor condone the use of this software by anyone below 15 years
of age.**

*AudioQuake* and the *Level Description Language* were successful
experiments started in 2003 to see if it was possible to make a
mainstream first-person shooter (FPS) accessible to blind and
Expand Down Expand Up @@ -58,10 +62,9 @@ most-welcome Star Wars conversions to "excessive overkill"-style
fragfests. The standard modding tools can be used for this, as they are
inherently accessible.

You need the official *Quake* data files for the game to work.

*Quake* has a "15" certificate. For obvious reasons, we do not recommend
nor condone the use of this software by anyone below 15 years of age.
You can play right away because the Open Quartz community-made data pack
is included. You can also buy the official *Quake* data files for use
with the game too (instructions can be found in the user manual).

Level Description Language
--------------------------
Expand Down
4 changes: 1 addition & 3 deletions audioquake/.gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Manual intermediate files
manuals-converted/
# Compiled maps dirs
maps-freewad/
maps-quakewad/
maps-prototypewad/
# PyInstaller output
build/
dist/
audioquake.ini
2 changes: 2 additions & 0 deletions audioquake/AudioQuake.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import wx

from launcherlib.config import init as init_config
from launcherlib.ui.launcher import LauncherWindow
from launcherlib.ui.helpers import MsgBox

Expand All @@ -25,5 +26,6 @@ def error_hook(etype, value, trace):
app = wx.App()
sys.excepthook = error_hook
chdir(getattr(sys, '_MEIPASS', path.abspath(path.dirname(__file__))))
init_config()
LauncherWindow(None, "AudioQuake and LDL Launcher").Show()
app.MainLoop()
8 changes: 4 additions & 4 deletions audioquake/AudioQuake.spec
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# vim: ft=python
from buildlib import Config, platform_set, platform_set_only_on
from buildlib import Config, doset, doset_only

data_files = [
('mod-static-files/', 'id1'),
Expand Down Expand Up @@ -32,7 +32,7 @@ data_files = [
if next(Config.dir_maps_quakewad.glob('*.bsp'), None) is not None:
data_files.extend([('maps-quakewad/*.bsp', 'id1/maps/')])

binary_files = platform_set(
binary_files = doset(
mac=[
('../giants/zq-repo/zquake/release-mac/zqds', '.'),
('../giants/zq-repo/zquake/release-mac/zquake-glsdl', '.'),
Expand Down Expand Up @@ -64,7 +64,7 @@ a = Analysis( # noqa 821

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) # noqa 821

platform_icon = platform_set(
platform_icon = doset(
mac='app-support-files/aq.icns',
windows='app-support-files/aq.ico')

Expand All @@ -88,7 +88,7 @@ coll = COLLECT( # noqa 821
upx=True,
name='AudioQuake')

info_plist = platform_set_only_on(
info_plist = doset_only(
mac={
'NSRequiresAquaSystemAppearance': 'No' # Support dark mode
})
Expand Down
12 changes: 11 additions & 1 deletion audioquake/BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,24 @@ Please ensure you've read and followed the steps in [the main BUILD.md file](../
If you want to build AudioQuake separately, and have the development environment set up already, it's as simple as running:

* **Mac:** `./build-audioquake.py`

* **Windows:** `python build-audioquake.py`

What does `build-audioquake.py` do?
-----------------------------------

1. Converts the user manual, sound legend appendix (so it can be referred to separately), development manuals, README and LICENCE files from Markdown to HTML.
2. Runs [PyInstaller](http://www.pyinstaller.org) to "freeze" the Python code (so that it runs like a normal executable, without requiring Python on the player's computer) and combine it with...

2. Uses the Quake map tools to compile the AGRIP maps (which were originally made with [QuArK](http://quark.sourceforge.net/) for all three different variants of play: Quake, Open Quartz and the "high-contrast" textures from Prototype.wad.

In Quake, textures are compiled into the ".bsp" files directly from the texture ".wad" files. If this is the first time you're building AudioQuake

3. Runs [PyInstaller](http://www.pyinstaller.org) to "freeze" the Python code (so that it runs like a normal executable, without requiring Python on the player's computer) and combine it with...

+ The engine, gamecode and map compilation tools (built using the "build-giants.py" script in the root directory).

+ The Level Description Language tools (from the "ldl" subdirectory).

+ The AudioQuake game assets (sounds etc.) from this directory.

+ The Remote console client written in Python, also from this directory.
88 changes: 48 additions & 40 deletions audioquake/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
AudioQuake 2020.0 (??/??/2020)
==============================

This is a re-release in which we've massively revamped the code -- including
the Level Description Language -- to run on modern platforms, with a new
GUI-based launcher/level-builder and modern, cross-platform build system. There
are no functionality changes, but it should be a great deal easier to get, play
and modify the game now. Whilst no longer relevant in the mainstream sense, we
wanted to make sure that the game would still run, and that you could more
easily make levels for it.

**Technical change highlights:**

* Level Description Language tools and tutorials included with the game.
* Shiny new GUI launcher (based on wxWidgets).
* Slicker Text-to-Speech performance.
* The launcher can load in the registered Quake data if you bought the game.
* ??? You can now also install QMOD files via the GUI.
* ??? Documentation updates.
* Much code cleanup behind the scenes.
- All of the Python code has been tidied up a lot.
- We are now using PyInstaller to bundle the app.
AudioQuake 2020.0 (Latest beta: ??/??/2020)
===========================================

This is a re-release in which we've massively revamped the
code---including the Level Description Language (LDL)---to run on modern
platforms, with a new GUI-based launcher and a new cross-platform build
system. There are some new features, and it should be a great deal
easier to get, play and modify the game now. Whilst no longer
mainstream, we wanted to make sure that the game would still run, and
that you could more easily make levels for it.

- Level Description Language (LDL) tools and tutorials are included
with the game.
- Shiny new GUI launcher (based on wxWidgets), with all the main
features of the previous text-based launcher (including QMOD and
registered Quake data installation) and more.
- You can play out-of-the-box courtesy of the Open Quartz community
data pack.
- Levels you make can be played using Quake or Open Quartz textures,
or a new set of high-contrast textures.
- More flexible styling of LDL maps (supporting the above sets of
textures, as well as additional styles you can apply to parts of
maps, e.g. to make some areas appear outside).
- The launcher can load in the registered Quake data if you bought the
game.
- Big documentation updates.
- Much code clean-up behind the scenes.
- All of the Python code has been tidied up a lot.
- We are now using PyInstaller to bundle the app.
- Slicker text-to-speech performance.

AudioQuake 0.3.0 (02/01/2008)
=============================
Expand All @@ -29,16 +37,16 @@ that aims to take accessibility and community involvement to its logical
extreme. This release represents a move in game engine and many months
of hard work. So much has changed that only a summary is given here.

- Move to the ZQuake QuakeWorld engine -- the first Open Source
- Move to the ZQuake QuakeWorld engine---the first Open Source
mainstream accessible game engine (many thanks to Tonik and the
other developers for allowing our patches in).
- Port of the AccessibleQuake game code to ZQuake's QuakeC system
(which supports multiple online and offline gametypes).
- Internet Multiplayer support -- Yes; you can play Quake online a
- Internet Multiplayer support---Yes; you can play Quake online a
variety of game modes!
- Internet Game Server -- Set up your own games with total control
over maps and game rules.
- Online statistics -- track your progress with respect to other
- Internet Game Server---Set up your own games with total control over
maps and game rules.
- Online statistics---track your progress with respect to other
AudioQuake players.
- http://stats.agrip.org.uk/ is a portal for all online features of
the game.
Expand All @@ -49,7 +57,7 @@ of hard work. So much has changed that only a summary is given here.
Linux, as well as being able to use the data from the downloadable
version of Quake for Windows.
- Many bug fixes and feature enhancements to both the engine and game
code in this move -- such as new footstep sounds (from Davy Loots)
code in this move---such as new footstep sounds (from Davy Loots)
and movement speed indication, ESR enhancements and general gameplay
review.

Expand All @@ -75,7 +83,7 @@ project we now host ("AudioQuake").
- Made ESR level determination Z tolerance configurable (it was a very
long time ago, as I remember).

- Major line editing improvements -- punctuation characters (such as
- Major line editing improvements---punctuation characters (such as
the bang, tick dot and dash) are now announced properly when typed
or reviewed.

Expand Down Expand Up @@ -125,18 +133,18 @@ made because there have been a number of big improvements.
and Visual Studio Installer 1.1 (used to create ".msi"s out of the
SAPI 5.1 redist' ".msm"s).

- After too many problems -- the killer being that Windows just
doesn't do pipes -- we have fallen back to using Perl for the
start-agrip / TTS interface launcher. This does have the advantage
that we can do a nice cross-platform front-end.
- After too many problems---the killer being that Windows just doesn't
do pipes---we have fallen back to using Perl for the start-agrip /
TTS interface launcher. This does have the advantage that we can do
a nice cross-platform front-end.

- Altered make-release.sh so that it makes separate "nix" and "win32"
releases. The win32 releases can then be copied to a suitable
development box where the Inno Setup script can be compiled to
create executable setup packages.

- Improved my QF patch code to go through Con\_Printf (so that
fflush() is done implicitly).
- Improved my QF patch code to go through Con_Printf (so that fflush()
is done implicitly).

- Removed a load of sounds from the QuakeC side so as to make way for
SAPI.
Expand Down Expand Up @@ -184,7 +192,7 @@ Whilst in development, this was 0.0.5, but was re-released as 0.1.0
accessible set-up had been reverted to one that could confuse some
AGRIP objects.

- Fixed a bug where the bots would render you SOLID\_NOT on coming to
- Fixed a bug where the bots would render you SOLID_NOT on coming to
your aid (caused by me not escaping from the goal item grabbing
routine if the goal item is a player).

Expand All @@ -200,7 +208,7 @@ Whilst in development, this was 0.0.5, but was re-released as 0.1.0
AGRIP 0.0.4 (22/05/2004)
========================

- Added jump detection -- you can press J for a description of ho you
- Added jump detection---you can press J for a description of ho you
will be able to make a jump. If the hazard doesn't represent a jump,
or you can't make it, you'll hear the "access denied" sound. If you
can make it with a running jump, you'll hear a shotgun-like sound.
Expand Down Expand Up @@ -272,9 +280,9 @@ AGRIP 0.0.3 (13/05/2004)

First release after 0.0.x has been extended.

- The "wall\_hit\_warnings" are now "wall\_touch\_warnings". By
default they're off but if on, they keep the walls making sound if
you're still near them.
- The "wall_hit_warnings" are now "wall_touch_warnings". By default
they're off but if on, they keep the walls making sound if you're
still near them.

- Added a number of extra configuration options to help make the nav
system quieter and more customisable (toggles for all
Expand Down
Loading

0 comments on commit 8f1d00a

Please sign in to comment.