mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-12-11 21:31:30 +00:00
997102fea8
There are still a few iffy places (notably around certain prepositions), but the relevant sentences are now much easier to read.
456 lines
23 KiB
Text
456 lines
23 KiB
Text
NEWS for the QuakeForge project
|
|
-------------------------------
|
|
|
|
Changes from 0.5.5
|
|
o General enhancements
|
|
* more fullscreen toggle fixes
|
|
* lighting tweaks
|
|
* don't lose sound when switching workplaces in X
|
|
* "lagged dlights" in mvds fixed
|
|
* flac sound file support
|
|
* support multiple directories in fs_sharepath
|
|
* new savegame format
|
|
* JACK audio output
|
|
* http download support
|
|
* CPQW support
|
|
* gold-key/radiation-symbol bug in rock2 fixed
|
|
* support for very big maps (eg marcher.bsp)
|
|
* beams (lightning etc) can be any length
|
|
* unlimited beams
|
|
* support for Japanese keyboards
|
|
o Ruamoko
|
|
* plist access
|
|
* entity parsing support
|
|
* quake script parsing support
|
|
o qfcc
|
|
* function overloading
|
|
* allow entity.vector.x (etc) instead of entity.vector_x
|
|
* many ObjectiveQuakeC fixes
|
|
* optional constant-vector parameter space optimisation (slows down
|
|
the code, though): can compile the version of frogbot that has
|
|
waypoints for almost 300 maps.
|
|
* rcall support
|
|
* static local vars
|
|
* more pointer support
|
|
* better compatibility with qcc
|
|
o Tools
|
|
* filter for displaying item information from a map (itemslist.py)
|
|
* wad tool improvements
|
|
|
|
Changes from 0.5.4
|
|
o General enhancements
|
|
* bring back a bunch of fixes from 0.5.3 (including news items) that
|
|
got lost in the rushed release of 0.5.4
|
|
* more cvar renaming: scr_consize -> con_size, scr_conspeed ->
|
|
con_speed, gl_conalpha -> con_alpha, vid_conwidth -> con_width,
|
|
vid_conheight -> con_height, show_fps -> hud_fps, show_ping ->
|
|
hud_ping, show_pl -> hud_pl, show_time -> hud_time, show_scoresuid ->
|
|
hud_scoreboard_uid
|
|
* demo_speed no longer affects console scrolling or cursor blink rate
|
|
* save game loading fixed
|
|
* FPS display now updated every 0.2 seconds and displays to the tenth
|
|
of an fps
|
|
* improper placement of fullscreen window on startup in -x11 and -glx
|
|
fixed (ie, starting with +set vid_fullscreen 1)
|
|
* QNX fixes from Mike Gorchak <mike@malva.ua>
|
|
* DirectX is now the default sound driver for windows
|
|
* renderer speedups
|
|
* demo_quit cvar to cause qf to quit automaticly at the end of a
|
|
timedemo to make automation of profiling easier
|
|
* server clients work with mvds
|
|
* never allow IP ports < 1024
|
|
* prettier particles. affected by gravity in qw (protocol restrictions
|
|
in nq)
|
|
* Darwin compile fixes
|
|
* fix a segfault when using 1 component lightmaps
|
|
* don't display the connect message when +connect is given on the
|
|
command line (thanks to Qize)
|
|
* mouse acceleration support in X11 thanks to Qize
|
|
* fix alpha blending in 2d mode when 3d has never been rendered
|
|
* don't flush garbage to the screen on the first render frame
|
|
* PNG support thanks to DrSpliff
|
|
* ALSA 0.5 support dropped
|
|
* ALSA 1.x support is "alsa", 0.9 is "alsa0_9" (only one is built)
|
|
* MIDI BGM support using libWildMidi
|
|
* GIB objects
|
|
* external conchars thanks to DrSpliff
|
|
* sv_logfile gets flushed on each print
|
|
* don't parse qsg protocol bits if the server isn't qsg compliant
|
|
* GIB functions and methods support named arguments
|
|
* many server features taken from QWE/mvdsv (HighlandeR): most notably
|
|
ktpro support
|
|
* plug most (if not all) potential buffer overflows
|
|
* nq deathmatch score fix from xi
|
|
* find radius bug fixes thanks to Grievre
|
|
* Luma texture support for brush models (From Fuh, by way of Grievre)
|
|
* --disable-static now works thanks to raorn
|
|
* treat server clients like non-client entities for GIB "frag" event
|
|
* expand ~ for fs_dirconf
|
|
* don't write config.cfg until /after/ it's been read :)
|
|
* ATI's libGL needed to be loaded with global symbols in order to work
|
|
properly
|
|
* oss sound doesn't block if the sound device is busy (from Grievre)
|
|
* add snd_bits/rate/stereo cvars to win and dx sound targets
|
|
* file based cd plugin from ashridah. oggs, wavs and midis can now be
|
|
used for background music. default cd plugin for all platforms
|
|
* many menu improvements
|
|
* win32 server console now has working input
|
|
* curses server console scrollback works
|
|
* qfdefs nuked. no longer needed as "standard" progs get resolved
|
|
staticly
|
|
* Anisotropy support, controlled by gl_anisotropy
|
|
* TruForm support, controlled by gl_tessellate
|
|
* Improvements in time accounting. Accurate to +-0.5ms, instead of -1,0
|
|
like others. Based on Grievre's and zquake's code
|
|
* mangled sounds on gamedir change fixed thanks to Grievre
|
|
* mtex support for world rendering.
|
|
* alias models use GL lighting
|
|
* support for 7 mouse buttons
|
|
* all archived cvars get written to config.cfg prefixed with "seta"
|
|
(new command that sets the archive bit)
|
|
* x11/glx fullscreen toggling fixes (window placement, mouse input etc)
|
|
* add optional reason to kick and ban for qw-server
|
|
* DrSpliff's qfadmin script updated
|
|
* quaternion support in progs engine and qfcc
|
|
* optionally allow recomte commands from a specified host address
|
|
* add a -novideo option to fbdev target to allow for headless operation
|
|
* full path reporting when writing screenshots
|
|
* one level of .. allowed in file access (eg, exec ../configs/foo.cfg)
|
|
* add r_norefresh support to sw and sw32 and rename the console side of
|
|
the cvar to cooperate better with the evil in customtf
|
|
* new cvar from Grievre to control "fake" filtering and change the fake
|
|
kick default
|
|
* fix bug where certain looped sounds would cause a hang
|
|
* 64 bit compile fixes
|
|
* alias models are no longer black on maps with no lighting info
|
|
o qfcc enhancements.
|
|
* conforms better to Objective-C sematics
|
|
* "struct" support closer to that of C (ie, separate namespace)
|
|
* now supports the "unsigned" type (32 bit unsigned integer)
|
|
* correct handling of ! and &&/|| for traditional code
|
|
* linker error message improvements
|
|
* better error checking in
|
|
* can cast between pointers and integers
|
|
* --traditional operator precedence conforms to qcc but --advanced to C
|
|
* --traditional is default for progs.src and --advanced for separate
|
|
compilation
|
|
* much better qcc conformance in general for --traditional
|
|
* more informative error reporting
|
|
* if (const) now works properly (though dead code doesn't get
|
|
eliminated)
|
|
* allow constant expressions to be used for builtin numbers
|
|
* better constant folding with auto-conversion between scalar types
|
|
* warn on if (a = b)
|
|
* better detection of function calls in binary expressions
|
|
* give temp defs a name, making it easier to read disassembly output
|
|
* ensure a op= b treats b as if it was (b)
|
|
* ; at end of functions optional. C style function declarations
|
|
available
|
|
* short circuit logic for && and || (breaks --traditional when enabled)
|
|
* non-const expressions for frame in state operator valid
|
|
* computed functions for state think allowed
|
|
* change --include FILE to pre-include a file rather than add a
|
|
directory search path. Maps to -include FILE on the cpp command line.
|
|
* all warnings (except for @self and self) are now fully controllable
|
|
* --traditional now auto-inits uninitialized local vars
|
|
* fast-float code option (defaults to on). kills almost 3000 statements
|
|
from prozac
|
|
o tools enhancements
|
|
* wad utilty along the lines of pak. can't yet be used for wad creation
|
|
(that's a little more complicated), but it can be used for listing
|
|
and extracting the contents of a wad file. watch out for *foo :)
|
|
* qfbsp
|
|
- no longer zaps the bsp file when given a bsp instead of a map
|
|
when compiling a map
|
|
- watervis support
|
|
- handle multiple wad files properly
|
|
- better whilespace support for windows
|
|
- bring in many of LordHavoc's changes to qbsp: HalfLife WorldCraft
|
|
texture alighnment, partial "point of plane" autocorrection,
|
|
hipnotic entity rotation
|
|
- remove many arbitrary limits (edgs, points on windong, tokens and
|
|
keys)
|
|
- force axis aligned planes to truely be axis aligned (fixes
|
|
degenerate polygons being generated by ClipWinding)
|
|
- bsp to prt support (for watervising sourceless maps)
|
|
- can now dump a map's textures to a wad file
|
|
- various impovements from Vic via hqbsp (lordhavoc)
|
|
* qflight
|
|
- colored lighting support (from LordHavoc's hlight)
|
|
- use vis data to speed up light passes
|
|
- gzipped bsp support (reading only)
|
|
- threading works
|
|
- OpenQuartz's extentions (except -ikmap) brought in. id's light
|
|
model is default
|
|
- support properties files for setting default light settings for
|
|
different light entity types
|
|
- spotlight now works
|
|
* pak
|
|
- can specify files to extract from a pak
|
|
* qfvis
|
|
- support old-style portal files again
|
|
o Progs engine/Ruamoko enhancements
|
|
* Object root class revamped
|
|
* progs debug/disassemble improvements
|
|
* progs version update due to missing pointer in the symtab struct
|
|
|
|
* progs string revamp: temp strings (eg, result from string + string)
|
|
get freed when the creating funciton exits
|
|
* new internal printf engine for progs
|
|
* report all bad builtins rather than just the first. make the bad
|
|
builtin number a warning and provide a suitable function in case the
|
|
function is called: allows progs with bad (but unused) builtins to
|
|
run anyway
|
|
* progs dump print an address if the def name is blank
|
|
* ruamoko math functions from Grievre
|
|
* while not yet perfect, qfprogs now works with qfo files
|
|
* new opcode: state.f. same as state, but takes a 3rd float operand to
|
|
specify the step for calculating nextthink. accessed using
|
|
[frame, think, step] (state is [frame, think])
|
|
* progs handle x % 0 by giving a 0 result
|
|
|
|
Changes from 0.5.3
|
|
o CRITICAL: exploitable buffer overflow in qw-server fixed
|
|
o more gib regex and other text manipuation support
|
|
o snd_oss_rw ditched in favour of just trying both ways
|
|
|
|
Changes from 0.5.2
|
|
|
|
o General enhancements.
|
|
* MVD playback in the qw clients.
|
|
* MVD recording in the qw server.
|
|
MVD support thanks to qwex 0.165b and highlander
|
|
* sv_maxrate changes now take effect immediately rather than when
|
|
clients (re)connect or change their rate
|
|
* segfault when using "snd_output null" fixed
|
|
* qw server "status" command now gives the server's uptime
|
|
* "map" will display the amount of time the current map has been active
|
|
* nq-server will now auto-load the start map if none is specified
|
|
* streaming for large sound files
|
|
* support for two channel sound files
|
|
* partial string buffer audit
|
|
* native Windows (win) sound driver finally works and is now default
|
|
* DirectX sound support added (dx)
|
|
* highchars stripped infokeys terminated properly so they don't contain
|
|
garbage
|
|
* WGL (nq-wgl.exe and qw-client-wgl.exe) resolution selection brought
|
|
in line with all other targets giving the vid_width and vid_height
|
|
cvars. Automatic aspect ratio support dropped.
|
|
* X11 (nq-x11 and qw-client-x11) no longer hangs on 32bpp displays
|
|
* new `view' system giving easier to control hud elements, centered
|
|
menus and locatable scoreboard (hud_scoreboard_gravity)
|
|
* OSS sound driver fixes: some kernel drivers need write-only access,
|
|
others need read/write
|
|
* able to load/unload semi-arbitrary plug-ins using console commands
|
|
* streaming for large sound files (eg., full length oggs)
|
|
* stereo sample support
|
|
* map command in the rcon admin list
|
|
* configurable "quake" directory layout
|
|
* server now actually runs properly when there's no network or
|
|
console input (eg, bots continue to battle unattended)
|
|
* skydome (gl_sky_clip 0) renders correctly
|
|
* external entity file support (maps/foo.bsp will use maps/foo.ent if
|
|
available)
|
|
* map specific config files
|
|
* map specific external textures in "textures/mapname/"
|
|
* support for more tga formats
|
|
* vid_conwidth cvar
|
|
* cleaner mouse enter/leave handling for x11 and glx windows
|
|
* hexenworld master server
|
|
* software and gl (some cards) fish-eye support
|
|
* "crosshair 3" for gl clients
|
|
* remote screen shots work
|
|
* curses console no longer default
|
|
* more key-names supported
|
|
* Matthew Wong's bsp2bmp `imported' as bsp2img. only pcx output
|
|
currently.
|
|
* console operator chat messages get echoed
|
|
* BSD fseek bug fixed
|
|
* no_pogo_stick 3 mode forcing friction independent of jump being
|
|
active
|
|
* rcon password /never/ gets written as it may be legitimate for
|
|
another server (ie, confused person :)
|
|
|
|
o GIB enhancements
|
|
* events system (map change, client enter/leave etc)
|
|
* several bug fixes
|
|
* documentation
|
|
|
|
o qfcc enhancements.
|
|
* @argc and @argv deprecated in favor of @args.count and @args.list
|
|
(@args is a struct with type @va_list)
|
|
* structure copy
|
|
* -L lib search paths and -l now behaves in a more expected manner
|
|
* default search paths for includes and libs
|
|
* updated man page and command line help
|
|
* [super ...] messages work
|
|
* categories work
|
|
* nested and struct block initializers work
|
|
* can access vector elements as vec.x as well as vec_x
|
|
* void (void) func; is now valid (no params)
|
|
* initialized globals can be used any place a true constant is expected
|
|
|
|
o qfbsp/qflight/qfvis enhancements
|
|
* various crash bug fixes
|
|
* hint, skip and detail brush support
|
|
* emit clipnodes in the correct order
|
|
* groks quest's "map2" format in addition to the original format
|
|
|
|
o Progs engine enhancements.
|
|
* arbitrary size data copying
|
|
* optionally handle division by 0 gracefully
|
|
|
|
Changes from 0.3.0
|
|
|
|
o General enhancements.
|
|
* NQ (quake1, single player, NetQuake, WinQuake) is back.
|
|
* Video (driver and renderer), audio, gamecode (progs), console,
|
|
model loading and general utility code shared in common libs between
|
|
NQ and QW
|
|
* Plugin system for sound and cd drivers.
|
|
* Ogg Vorbis compression for sound effect samples (streamed ogg support
|
|
is planned).
|
|
* Menu system re-written in QuakeC/Ruamoko
|
|
* Curses console for servers in Unix.
|
|
* New key binding system.
|
|
|
|
o Progs engine enhancements.
|
|
* Fully modular. Mod/Server-independent, allowing for
|
|
stand-alone QuakeC interpreter and client-side code.
|
|
* The engine is no longer dependent on progdefs.h. This makes
|
|
QuakeForge have trouble with QuakeC compilers that strip
|
|
symbol names -- but those can be repaired using the new
|
|
"qfdefs" tool.
|
|
* New basic types, and instructions for using them, for version
|
|
0.fff.002 progs (Quake's Version 6 is still supported).
|
|
* Better dynamic string handling. Dynamic strings are
|
|
garbage-collected.
|
|
* Object-oriented runtime system, in the style of Objective-C.
|
|
* Runtime fixups of built-in functions whose builtin number is
|
|
zero. If a built-in function is available to the engine, with
|
|
the same name given in the source code (e.g.
|
|
"void (void) coredump = #0;"), the engine will set the value
|
|
to the actual number used by the engine.
|
|
* Debugging support (needs compiler support, which qfcc
|
|
provides), including line-number information. Can display the
|
|
line of text in the source on which an error occurred, if the
|
|
new Cvar "pr_source_path" is set correctly.
|
|
* Instruction-level code dumps are now formatted in an
|
|
easier-to-read "assembly-code" format.
|
|
|
|
o QuakeForge Code Compiler, qfcc -- a replacement for qcc.
|
|
* Uses libQFutil for general utility functions such as hash
|
|
tables, file access (incomplete), and pak files.
|
|
* Uses libQFgamecode for progs information, such as opcode
|
|
tables, enums, types, etc.)
|
|
* Uses a lex/yacc (actually, Flex and Bison) scanner/parser
|
|
architecture, like a "real" compiler does.
|
|
* Drastically reduces the number of global defs needed for
|
|
a given progs, by reusing temporary globals when possible.
|
|
* All functions use the same block of defs for their local
|
|
variables (compatible with all known servers), which further
|
|
reduces the number of global defs needed.
|
|
* Nested/chained function calls work properly.
|
|
* Simple expressions, such as "a = b + c", compile to a single
|
|
instruction instead of two, and do not use a temporary
|
|
variable.
|
|
* Local variables can be initialized to known values, as in
|
|
"local float foo = 0.1;".
|
|
* Uses the C preprocessor, so header files are now possible and
|
|
useful.
|
|
* The compiler checks for uninitialized and unused variables in
|
|
functions, to help in finding errors.
|
|
* The compiler can generate and use object files, for separate
|
|
compilation (you don't have to compile all of your source all
|
|
the time, only the parts that have changed). Normally, object
|
|
files have a .qfo extension.
|
|
* The compiler can link libraries, which are implemented as .qfo
|
|
files inside pak archives.
|
|
* The compiler implements stricter type checking, to assist in
|
|
finding and fixing code errors.
|
|
* The C language's "for", "do...while", and "switch" control
|
|
structures have been adopted to provide a richer set of
|
|
structures for programmers to use.
|
|
* Additional functionality is given for progs that are to be
|
|
used with QuakeForge's more advanced progs engine:
|
|
|
|
x IMPORTANT:
|
|
The order of operations is slightly different in "native"
|
|
mode. The evaluation of "!foo & bar" is no longer
|
|
"!(foo & bar)", but rather "(!foo) & bar". The new order of
|
|
operations rules is more correct, but is different from how
|
|
QCC evaluated. If you give the --traditional switch to
|
|
qfcc's command-line, the old behavior is used.
|
|
x The compiler now allows you to create your own functions
|
|
that can accept a variable number of arguments, using the
|
|
special "..." notation. The special constants "@argc" and
|
|
"@argv" help with this. @argc contains the number of
|
|
arguments, and @argv contains a list of those arguments. The
|
|
handling of this is an improvement on C's vararg function
|
|
handling, in our opinion, made possible by how the Quake
|
|
system works.
|
|
x New basic types: integer, pointer, enum, and id.
|
|
x You can create new complex types, like arrays, structures,
|
|
and unions, and allocate them at runtime.
|
|
x String operators. You can add strings together to
|
|
concatenate them, and you can compare their contents using
|
|
the <=, <, >, >= operators.
|
|
x The integer type has the full array of C operations
|
|
available to it.
|
|
x QFCC and QuakeForge now contain an object-oriented
|
|
programming system, in the style of Objective-C and
|
|
Smalltalk. It's *very* powerful, and can be used to create
|
|
lots of interesting new things with rather little effort. If
|
|
you don't wish to use the new system, you can safely ignore
|
|
it with no danger to your code. :)
|
|
x Special support for using the "self" special variable inside
|
|
OO methods as well as the entity of the same name. If you
|
|
use OO support for entities and want to assign a method as a
|
|
touch/think/etc. function, "self" always refers to the
|
|
object that "owns" the method being executed. The special
|
|
variable "@self" was created to refer to the self entity.
|
|
"@this" refers to the object.
|
|
|
|
o Enhanced console scripting - GIB (GIB Isn't Bash)
|
|
* New language derived from the quake console.
|
|
* Functions with arguments and return values.
|
|
* Looping (while, for) and branching (if) commands.
|
|
* Local and global variables as well as access to cvars.
|
|
Supports Python-like slicing of variables.
|
|
* A basic math interpreter that respects order of operations
|
|
and provides most arithmetic and logic operators.
|
|
* Non-preemptive threading and callbacks to GIB functions in
|
|
response to game events (limited but functional at the moment)
|
|
* File reading, writing, and searching.
|
|
* Integrates with console -- GIB functions can be exported as
|
|
console commands to be used at the console or in binds.
|
|
* See gib.html in doc for more information.
|
|
|
|
o Enhanced time cheat ("speed cheat") protection
|
|
* Time cheats work for only a split-second before protection
|
|
kicks in.
|
|
* Players moving with wrong timings are sped up/slowed down to
|
|
the correct speed.
|
|
* Delay before protection activates means that lag and normal
|
|
network latency won't affect protection.
|
|
* People who aren't really trying to cheat won't be kicked :)
|
|
|
|
o Rendering enhancements
|
|
* Experimental 32 bit software renderer.
|
|
* Dynamic lights don't shine through walls.
|
|
* Colored alias model lighting for GL.
|
|
* Vertex Array use for sprites, particles and text. No fallbacks yet,
|
|
so QF wont work with old or broken GL drivers.
|
|
* Switchable particle styles: r_particles_style 0 for Id. Default is 1,
|
|
for lower particle count, larger texture particle effects.
|
|
* 16 bit vertex alias model format.
|
|
* Improved software gamma that more closely resembles hardware gamma.
|
|
* Countless speed improvements.
|
|
|
|
Known problems in 0.5.2:
|
|
o Doesn't work with 3dfx cards in MS Windows due to vertex array use.
|
|
o SDL clients don't reliably support fullscreen mode in MS Windows
|
|
o MS Windows support in general is sorely under-tested.
|
|
o Starting an SDL client (-sdl, -sgl or -sdl32) in fullscreen mode
|
|
and then going windowed requires in_grab to be toggled from 0 to 1
|
|
and back to 0 before the mouse will be released.
|