quakeforge/NEWS

73 lines
3.9 KiB
Plaintext

NEWS for the QuakeForge project
-------------------------------
changes from 0.3.0
o progs engine re-write
o fully modular. mod/server independent allowing for standalone
quakec interpreter and client-side quakec.
o no longer dependent on progdefs.h (causes problems with quakec
compilers that strip def names but those progs can be fixed using
qfdefs)
o new opcodes and types for version 0.fff.002 progs (version 6 still
supported)
o better dynamic string handling with garbage collected strings
o Objective-C style object oriented runtime (incomplete but functional)
o runtime linking of builtin functions whose builtin number is 0 ( = #0
in qfcc (should work with any qcc derived compiler))
o basic debug symbol support (only for qfcc generated progs) including
source lines.
o ".self" prefered over "self" for the self entity
o ".this" field support for object oriented entities
o qfcc: QuakeForge version of qcc. generally rewritten
o use QF utils lib for general ustility functions (hash tables, file
access (incomplete), pak files)
o use QF gamecode lib for progs info (opcode tables, enums, types, etc)
o yacc and lexx (using gnu bison and flex) based parser
o proper temp def handling drasticly reducing the number of global
defs needed for large progs
o make all functions use the same block of defs for their locals (this
is compatable with all known server variants) further reducing the
number of global defs needed for local varaibles (now down to the
largest function rather than the sum of all functions).
o string operators (+ <= < > >=). requires 0.fff.002 progs
o integer, pointer, array, struct and union types (0.fff.002)
o Objective-C style object oriented programming support (Objective-QC or
Ruamoko:). Use @self (entity ".self"; interally) for touch/think/etc
functions and @this (.id ".this"; internaly ) for builtin OO support
for touch/think/etc. "entity self;" will still work so long as @self
is never seen.
o nested/chained function calls work properly.
o simple expressions (eg a = b + c;) compile to a single opcode rather
than two and avoid using a temporary def.
o C-style for loops
o local var initialition (eg local float foo = 0.1;)
o uninitialized variable detection
o unused variable detection
o vararg functions (ie, can write qc functions using ...: @argc and
@argv to access the parameters passed through ...).
o IMPORTANT: evaluation of "!foo & bar" changed from "!(foo & bar)" to
"(!foo) & bar" which is more correct but incompatable with qfcc. A
warning will be generated for the former unless --traditional is used
on the command line and then a notice will be generated and the old
evaluation used (ie, all is not lost:)
o Uses cpp to pre-process the files
o can generate/link object files (.qfo files)
o library file support (.qfo files in a .pak file)
o strict type checking
o Enhanced console scripting - GIB
o New language derived from the quake console.
o Functions with arguments and return values.
o Looping (while, for) and branching (if) commands.
o Local and global variables as well as access to cvars.
Supports Python-like slicing of variables.
o A basic math interpreter that respects order of operations
and provides most arithmetic and logic operators.
o Non-preemptive threading and callbacks to GIB functions in
response to game events (limited but functional at the moment)
o File reading, writing, and searching.
o Integrates with console -- GIB functions can be exported as
console commands to be used at the console or in binds.
o See gib.html in doc for more information.