NIQ for Quake II

brought to you by Mike Fox (a.k.a. Artful Dodger)



email me

Downloads

Latest News

What is NIQ?

Overview of Features

Downloading and Installation

Configuring NIQ

Known Problems

Future Plans

Source Code

Credits

Copyright and Distribution

Downloads

NIQ 1.00

NIQCTF 1.00

Latest News

For the very latest news, check the official NIQ for Quake II web page at www.geocities.com/TimesSquare/Labyrinth/8220.

To report a problem or to make a suggestion, first make sure that the problem/suggestion isn't already in either of the Known Problems or Future Plans sections below. If not, send your problem/suggestion to mfox@matrox.com.

22/04/98:

Official release of the 1.00 versions of NIQ and NIQCTF. Each has been tested fairly extensively with up to 8 players in deathmatch and CTF modes as well as for many hours in singleplayer mode with no known (major) problems, apart from those listed below. Coop mode has not been tested but should work.

What is NIQ?

NIQ is a 100% server-side mod for Quake II which completely removes all items (weapons, ammo, powerups, techs etc.) from the game. Except for certain items such as keys which are required to complete some maps in singleplayer or coop mode (and, of course, the flags for CTF), there are absolutely no items to be found anywhere.

In NIQ, it is the server (game) which controls which weapons all clients (players) have and it is the server which is responsible for incrementing each client's health and ammunition automatically, at the same rate for everyone. All clients in NIQ always have the same weapon as everyone else and can differ only in terms of how much health, ammo, and skill each has.

While regular Quake II and many of its modifications are a lot of fun, these games tend to emphasize knowing the current map inside out in order to do well. You have to know where the most powerful items are and try to get to them before someone else does. If you don't take the time to pick up these items (e.g. the quad damage, megahealth, BFG) then someone else will and when you meet, guess who will win.

The idea behind NIQ was to change the game so that you don't have to worry about running around looking for items and you don't need to have the current map memorized to survive. The emphasis is entirely on seeing how well you can do with the current weapon against other players who have the same weapon as you.

NIQ also lets you control exactly which weapons will be used in the game and you can specify whether weapons are used in order, or randomly. You can also set things up so that, for example, you have the rocket launcher 75% of the time and the railgun 25% of the time. Don't think that you will want to get rid of the wimpy blaster for NIQ games. The blaster has been goosed up to do 50 HP of damage without using any ammo, which makes it a serious weapon (it normally does 15 HP of damage in deathmatch, 10 in singleplayer). By default, the only weapon which is removed from the game is the regular shotgun.

Finally, NIQ allows for some interesting situations which you don't normally encounter while using other mods. When was the last time you had an 8-player (or more) BFG battle, a grenade launcher party or a railgun or rocket launcher fest where everyone has the same weapon? And for singleplayer/coop mode fans, NIQ offers a different and challenging way to play these games.

Overview of Features

The following apply to deathmatch mode. Features which are specific to NIQCTF and singleplayer/coop mode follow below.

Each time you join a game, you will be given the same weapon that is being used by everyone else, along with some ammunition for that weapon. The server will hand out ammo for the current weapon up to a limit and at a rate which can both be configured if the defaults are unsatisfactory.

The server will periodically (default: every 60 seconds) switch to a new weapon, using the list of weapons in the file niqweap.txt. The weapons can be cycled either in order or randomly (the default). When selecting weapons randomly, the next weapon can be completely random, or NIQ can be configured to make sure each of the available weapons is used before restarting the selection process.

Your health continuously increases, but not while fighting (firing a weapon), drowning, or burning in lava or slime. The default setting has your health going back to 100% fairly quickly. This is so that someone who wins a close battle doesn't have a huge health disadvantage for too long if he runs into someone who is freshly respawned (with 100% health).

The blaster is replaced by a superblaster which uses no ammo and does 50 HP (configurable) of damage. This is a very powerful weapon.

All the weapon selecting commands are disabled.

When you run out of ammo, your weapon doesn't change. You have to wait for more to be given to you. I've tried to choose initial amounts and increment rates which work well, but these can always be changed in the file niqammo.txt if desired. Basically, the idea is to not run out of ammo too easily, while not making it too easy to simply fire at will (as you can do with unlimited ammo enabled). Learning how to deal with running out of ammo is part of the game.

