forked from id-Software/Quake
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
195 lines (154 loc) · 8.51 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
A brief readme added by Wyatt Ward.
I added this readme and some updated Makefiles, as well as tweaking a few of
Quake's source files, to make it work properly on a modern Linux system.
I did _not_ change any parts of the game to make it look all pretty, or
to bring new improvements in graphics to the game. I only changed what was
_absolutely essential_ to run the game, plus some things that desperately
needed to be changed to work *properly* on modern Linux/Unix systems.
Specifically, I am most interested in preserving the software-rendered version
of Quake, since no one seems to care about it and everyone uses the later
OpenGL port.
Perhaps on account of me not knowing almost any 3D graphics programming
already, I am not too intimidated by the concept of working on software
quake... OpenGL would probably be just as hard. And I prefer how software
rendered quake looks.
Some more recent noteworthy changes, features, and notes (as of 2023):
In the `WinQuake` (original "NetQuake") directory:
* Bumped maximum window resolution from 1280x1024 to 2560x2048 for software
rendered Quake. Patched some assembly routines related to it, too (for i386).
* Added SDL audio backend (borrowed and adapted from Quakespasm). This allows
for playing music with a CD drive emulator and getting sound effects
simultaneously, without needing two sound cards (since OSS DMA doesn't play
nice with software mixing).
* Some bad hacks in the makefile to make it link to everything it needs to.
* XQuake and GLQuake both function; XQuake is more thoroughly tested.
In the `QW` (QuakeWorld) directory (NEW!):
* Added support for 24-bit RGB color in X11 software rendered quakeworld.
The sources in the `WinQuake` directory supported this already, but
QuakeWorld's did not. In many ways, QW seems to be based on an older
version of the code.
* Bumped maximum window resolution from 1280x1024 to 2560x2048 for software
rendered quakeworld. Note that this was more difficult here than in
`WinQuake` due to more hardcoded values. Patched some related assembly
routines, too (for i386).
* Added SDL audio backend (borrowed and adapted from Quakespasm). This allows
for playing music with a CD drive emulator and getting sound effects
simultaneously, without needing two sound cards (since OSS DMA doesn't play
nice with software mixing).
* Fixed a crash related to going underwater on some larger screen resolutions.
* Some bad hacks in the makefile to make it link to everything it needs to.
* XQuakeWorld functions; I play with a friend online using it.
* GLQuakeWorld is completely untested and likely needs work.
* Extended maximum length of user info string, for partial compatibility with
some more "modern" (i.e., incompatible) quakeworld server variants.
The original, unmodified source can be found here:
https://github.com/id-Software/Quake
A good how-to for arguments and troubleshooting and such is here:
http://www.linuxdoc.org/HOWTO/Quake-HOWTO-1.html
=================================================
: WHAT THIS IS / GENERAL BACKGROUND INFO :
=================================================
The how-to did not mention a few problems, which I created fixes for. These
include the mouse not working to allow input and no input whatsoever (not even
the keyboard) working in fullscreen. I also fixed a buffer overflow caused by
the sheer number of OpenGL extensions that modern systems support (the game
tries to print them to the console, and in doing so causes a buffer overflow
because the string containing all of the extensions is larger than the game
expected). The only noticeable difference my tweaks have caused (besides the
fact that you now can play the game) is that this string of OpenGL extensions
is no longer printed to the terminal (which I doubt most people care about,
anyway). I promise I made no tweaks to functionality or controls that would
make it differ from the original.
=================================================
: COMPILING QUAKE FOR LINUX :
=================================================
++++++++++++++
| DISCLAIMER |
++++++++++++++
I have only built this on 32-bit Linux Mint 14.
It should work on 64 bit, but will have to be
Compiled with 32-bit libraries and binaries. I
think this is merely due to some assembly used,
and some changes to update the assembly to the
x86_64 architecture could make this work in 64
bit OSes natively. Also, there is a "pure C"
implementation of everything that needs assembly
on x86; I just need to remember how I used it.
I have it working on my Powerbook G4 (PowerPC).
With that out of the way here is how to compile it:
For the OpenGL GLX version (the high-quality version most sane people want),
go to the directory 'WinQuake' and type
$ make build_release
The makefile named 'Makefile.linuxi386' is the original one from id, which
does not work anymore. The GLX and X11 makefiles are derived from this one,
but do successfully build. Use them instead!
The file 'Makefile.Linuxi386.glx' should be the same as the normal 'Makefile'.
++++++++++++
| X11 Port |
++++++++++++
For the X11 version, the only version I even tried to port and which works
well, is simpler to build, has fewer dependencies, and has fewer hardcoded
paths, but is lower quality graphics-wise, do
$ make -f Makefile.Linuxi386.X11 build_release
=================================================
: POTENTIAL BUILD PROBLEMS :
=================================================
+++++++++++++
| Libraries |
+++++++++++++
If you are missing libraries, headers or whatnot, it will let you know about
it quite loudly. You will need a few headers from the linux kernel; if you
use ubuntu or an ubuntu variant, the headers should be under something like
/usr/src/linux-headers-3.5.0-44/arch/x86/include
and
/usr/src/linux-headers-3.5.0-44-generic/include
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
$ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
$ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...Although if you do, enable OSS while you are at it.
This can be worked around if you don't compile.
All we need is the source files. We have no reason to
compile it unless that's something you would normally do
anyway.
These will have to be edited in the makefile if you have a different version
or architecture of the kernel than I did. Search one of the above strings to
find where I included them. Replace them appropriately with your kernel
versions. If you don't have sources, they are obtainable from most package
managers, including apt. A few other paths may have to be changed in the
Makefile that I hardcoded, but you can figure those out I think.
(Look for 'wyatt' in the makefile; those paths are hardcoded, but there
may be more. I honestly don't remember. I only know that when I got the
source, id had hardcoded paths in the makefile and i simply changed the
paths to fit my environment.)
Good luck!
___________________________________________________________________________
=================================================
: PROBLEMS RUNNING THE GAME :
=================================================
After building, it will be in the directory 'releasei386'.
You will need to copy the directory 'id1' from a quake CD-ROM
and place it in the 'bin' directory that your compiled game is in.
I have yet to have this problem in Linux, but in windows, I have had
blank (white) textures and a flickering display. To fix these, you can
add the parameters '-no8bit' '+gl_ztrick 0' to the launching parameters.
Note that 'gl_ztrick' _should_ have a "+" sign preceeding it instead of
a "-".
=================================================
: SOUND PROBLEMS :
=================================================
This game uses OSS on Linux; Most modern computers running linux (e.g.
Ubuntu, unless you built your own kernel) do not supply this. To fix,
install 'aoss' (ALSA OSS wrapper) and run the game using
$ aoss ./glquake.glx <parameters>
to make it see a fake OSS. The alternative (which will disable sounds but
does not require any more package installations) is to pass '-nosound' to
the game when invoking.
I have not had luck getting sound in Linux Quake. I may need to have the
CD-ROM in the drive, but I lost mine years ago and only have the
installed version of the game on a old PC's hard disk. I cannot test why
sound isn't working, but I can tell you Quake complains about not seeing
a CD-ROM. I cannot answer questions about sound support.
-Wyatt Ward, 2014-01-06 16:04 EST
Last Edited: 2014-01-14 9:25 EST