This is a Star Wars Jedi Knight II: Jedi Outcast 1.04 mod targeting all competitive communities. It is developed by SaberMod team (see Authors_) and draws inspiration from all great id tech 3 games and mods, trying to improve on usability, stability and user experience with no-gimmicks approach. Main goal of the mod is to promote and improve competitive aspect of the game.
Source code is hosted on GitHub and based on JK2 SDK GPL
- an
updated JK2 1.04 SDK.
This is just a list of new features that require explanation. Refer to CHANGELOG.rst and Git commit history for full log.
Console Commands ................
follow [first|second] Follow first or second best player on the server. Can be used to stay on spectator team in Tournament gametype.
motd Show server Message of the Day.
nextspecmode/prevspecmode Cycle through spectator modes when following another player. Currently available modes are:
players [?|team] List players connected to server with some additional info. Optionally limit to members of team.
timein Resume paused game.
timeout Pause game for 60 seconds.
ragequit Reserved for God, do not use.
ready Toggle ready status during warmup.
seek [+|-][mm:]ss During demo playback seeks to mm:ss server time. With + or - prefix seeks mm minutes and ss seconds forwards or backwards.
Call Vote .........
abort Abort the match and go back to warmup.
matchmode <0|1> Enable/Disable match mode - restrict spectator chat and require matching clientside. In round-based gametypes dead players may only follow their teammates.
mode [mode] Switch to one of admin-defined game modes.
nk No Kick. Disables kicking completely and turns on friendly fire.
wk With Kick. Kicking mechanics depends on g_kickMethod value. Also turns off friendly fire.
poll
remove
shuffle Randomize teams.
teamsize
Call Team Vote ..............
forfeit Forfeit the game.
Referee Commands ................
These commands can be used only by a registered referee or server console (rcon).
abort Abort the match and go back to warmup.
allready Make all players ready in warmup or during intermission.
announce <message|motd> Print message or ingame message of the day on everyone's screen.
forceteam <player|all>
help List referee commands
(un)lockteam
(un)pause [seconds] Pause match for a specified number of seconds or until unpaused.
referee
unreferee <player|all> Remove referee status.
CGame Cvars ...........
handicap
cg_autoSave
| 1: Save screenshot of the final scoreboard | 2: Save demo of the match
cg_autoSaveFormat
| [date] - Date in yyyy-mm-dd format | [time] - Time in hh-mm format | [gametype] - Server gametype | [name] - Player name | [server] - Server name | [map] - Map name
cg_chatBeep <0|1> Turn on/off chat beep.
cg_crosshairColor #00ff00ff
is green.
cg_crosshairIndicators
===================== ===================== 1 - Movement arrows 2 - Speedometer ===================== =====================
cg_crosshairIndicatorsSpec
cg_damagePlums <0|1> When you hit an enemy, draw a small damage plum coming out of his torso. Works only if server has g_damagePlums enabled.
cg_darkenDeadBodies <0|1> Darken dead bodies outside of duel too.
cg_drawClock <0|1> Draw clock showing your local time.
cg_drawFollow <0|1>
Draw large "Following
cg_drawRewards <0|1> Draw rewards for outstanding moves. Requires ent's "Jedi Knight Rewards 2" assets.
cg_drawTimer <0|1|2> Draw game timer. 1 - count up, 2 - count down.
cg_duelGlow <0|1> Turn on/off duel glow.
cg_fastSeek <0|1> Use experimental fast seeking method (see seek console command).
cg_fixServerTime <0|1> Fix various engine issues on servers running for a few days.
cg_followKiller <0|1> When player you are following dies, switch to his killer.
cg_followPowerup <0|1> Automatically follow flag and powerup carriers.
cg_fovAspectAdjust <0|1> Change Field Of View calculations so that they don't disadvantage widescreen monitors. Instead of cropping top and bottom parts of the screen it's extended to the sides, compared to 4:3 display. Works only when cg_widescreen is enabled.
cg_drawSpectatorHints <0|1> Draw extra hints on new spectator features.
cg_privateDuel <0|1> Hide all other players and entities when duelling. Available only on server running JK2MV 1.2 or newer.
cg_smoothCamera <0|1> Fix camera warping while maintaining original feel in following scenarios: unstable fps, unstable connection, overloaded server, local server, high velocity movement, demo playback.
cg_smoothCameraFPS
cg_widescreen <0|1> Enable HUD adjustments for widescreen monitors
UI Cvars ........
ui_widescreen <0|1> Enable menu adjustments for widescreen monitors
Spectating ..........
As a spectator, +use button makes you change followed player using "smart cycle" mode. It will switch between duelling players, search for a next powerup player or cycle through current team in a scoreboard order.
As a free floating spectator you can target a player with your crosshair and press +attack button to start following him.
Console Commands ................
All Referee Commands
_ can be used as console commands.
items [items] Enable/Disable items using human readable names. Type without argument to see usage instructions.
mode <mode|default> Change to mode or list all available modes when passed without arguments.
players [team] Print various informations about players. Optionally filter by team.
referee
remove <player|all> [time] Remove player to spectator team for at least time seconds.
spawnitems [items] Enable/Disable spawning items using human readable names. Type without argument to see usage instructions.
shuffle Randomize teams.
Game Cvars ..........
teamsize Call Vote
_ teamsize.
roundlimit
lifelimit
duel_fraglimit Removed. Use roundlimit instead.
dmflags
===================== ===================== ===================== 1 - Fix jump height 2 - CJK Disruptor 4 - Go through team 8 - No fall damage 16 - Limit FOV (97) 32 - No footsteps 64 - No kick mode 128 - league mod YDFA ===================== ===================== =====================
bot_nochat <0|1> Prevent bots from sending chat messages.
g_allowRefVote <0|1|bitmask> Control what commands are available to referees. Uses the same bitmask as g_allowVote below.
g_allowTeamVote
===================== ===================== ===================== 2 - Team Leader 4 - Forfeit Match ===================== ===================== =====================
g_allowVote <0|1|bitmask> 0 / 1 - disable / enable all votes.
Moreover you can decide what votes should be available by setting it to a sum of values from the following list:
===================== ===================== ===================== 2 - Map Restart 4 - Next Map 8 - Map 16 - Gametype 32 - Kick 64 - Shuffle 128 - Do Warmup 256 - Timelimit 512 - Fraglimit 1024 - Roundlimit 2048 - Teamsize 4096 - Remove 8192 - WK/NK 16384 - Mode 32768 - Match Mode 65536 - Capturelimit 131072 - Poll 262144 - Referee 524288 - Abort 524288 - Lifelimit ===================== ===================== =====================
g_antiWarp <0|1|2> Prevention system against players who are warping or using lag scripts.
| 1: Draw icon above warping player's head. | 2: Forcefully prevent players from warping for others. This setting makes game almost unplayable for a warping player and may hurt legitimate players who have bad connection.
Refer to g_antiWarpTime cvar description for more details.
g_antiWarpTime
g_damagePlums <0|1> Allow clients with cg_damagePlums enabled to see damage plums.
g_dismember
g_infiniteAmmo <0|1> Players spawn with infinite ammo for all weapons.
g_ingameMotd <message|none>
Ingame message of the day shown to all players. May contain \n
for newline and \\
for backslash.
g_instagib <0|1> Enable simple instagib mode for all weapons. Splash does no damage.
g_kickMethod
===================== ===================== ===================== 0 - No effect 1 - Basejk 2 - No damage 3 - League Mod ===================== ===================== =====================
g_log[1-4]
g_consoleFilter
g_logFilter[1-4]
===================== ===================== ===================== 1 - Game Status 2 - Client Connect 4 - Client Begin 8 - Userinfo Change 16 - Client Rename 32 - Client Spawn 64 - Private Duel 128 - Obituary 256 - Say 512 - Say Team 1024 - Tell 2048 - Voice Tell 4096 - Item Pickup 8192 - Flag 16384 - Weapon Stats 32768 - Game Stats 65536 - Duel Stats 131072 - Vote 262144 - Referee Cmds ===================== ===================== =====================
g_macroscan <0|1> Enable scanning for and disabling binds that may give unfair advantage. Works only on players using SaberMod Clientside.
g_maxGameClients
gmodeDefault Server Modes
g_modeDefaultMap
g_modeIdleTime
g_pushableItems
===================== ===================== ===================== 2 - Weapon 4 - Ammo 8 - Armor 16 - Health 32 - Powerup 64 - Holdable ===================== ===================== =====================
g_refereePassword
g_removeUnreachableItems <0|1> Remove items, bodies and flags that land in map areas inaccessible to players. This is a workaround for retail maps not doing a very good job at it. On a correctly made map it should not be needed.
g_requireClientside <0|1> Allow only players with matching clientside to join the game.
g_restrictChat <0|1> Prevent spectators from speaking to players and all clients from speaking to dueling players.
g_restrictSpectator <0|1> Dead players may only follow their teammates.
g_roundWarmup
g_spawnItems
===================== ===================== ===================== 2 - Seeker Drone 4 - Forcefield 8 - Bacta 32 - Binoculars 64 - Sentry ===================== ===================== =====================
g_spawnShield
g_spawnWeapons
g_teamForceBalance
g_teamsizeMin
g_timeoutDuration
g_timeoutLimit
g_unlagged <0|1|2> Experimental "unlagged" disruptor hit detection. 2 accounts for doors and other movers too at some server performance penalty.
g_unlaggedMaxPing
g_warmup <0|1> SaberMod has a new warmup system. All players must ready up with ready command before a match can start. Old g_warmupTime Cvar is no longer used. Setting this cvar to 0 disables warmup alltogether.
g_vampiricDamage
g_voteCooldown
Round-Based Gametypes .....................
In round-based gametypes players spawn with all available weapons and items (controlled by g_spawnWeapons and g_spawnItems cvars), however there are no pickups on the map. Players gain one point for killing an enemy and one point for each 50 damage dealt to the enemy team. A round lasts until either one team is eliminated or a timelimit is hit. Match ends when a roundlimit is hit. Lifelimit is a new setting that allows players to respawn in a single run until their lives run out.
Red Rover (g_gametype 9) It can be described as FFA with a twist. There are two teams, player who gets killed respawns in the opposing team. Round ends when one team is eliminated, but the match winner is a person who scores most points.
Clan Arena (g_gametype 10) Player who dies must spectate until the end of a round. When one team is eliminated, round is over. Team who hits the round limit first wins the match.
Last Man Standing (g_gametype 11) Player who dies must spectate until the end of a round. When everyone else is dead, last man standing receives 1 point and the game progresses to next round. There are no points for killing enemies or dealing damage.
Server Modes ............
Server administrator can configure a number of custom game "modes",
players will be able to choose from. A mode is technically a config
file in modes/
directory that will be executed when players
sucessfuly vote to use it. It can contain any commands altering server
behaviour, but please take following guides into consideration.
Switching to a mode from any other should always result in the same
server state. To achieve this it's best to use a "reset" config,
executed at the start of each mode config. It should contain a default
value for every possible cvar your modes are changing. Examine
included modes and reset.cfg
as an example.
Server can be configured to go back to a default mode after a period of inactivity. To do so last lines of the main server config should resemble following template::
set g_modeIdleTime "10" set g_modeDefault "mymode" exec "modes/mymode" map ffa_bespin
Where mymode is the default mode.
SaberMod has several build scripts, but only GNU Make script is complete and used for official releases. other scripts produce different QVM files from the same source code.
Only requirements are GNU Make, Git and GCC or Clang
compiler. Makefile has several targets, type make <target>
to
build selected target. Most useful are:
Type make help
to learn about remaining targets.
Install Git command line program on your system. It can be done from Visual Studio Team Explorer tab. Use Clone Git Repository and provide address of your SaberMod repo. Build All action compiles .dll modules. Other targets can be compiled from CMake Targets View in Project Explorer.
Install CMake for your operating system (Linux, Windows, MacOS and
others) and use CMakelists.txt
script from the main SaberMod
directory.
Copy lcc.exe and q3asm.exe tools from JK2 Editing Tools 2.0 into
bin/ directory. Run code/buildvms.bat
batch script to generate
.qvm files.
LCC 4.1 is Copyright (c) 1991-1998 by AT&T, Christopher W. Fraser and
David R. Hanson, and available under a non-copyleft license. You can
find it in code/tools/lcc/COPYRIGHT
. LCC version bundled with this
SDK comes from ioquake3 and it has been slightly modified by its
developers.
Some files in assets
directory are modified assets from the
original, non-free JK2 1.04 release and licensed under JK2 Editing
Tools 2.0 EULA.
Remaining parts of JK2 SDK GPL are licensed under GPLv2 as free software. Read LICENSE.txt and README-raven.txt to learn more. According to the license, among other things, you are obliged to distribute full source code of your mod alongside of it, or at least a written offer to ship it (eg a HTTP download link inside a .pk3 file). Moreover, any mod using patches from this repository must be released under GPLv2 or a compatible license.
Q3ASM is Copyright (c) id Software and ioquake3 developers.
SaberMod developers 2015-2021
.. GitHub : https://github.com/aufau/SaberMod
.. JK2 SDK GPL
: https://github.com/aufau/jk2sdk-gpl