Time remaining until the next weapon switch is shown on the HUD.

The give commands (when allowed) can only give health and keys etc., or more of the current ammunition. It is possible to enable unlimited ammunition if desired.

There are absolutely no items in the game to be picked up or dropped. The only items which a client can have are the current weapon and (except for the blaster) ammo for the current weapon.

Grenades are not usable. They can only be used as ammo for the grenade launcher.

Custom scoring. NIQ tracks each client's score as a float which takes into account the number of times each client gets killed as well as how many kills and suicides he has. The default scoring is +1.0/-0.5/-1.0 for kills/killed/suicides but this can be changed if desired. For example, to restore the regular scoring method, just set niq_killedpenalty to 0.0. Note that the HUD shows your score rounded to the nearest integer, but the scoreboard shows your actual score to 1 decimal place.

Custom scoreboard. The custom scoreboard for NIQ shows each client's name, and the number of kills/killed/suicides, ping time and score, sorted by score. The default number of clients shown is 12 but this can be changed (more will not fit on a 320x240 screen though). If a client is not in the top 12, his score is shown below the list (so all clients always see their own score). At the very bottom of the scoreboard, the scoring method which is being used (i.e. the number of points for each kill/killed/suicide) is shown. If desired, the server can specify that the standard scoreboard should be used.

The number of clients in the game is shown each time a client enters the game or disconnects.

MOTD support. It is possible to put a brief custom message into the file niqmotd.txt. At present the MOTD stays up for about 5 seconds.

NIQCTF Notes:

NIQCTF is very similar to regular NIQ with (obviously) CTF support included. It is based on Eavy's
Q2CTF+ mod. This is identical to regular Q2CTF with the exception that it is possible to play Q2CTF on the regular and deathmatch maps.

Obviously for CTF to work, the flag items have to be left in the game and these are present in NIQCTF and can be picked up, taken and captured as usual. As in regular Q2CTF, when the flag carrier is killed, the flag is dropped for someone else to pick up and will return to its base automatically if this does not happen within some period of time.

As with regular CTF, the grappling hook is always available. When the current weapon is changed by the server, clients who are using the grappling hook at the time of the change will continue to use it, otherwise they will see their weapon replaced by the new one. Since there are only 2 'weapons' at any time in NIQCTF (i.e. the grappling hook and the current NIQCTF weapon), clients should bind a key or button to weapnext or weapprev to be able to quickly switch between them. The Artful Dodger finds that using MOUSE1 for weapnext and MOUSE2 for FIRE works just fine.

For NIQCTF, the standard CTF scoring and scoreboard is used and there is no count of the current number of players shown when clients join/leave the game.

As with regular Q2CTF, you can set ctf=0 and play a deathmatch game (with no flags) and have the grappling hook available. However, not all of the features of NIQ deathmatch will be available, such as the NIQ scoreboard and NIQ scoring. At some point in the future, NIQ and NIQCTF may be combined into a single mod which will have a variable to enable/disable the grappling hook for regular deathmatch.

Singleplayer and Coop Mode Notes

These notes apply to using NIQ to play singleplayer or coop mode games. NIQCTF does not support singleplayer/coop mode just as Q2CTF doesn't support these (deathmatch=1 is always forced).

Although the NIQ mod was originally intended as a deathmatch and CTF mod, its actually quite fun and challenging in singleplayer mode as well. Coop mode has not been tested yet, but this should work as well.

