Readme for FI alpha release 00000 - How to get things going $Id: QUICKSTART,v 1.4 2002/08/11 21:41:40 phaethon Exp $ http://www.icculus.org/fi/ PhaethonH Alpha release 00001 of Project FI ....................................... Table Of Contents 0. Background 1. Release Highlights 2. Testing sequences (how to get it going NOW) 3. Commands extensions 4. Weaponry 5. Classes 6. Things that don't work yet ....................................... ============= 0. Background ============= Project FI is a two-pronged project. One goal is to embed the programming language Scheme into Quake 3. The second goal is to reproduce Q2WF as much as possible. The author assumes the reader is familiar with the Weapons Factory family of modifications. ===================== 1. RELEASE HIGHLIGHTS ===================== * Scheme interpreter * Configurable weaponry * Decoys * Charged weaponry * Player classes ==================== 2. TESTING SEQUENCES ==================== * Start Q3 with com_hunkmegs of at least 96: "quake3.x86 +set com_hunkmegs 96 ..." * The "reload" command may be slow. The delay is long enough to trigger Hitch Warnings on a K7/1200. * IF you are testing with separate Q3 server and client processes, the lines marked "CLIENT>" are to be run on the client, and the lines marked "SERVER>" are to be run on the server-side, either at the server console or via rcon. * I recommend you start sequences with: SERVER> /devmap q3dm17 to enable development mode (aka cheat mode). Otherwise, you may have a difficult time testing all facets of FI. * Most people will not use separate processes, so the SERVER/CLIENT distinction can be ignored, and just typed out in sequence in the game console. Recommended bindings for first-timers: /bind MOUSE1 +attack <-- Primary fire /bind MOUSE2 +button12 <-- Secondary fire /bind MOUSE3 +button13 <-- Tertiary fire /bind ALT +button14 <-- First offhand weapon /setoffhand1 10 <-- Sets grappling hook as first offhand weapon /bind v give all <-- Press 'v' to reload all weapons to max /bind h decoy1 <-- Press 'h' to spawn a decoy Sequence 1, FI weaponry: SERVER> /devmap q3dm17 SERVER> /reload (lag) CLIENT> /give all (test around) Sequence 2, Run-time weaponry alteration: SERVER> /devmap q3dm17 SERVER> /reload (lag) CLIENT> /give all (test a bit) SERVER> /scm (load #[qs/fi-excess.cfg]) (lag) SERVER> /reparse CLIENT> /give all (test a bit more) SERVER> /reload (lag) CLIENT> /give all (test some more) SERVER> /scm (load #[qs/fi.cfg]) (restore back to normal) Sequence 3, Scheme hooks in server-side code: SERVER> /devmap q3dm17 SERVER> /scm (trap-send-server-command 0 #[cp \qWelcome to FI\q]) (quickly look on client screen) Sequence 4, player classes SERVER> /dev/map q3dm17 SERVER> /reload CLIENT> /class Marine CLIENT> /kill (press tab (or your scores key) after respawn, to load proper player model) ===================== 3. COMMAND EXTENSIONS ===================== Extra firing modes: * +button12 - on-hand secondary fire * +button13 - on-hand tertiary fire * +button14 - first offhand weapon (primary fire) (+attack remains primary fire for on-hand weapon, by the way) Extra client (playing) commands: * "setoffhand1" - weapon number to set as offhand (0 = none, 1 = gauntlet, 2 = machine gun, etc.) * "class" - select class. * "decoy1" - spawn a decoy (no limit) * "decoy0" - destroy all decoys * "decoy?" - counts how many decoys are spawned. * "test_sdestruct" - self-destruct/plasmabomb prototype. Spawns a BFG round that hovers and detonates in 10 seconds with a very large radius. Self- destruct would be a 0-second variant (with countdown done elsewhere). * "launchitem" - drop item of indicated type (test command). Count values are not preserved. This is proof-of-concept for "drop" command. * "corpseme" - spawns a "dead" decoy. Sort of. Precursor to "decoy1". Extra server commands: * "scm" - execute parameters as Scheme code * "reread" - re-read "qs/fi.cfg" for weapons description * "reparse" - parse Scheme variables to activate change of weapons parameters. * "reload" - reread and reparse combined * "dump_desc" - display interned weapons data =========== 4. WEAPONRY =========== (qs/fi.cfg): No. Primary Secondary Tertiary 1 Gauntlet LaserD Prototype - 2 Machine Gun - Debug Gun 3 Shotgun - Grenade-spam Rocket Launcher 4 Grenade Launcher Cluster Grenade Proximity Mine 5 Rocket Launcher Cl.Gren. Rocket Pogo 6 Lightning Gun Turret Grenade 10-prox rain 7 Rail Gun Half Rail Gun Charging Rail Gun (release to fire) 8 Plasma Gun - Magnotron Grenade 9 BFG10K Homing Rocket RelentlessHomer 10 Grappling Hook - Ghetto JetPack Special notes: * Primary fire reflects the default Quake 3 weapons. * Debug gun is tactically useless. * LaserD Prototype is a prototype for the laser defense device. It launches a short-lived plasma round that sticks to a wall then starts shooting railslugs very rapidly, simulating a laser beam. Illustrates: + One possible method of instantiating devices into the world. + Why using a real beam entity would help. * Grenade-spam Rocket Launcher is a slow-moving rocket that unloads many touch grenades. Illustrates: + in-flight spam. * Half Rail Gun takes half the recharge time to fire, does half damage, and knocks back a few hundred times harder than primary railgun. Illustrates: + Separation of recoil and reload time (jump between pri & sec). + knockback value separated from damage value. * Proximity grenades and Turret grenades are limited to 4 and 2, respectively. Illustrates: + Automated weaponry. + Limited-shots for grenades. + Limited number of instances for a projectile type. * Charging Rail Gun is a prototype for the Sniper Rifle. Damage is scaled according to time spent charging. Only a maximum of 2 seconds count, with a cap of 125 points of damage. Information about charging only shows up on the server end; the client gets no information about charging results. Illustrates: + Weapon fire charging. * Magnotron Grenade applies a linear vector adjustment to the target. A victim can possibly wind up in a circular orbit _around_ the grenade. Illustrates: + Magnotron effect (negative knockback without damage). + Projectiles count limit. * Pogo is an idea shamelessly taken from Alliance CTF. It allows rocket- jumping without causing damage to yourself (or anyone else). Illustrates: + Applying knockback without damage. + How funny it is to run up to someone and whack 'em with a pogo. * Ghetto JetPack is a prototype jetpack. It merely turns on the "flight" bit for a player, causing the same effects as the "Flight" powerup. A jetpack "shot" expires in 10 seconds. Illustrates: + Jetpack (flight on command) + Undrawable things that hang in the air and disappear after a time. (fi-excess.cfg): No. Primary 1 Instagib Gauntlet 2 Hyper Machinegun 3 Railslug Shotgun 4 Touch Grenade Launcher 5 Rapid-fire Rocket 6 Splash-Enhanced Lightning 7 Turbo Railgun 8 Spread Plasma Gun 9 Excessive-Overkill BFG10K 10 Grappling Hook Special Notes: * Weapons based on Mr. Pant's Excessive Overkill Q3 mod. * Self-damage is NOT reduced! Watch out! * Grappling hook does nothing special. It doesn't even move faster. ========== 5. CLASSES ========== (qs/fi.cfg): No. Name Default weapons 1 Recon gauntlet, machine gun, grappling hook, jetpack 2 Medic gauntlet, machine gun, shotgun 3 Engineer gauntlet, machine gun, shotgun, grappling hook 4 Marine gauntlet, machine gun, rocket launcher, grappling hook 5 Cyborg gauntlet, machine gun, grenadelauncher, lightning gun 6 Arsonist gauntlet, machine gun, plasmagun 7 Gunner gauntlet, machine gun, BFG10K 8 Sniper gauntlet, machine gun, railgun, grappling hook 9 Spy gauntlet, machine gun 10 Mercenary gauntlet, rocketlauncher Classes taken from Q2WF Team 10. Player class is selected by the "class" command. Either number or name can be supplied. Shortened name can also be used, subject to first best match (e.g. "class eng" selects Engineer, "class s" selects Sniper (before Spy)). ============================= 6. THINGS THAT DON'T WORK YET ============================= These are features mentioned somewhere in code or configuration, but does not yet work. * Devices (alarms, lasers, sentry guns) * Stinger-style homing. Currently, homing is limited to just merely targetting any non-teammate players. * Obituaries (MOD, Means Of Death messages) don't appear correctly. (Just appears as "So-and-so was killed by so-and-so")