mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-12-11 13:21:10 +00:00
72 lines
3.9 KiB
Text
72 lines
3.9 KiB
Text
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.
|