The main difference is that in singleplayer/coop mode, clients only get health as the result of killing some monster and the current weapon will only switch after N kills. These settings can be controlled through the file niqmonst.txt and through the NIQ configuration file (see Configuring NIQ). The idea is to remove the possibility for players to simply hide and wait until their health returns to 100% and/or until they get a better weapon (of course, these tactics don't work very well in deathmatch games).

Generally, the tougher the monster, the more health you will get for disposing of it. Note that by default you do not get any health for killing the insane guys (the POWs), but if it makes you happy to put them out of their misery go ahead. If you *really* want to, you can always edit the file niqmonst.txt and specify how much health you want to gain (or lose) for killing them but killing a POW will never decrease the number of kills needed for the next weapon switch.

By default, there is a message at the top of the screen describing each monster as it is killed. This is kind of fun to have and is also informative and is useful when you're not sure what you killed (e.g. with that quick BFG shot before you ducked out of sight).

In singleplayer/coop mode, your health *can* increase while your are fighting (firing your weapon).

All key items (keys, CDs, markers, the commander's head) have been left in the game. Monsters are allowed to drop these if applicable since some custom maps have monsters dropping keys or CDs when they are killed and these are usually needed to complete the game.

Some maps may require the rebreather and/or environment suits to reach certain areas, so these items have been left in for sp/coop.

Except for keys etc., monsters and the POWs will never drop anything when killed.

Downloading and Installation

NIQ and NIQCTF are 100% server-side mods. If your only goal in life is to connect to an NIQ or NIQCTF server as a client, you don't need to do anything except maybe read the information on what NIQ is/how it works.

For NIQCTF, there is a chance that the server has been setup incorrectly. If you connect fine but get a bunch of "can't find pic" and "can't find sound" messages and you can't see the flags or the grappling hook, check what the server's gamedir is (GameSpy tells you what this is and I think you can type it in at the Quake II console to get its value). Probably the server does not have NIQCTF installed in the "ctf" directory (e.g. it might be in niqctf) so on your system, the file pak0.pak will not be found. The only solution, apart from getting the server operator to install NIQCTF correctly, is to create a directory with the same name as the gamedir name in your own quake2 directory (e.g. niqctf) and copy the pak0.pak file from your ctf directory into that directory. This should fix any problems for the next time you try to connect to that server.

If you want to start an NIQ server or play NIQ in singleplayer/coop mode, you will need to download the latest version from the Downloads section and unzip it into the directory \quake2\niq (recommended).

NIQCTF requires a couple of additional steps. Because Q2CTF is itself a mod to Quake II, clients connecting to a Quake II server which is running a Q2CTF mod will expect the mod to be in the ctf directory since this is where clients will look for the pak0.pak file which contains the Q2CTF maps, graphics and sounds on their own machine. This means that you will have to find a way to have NIQCTF and whatever is currently in your ctf directory (usually Q2CTF) co-exist. The easiest way to do this is probably to make \quake2\ctf\q2ctf and \quake2\ctf\niqctf directories. Assuming that Q2CTF is currently installed in \quake2\ctf, copy the file gamex86.dll into \quake2\ctf\q2ctf. Then unzip the NIQCTF files into \quake2\ctf and copy the NIQCTF gamex86.dll into \quake2\ctf\niqctf. You can then either manually copy the dll which you want to use from \quake2\ctf\q2ctf or \quake2\ctf\niqctf into \quake2\ctf before running the server or write a little batch file to do this for you. This will make whatever ctf mod you choose to run on the server transparent to clients because they will see a mod called ctf running in either case.

Note that EAVY's version of Q2CTF installs a \quake2\ctf\maps directory which contains .ent files for placing the flags in the regular and deathmatch maps. Each base is marked with a red/blue banner so bases can be identified even if the flags aren't there. I've deleted the file jail3.ent because this was placing the red base near the pyramid with the result that the red flag was never visible. See
Q2CTF+ for more information on this mod, but it is basically a version of Q2CTF which isn't limited to the 5 Q2CTF maps.

After unzipping NIQ and/or NIQCTF, you can edit the file niq.cfg (niqctf.cfg) as desired, but most of the default settings should be fine, at least initially. You can also edit the files niqweaps.txt, niqammo.txt, niqmonst.txt and niqmotd.txt. See "Configuring NIQ" or the files themselves for more information.

Start Quake II with the usual

quake2 +set game niq +exec your.cfg +exec niq.cfg

or

quake2 +set game ctf +exec your.cfg +exec niqctf.cfg

command, line where "your.cfg" is your custom .cfg file, if any (and don't forget to add +set dedicated 1, +set maxclients 32 in order to set up a dedicated server).

By the way, here is a useful alias for reporting your status to your team (%a, %t and %w aren't needed since you can't have armor or techs in NIQ and everyone knows what weapon you have).

alias sreport "say_team I'm %l with %h, and %n"
bind CTRL sreport

Configuring NIQ

The following variables can be set either at the console or in a .cfg file which can be loaded when NIQ starts. Most changes to these variables will take effect immediately.

NIQ NIQCTF Description set niq_randomweapons 1 1 0/1: weapons are switched in order/randomly set niq_randomuseall 1 1 1: if random, make sure each weapon gets a turn set niq_weapontime 60 60 number of seconds that each weapon is used set niq_blasterhp 50 50 damage done by superblaster set niq_ammoinctime 1 1 seconds between checks to see if ammo should increment set niq_healthinctime 1 1 seconds between checks to see if health should increment set niq_healthsound 0 0 0/1: health sound when health increased off/on set niq_healthincdm 10 5 health increment amount in dm/ctf set niq_maxhealthdm 100 100 maximum health in dm/ctf set niq_switchmessages 0 1 0/1: don't show/show weapon switched messages set niq_healthincsp 2 NA health increment in sp mode (niq_autoinsp=0) set niq_healthinccoop 1 NA health increment in coop mode (niq_autoinsp=0) set niq_killbonus 1.0 NA points gained for a frag in dm set niq_killedpenalty 0.5 NA points lost for getting killed in dm set niq_suicidepenalty 1.0 NA points lost for killing yourself in dm set niq_scoreboard 1 NA 0/1: use regular/NIQ scoreboard in dm set niq_maxhealthsp 100 NA maximum health in sp/coop set niq_scoreboardsize 12 NA number of client scores shown on NIQ scoreboard set niq_autoinsp 0 NA 0/1: use/don't use autoinchealth/autoswitchweapon in sp/coop set niq_spswitchkills 5 NA number of kills needed to get next weapon in sp/coop set niq_killmessages 1 NA show what monsters you kill

By default, your health returns a little bit more slowly in NIQCTF because this is more of a team game than regular deathmatch and individual frags don't count for as much. This also reflects the partly defensive aspect of CTF.

In NIQCTF, we show switch messages by default because if you are using the grappling hook when the switch occurs, you won't see the new weapon until you switch to it.

If niq_autoinsp is set to 1, sp and coop mode will use the deathmatch/CTF way of incrementing your health automatically and switching the current weapon every N seconds (i.e. the information in niqmonst.txt and the value of niq_spswitchkills will be ignored). The default setting of 0 forces you to kill monsters to get health and to get the next weapon which is probably more fun since you can't just hide and wait for your health to get to 100% or for a better weapon to appear. Using niq_autoinsp=1 can be challenging if your goal is to see how quickly you can get through a map with this setting, however.

Something fun to try in NIQ / NIQCTF: set niq_weapontime to 10 (seconds) or so.

niqweaps.txt

Contains a list of weapons to use in the game. Weapons can go into the file more than once (up to 50 entries are allowed) in which case they will appear more often (in both random and sequential cycling modes).

niqammo.txt

Controls how much ammo is initially given for each weapon, the rate at which the ammo for that weapon is handed out and the maximum allowed ammo for that weapon. I may drop having separate switch and start (spawn/join) initial amounts. The idea was to discourage players from getting killed intentionally in order to get more ammo, health but this is probably no longer needed.

niqmonst.txt

For NIQ in sp/coop mode, controls how much health you get for killing each type of monster (tougher monsters give you more health). This may be changed in the future so that you also get more health if you kill a monster with a weaker weapon.

niqmotd.txt

You can put a short (40 cols or less, and maybe 2-3 lines) message in here which will be inserted into the standard NIQ MOTD for regular deathmatch games.

Note that if NIQ does not find any of the above files, it will use default values.

Lines in the NIQ/NIQCTF .txt files should not exceed 128 characters in length.

Known Problems

deathmatch/CTF

With NIQCTF (or any EAVY CTF mod), some maps will cause messages of the form "Monster_DEL! doesn't have a spawn function". This happens with fact2, for example. These don't seem to cause a problem however.

There are currently no known problems which are specific to deathmatch/CTF.

singleplayer/coop

The code for selecting an item through the item menu is a little bit screwed up for selecting the rebreather / environment suit. The best way select these is to bind keys to "use breather" and "use environment suit" since it isn't obvious from the menu which item is currently selected. I many try to fix this, but its not a high priority for now since the work-around is fine.

The current weapon is changed when a new map is loaded, even if there is time remaining for that weapon. When you are killed and restart a map, the weapon is also reset (to the first one if cycling in order, otherwise a new random one is chosen). It might be nice to make this optional (having a new random weapon when restarting a map, e.g. after being killed, might be nice sometimes).

It is occasionally possible to end up with the wrong ammo for the current weapon being incremented so that when you run out of ammo, you won't get any more. I've seen this happen once so far and I've not been able to reproduce it (might possibly be related to running Q2 inside a debugger). If this happens (with niq_autoinsp=0), you will have to get yourself killed, or kill yourself or restart the game, since your weapon will never change, because you can't kill anything without ammo. This seems to happen sometimes when loading a saved game.

Some maps trigger certain events when certain items are picked up, such as the 2 soldiers on base1 who only appear when some (I'm not sure which) item is picked up. Since NIQ eliminates almost all items from the map, these events will probably never occur. For the regular game, this should simply mean that on some maps you will not be able to get 100% kills (e.g. on base1, you will only be able to get 17/19 kills). As far as I know, there is no event which is only triggered by picking up an item and which is needed in order to be able to complete the game. However, it is possible that you will not be able to complete some custom maps which do this.

There are some known problems with saving and restoring games. This seems to work fine if you save a game then restore it during the same 'session', i.e. without quitting and restarting Quake II. Sometimes there may be a "SZ_GetSpace: overflow without allow overflow set" or "function pointers have moved" error which may crash the game. It seems however that it is always possible to restore the state which is saved at the start of each map, so at the very worst, this means you can't save a game somewhere in the middle of a map. The next time you start up NIQ, if you don't load a map, you can always restore the previously saved state at the beginning of the last map you were playing.

general

I've occasionally seen the following error messages with NIQ/NIQCTF as well as with regular Quake II and many other mods. There hardly ever seems to be a problem when they appear, although they are somewhat annoying. If anyone knows their cause and/or how to fix them, please let me know. Are some of them related to lag?

"Client has overflowed"

"netchan_transmit: dumped unreliable" (in the console of a dedicated server which is running NIQ).

"SZ_GetSpace: overflow without overflow set"

"WARNING: message overflowed for XXX"

The "can't find pic" messages might be gone. I haven't seen one in a while.

The message "serverinfo string size exceeded" appears when you type "serverinfo" at the console. While the message may look scary, nothing seems to break as a result.

Occasionally when firing the chaingun or hyperblaster continuously for a while, the weapon will seem to stop firing and the screen will seem to shake for a few seconds and there may be a pile of "client has overflowed" messages. Things seem to come back to normal if you stop firing for a few seconds. I don't know if this is an NIQ-specific problem or if all mods (and/or the regular game) have it as well. It could be related to lag and/or running on a slow server.

Future Plans

These are arranged in rough order of the probability that I will actually do them.

Now that the Eraser bot code is out, I'm hoping to do NIQBOTS if the code which I need to muck around with is fairly straightforward. Probably the biggest limitation of any of the bots which I've tried (I've spent hundreds of hours playing against the Reaper Bots for Quake I) is the fact that they often can't get to powerful items which their human opponents are able to reach with relative ease. This puts them at quite a disadvantage against human opponents of roughly equal fighting skill. For this reason I think that merging NIQ with the Eraser Bot code might be worth trying. I'll be looking into this once NIQ and NIQCTF seem to have settled down.

Merge NIQ with Q2CTF+ which will let a single mod support all modes (CTF/deathmatch/singleplayer/coop with or without the grappling hook).

Figure out how to pause the MOTD (NIQ) until the client hits the FIRE button/key (like the Lithium mod does). If anyone knows how to do this, please let me know. The MOTD works fine at present (it stays up for about 5 seconds) but its not obvious to me how/where to handle waiting for the FIRE event.

Fine tune the various settings for ammo and health etc. a bit more. Try to optimize these for the best possible game play. Maybe some of these should vary with the number of players / skill level etc. In singleplayer, I think the health per monster should be reduced until skill 3 (hard+) is almost too hard for a single player (easier in coop).

Currently the ammo for all clients is going back to the spawn amount after a level change in all modes. In singleplayer, the current ammo (and health, time remaining) should be kept. In DM, things should be reset to the default amount when changing levels. The respawn amount should only be used when a client first connects or respawns after dying. (Its actually quite possible that I will drop the idea of having different amounts of ammo for switching/spawning since this seems to be unnecessary -- players aren't going to gain anything by suiciding anyway).

When unlimited ammo is enabled, show 999 for the current amount of ammunition and disable calls to the ammo incrementing code.

Option to show the next weapon which will be used on the HUD.

Look into using a custom variable for use by a GameSpy custom filter.

For singleplayer/coop, have the amount of health which you get for killing a monster depend on which weapon was used (you should get more health when using a weaker weapon). This would turn the file niqmonst.txt into a table of monsters vs. weapon used to kill the monster, i.e. 10 columns instead of 1. This would be better than having, say, a multiplier for each weapon since not all weapons are equally effective against all monsters (e.g. killing flying monsters with the grenade launcher isn't too easy).

Some kind of (optional) warning sound and/or flashing effect just before switching to the next weapon might be nice.

Other improvements to HUD (e.g. show #1 score and scores+ranks of any players just above/below you?).

Drop the ammoonstart column in niqammo.txt and add a single multiplier variable (niq_spawnmultiplier) which lets the server control how much ammo is given when the weapon is switched, versus when a client joins the game or respawns. I'm not convinced that this is even needed since if a client decides to get killed or kill himself on purpose, he will lose points and time and is probably better off trying to stay alive (to get more frags) with the ammo/health that he has.

Some kind of support for handicapping a client. I might be able to do this without making the mod client-side by reusing some standard variable or command which isn't needed in NIQ. For example, if clients hit "use grenade", this could tell the server to toggle through various levels of handicapping. The handicapping could be done in several ways, by reducing the amount of damage the client does or the rate at which his health increases for example. The idea is that any client could voluntarily give himself a handicap so that the game would be more challenging for him or more fair for others, e.g. because the client has a much smoother connection. The handicap level should be shown in the scoreboard though.

Option to not show a weapon switch when switching to the same weapon. This can only happen if there is only 1 weapon or if some weapons are in the weapon list more than once, so its not a big issue.

Have niq_weapontime=0 indicate that each weapon should be kept until the end of the current map.

Improve the custom scoreboard a bit. It would be nice to somehow fit in each client's connect time and rank. Also, it would be a plus if clients could ask for more scores or for a wider scoreboard to be shown, e.g. if they are running in a higher resolution than 320x240. In 640x480, we could show a lot more information. It might be nice to show the number or clients in the game on the scoreboard as well. This should fit in somewhere fairly easily.

Let clients control whether the NIQ or regular scoreboard is used. This would let clients see the model/skin icons for clients if desired, and the time connected information which isn't available on the NIQ scoreboard (for now).

Player ID support in NIQ would be nice (its in NIQCTF for free because this is in Q2CTF).

Add support for reading in a list of maps to be used. Even better would be to let this list include suggested minimum and maximum numbers of players for each map so that the best map for the current number of clients would be chosen each time. The maps could be executed either in order or randomly (using all maps at least once).

Some kind of a 'winded' factor which would limit how long a player can run for before he has to walk/rest for a while.

Source Code

I plan to upload the sources for NIQ and NIQCTF when I get a chance. Look for these to appear in this section.

Credits

A lot of thanks goes out to the guys at Matrox who helped Beta test NIQ and NIQCTF and provided encouragement and helpful ideas. In particular, Olivier Rousseau (Flatulus), Martin Paradis (Aes_Sedai), Louis de Carufel (Mr.Bungle), Steve McDuff (Demolition Duff), Eric Le (DynaByte), Rudy Yang (Stonecutter), Pierre Gervais (Cacou), Wil Renczes (Hawkins) and Benoit Miller (Fulg). Thanks also to Vince Lupo (Destroy), Matt (of Weapons of Destruction fame), Dave (Fargo) Kosak, Rodger Ballard and Joost Schuur for helping me with distribution issues. Thanks to Stefan Schwarz (EAVY) of the Handy-Team for his mod to Q2CTF which lets us play CTF on the regular and DM maps. And of course, thanks to id for putting out Quake II and Q2CTF in the first place.

Copyright and Distribution

The Quake2 source code is Copyright 1997, id Software. All modifications and additions made to the Quake2 source code to produce "NIQ," and "NIQCTF," can be used by anyone however they want, but please try to keep the files for these mods intact and unmodified.

NIQ and NIQCTF are provided "as is". While every attempt has been made to make these quality modifications to Quake II, if you use them, you do so entirely at your own risk.

Authors may feel free to use the NIQ sources however they want, subject to the above restrictions.

Top