Hosting and domain costs until October 2024 have been generously sponsored by dumptruck_ds. Thank you!
Editing FTEQW Modding
From Quake Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
However, there are some nice tricks you can use to make it easier/faster/simpler. | However, there are some nice tricks you can use to make it easier/faster/simpler. | ||
− | + | === Built in compiler === | |
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == Built in compiler == | ||
FTEQW generally contains a built in version of FTEQCC. You can access it with the 'compile' console command. | FTEQW generally contains a built in version of FTEQCC. You can access it with the 'compile' console command. | ||
Generally, you would make a mod 'egmod' as such: | Generally, you would make a mod 'egmod' as such: | ||
Line 33: | Line 19: | ||
Additionally, the 'applycompile' basically does a quick savegame, effectively applying a newly compiled mod without restarting a map. This is useful if you just want to test a single repeatable function without booting players or anything - this won't automagically change any fields! | Additionally, the 'applycompile' basically does a quick savegame, effectively applying a newly compiled mod without restarting a map. This is useful if you just want to test a single repeatable function without booting players or anything - this won't automagically change any fields! | ||
− | == | + | === Multiplayer testing === |
− | + | Unlike other QuakeWorld engines, FTE permits multiple instances of itself. | |
+ | (Note that other quakeworld engines will refuse to start up if FTE is already running, but FTE will start up if they are running, so if you want to test ezquake+FTE compatibility, start ezquake first). | ||
− | + | FTE also supports splitscreen! This can simplify testing multiplayer when you can't be bothered switching between two clients. | |
+ | Mostly this should be documented elsewhere, but here's the basics. | ||
+ | cl_splitscreen can be set to 0, 1, 2, 3. This cvar says how many additional clients should be used. If you're running a listen server, this is the only cvar you 'need' to set. | ||
− | + | There are a few other cvars, but for testing you can set up one half of your keyboard for the second player. Or you can make some bind to change the value of the 'cl_forcesplitclient' cvar, to force input to a different splitclient. | |
− | == Debugging == | + | === Debugging === |
FTE has a 'breakpoint' command. | FTE has a 'breakpoint' command. | ||
This command accepts either a function name, in which case it uses the first statement of that function, or a file+lineno pair. | This command accepts either a function name, in which case it uses the first statement of that function, or a file+lineno pair. | ||
Line 63: | Line 52: | ||
To recap: developer 1+.lno file = step-by-step debugging/code tracing. | To recap: developer 1+.lno file = step-by-step debugging/code tracing. | ||
− | == | + | === Coredumps === |
− | |||
− | |||
− | |||
− | |||
− | == | ||
If there's a crash which FTE believes to be caused by QC code, FTE will generate a coredump in the current gamedir (generally this is in your home directory somewhere - note the path command to find out where). | If there's a crash which FTE believes to be caused by QC code, FTE will generate a coredump in the current gamedir (generally this is in your home directory somewhere - note the path command to find out where). | ||
Line 74: | Line 58: | ||
You can also force a core dump with the coredump_ssqc command. | You can also force a core dump with the coredump_ssqc command. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Manifest files == | == Manifest files == | ||
Line 90: | Line 64: | ||
Manifest files are useful for standalone games that need to distance themselves from other games using the same engine. They are also useful for auto-updating mods or for mod compilations where mods should not be downloaded up-front. | Manifest files are useful for standalone games that need to distance themselves from other games using the same engine. They are also useful for auto-updating mods or for mod compilations where mods should not be downloaded up-front. | ||
− | == Scriptable menus == | + | == Scriptable menus== |
[[Scriptable menus in FTEQW | Scriptable menus]] have a few uses. | [[Scriptable menus in FTEQW | Scriptable menus]] have a few uses. | ||
# Large teamplay mods might wish to provide key bindings and customisable settings, like abreviated player name, possibly sensitivity, etc. | # Large teamplay mods might wish to provide key bindings and customisable settings, like abreviated player name, possibly sensitivity, etc. | ||
Line 97: | Line 71: | ||
# To show off your l33tness. | # To show off your l33tness. | ||
− | == RT lights == | + | == RT lights== |
[[RTlights in FTEQW | Real-time lights]] allow for nice dynamic light effect in mods. | [[RTlights in FTEQW | Real-time lights]] allow for nice dynamic light effect in mods. | ||
* ''r_shadow_realtime_world'': if 1, enables static realtime lighting | * ''r_shadow_realtime_world'': if 1, enables static realtime lighting | ||
Line 112: | Line 86: | ||
== Fully editable particles == | == Fully editable particles == | ||
FTEQW comes with a very extensive particle system. See the [[FTEQW Particles System | full documentation here]]. | FTEQW comes with a very extensive particle system. See the [[FTEQW Particles System | full documentation here]]. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Server side anti-lag == | == Server side anti-lag == | ||
Line 165: | Line 102: | ||
float MOVE_LAGGED = 64; /*if this bit is set within the 'nomonsters' argument of traceline or tracebox, the trace will collide against the lagged world. Uses the ent parameter as the lagged player. If its not a player then the owner is used instead.*/ | float MOVE_LAGGED = 64; /*if this bit is set within the 'nomonsters' argument of traceline or tracebox, the trace will collide against the lagged world. Uses the ent parameter as the lagged player. If its not a player then the owner is used instead.*/ | ||
− | == | + | == FTEQCC == |
+ | FTEQW comes with it's own advanced QuakeC compiler called [[FTEQCC]]. Under Windows it even has a graphical frontend called FTEQCCGui. It is also integrated into FTEQWby default. | ||
− | + | [http://triptohell.info/moodles/fteqcc/fteextensions.qc fteextensions.qc] includes various keywords that only FTEQCC understands, and only FTEQCC supports FTE's extended instruction set, so if you want ints/pointers/massive mods/etc, you need FTEQCC+FTEQW. | |
− | |||
− | |||
− | + | FTEQCCGui combined with FTEQW allows for breakpoints and single-stepping through QC code etc, this means you can debug more easily. | |
− | |||
− | |||
− | |||
− | + | == QuakeC == | |
− | + | FTEQW has very advanced client-side QuakeC support and also comes with it's own set of qc_extensions for various features. | |
− | + | * Here is Spike's famous [[CSQC guide for idiots]] | |
− | + | * [https://github.com/shpuld/CleanQC4FTE CleanQC4FTE] is a QuakeC codebase for total conversion mods/games utilizing FTEQW. | |
− | + | ** It's been designed from ground-up to use CSQC as well. Does not come with assets. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | FTEQW | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |