ET: Legacy

(Radegast) #1

What is ET: Legacy?

Project home:
IRC channel: #etlegacy on

ET: Legacy is a version of Wolfenstein: Enemy Territory (based on its open-sourced code). The main goal of this project is to fix bugs, remove old dependencies and make it playable on all major OSes while still remaining compatible with the ET 2.60b version and as many mods as possible.

What’s the difference between ET:L and, for example, OpenWolf, ET:Xreal or raedwulf-et? As mentioned above, ET:L tries to maintain compatibility with ET 2.60b and its mods (tested so far: NoQuarter 1.2.9, Jaymod 2.2.0, siEnT 0.5.0 and ETPub). For up to date list of mod compatibility see this wiki page. Also have a look at the changes in the cvars.

This project is a fork of raedwulf-et at revision 24ca3ade888b. It also takes inspiration from ioquake and ET-Xreal (modular renderer planned in the future).


[li]Please download Windows and linux binaries from this page.
[/li][li]OpenBSD - done! Compile from source.
[/li][li]Mac - planned. We need help with this.

Warning !!!

This is an alpha quality software. It contains many bugs - some known, some not yet found. Do not replace your W:ET binaries with the ones you download from here. Instead unpack the directory to some other location and copy pak0.pk3, pak1.pk3, pak2.pk3, mp_bin.pk3, etkey (if you want to keep XP) and maps from your W:ET installation there.

Version history

[li]Git test builds[LIST]
[/li][li]Irregular test builds can be found on our website in the files section. This list will not be updated anymore.

[li]2.70 (beta 7)[LIST]
[/li][li]rcon fix
[/li][li]removed some cvars, small code clean ups and reformatting
[/li][li]fixed visible map edges and SilentMod menu artifacts
[/li][li]HLSW should work with ET:L from now on
[/li][li]Windows version string hardcoded (mod compatibility)
[/li][li]removed because of crashes/incompleteness:
[li]set sv_timeout to 30
[/li][li]guid master
[/li][li]Windows homedir fix
[/li][li]a few other things
[li]2.70 (beta 6)[ul]
[/li][li]added/fixed texture anisotropic filtering (see the list of cvars)
[li]r_ext_texture_filter_anisotropic - Enables/disables texture anisotropic filtering.
[/li][li] r_ext_max_anisotropy - Sets largest supported anisotropy.
[li]fixed crash on NULL sound
[/li][li]fixed ingame announcements volume
[/li][li]don’t spam errors on buggy maps
[/li][li]fix mouse not working in fullscreen (again)
[/li][li]set sv_timeout to 30 seconds by default (untested, if you experience problems, please tell us!)
[/li][li]getstatus response fix
[/li][li]support for 32 colorcodes in linux terminal
[/li][li]fixed “Invalid .PK3 files referenced” (server)
[/li][li]fixed shader typos and newlines (patch by Gir)
[/li][li]console command and argument completion (basic)
[/li][li]foundations for secure guid (in progress) and lots of code clean ups
[li]2.70 (beta 5)[ul]
[/li][li]commands can now be executed ingame from the system terminal on unix
[/li][li]added minimize command (minimizes window into the taskbar)
[/li][li]added Dushan’s anti-DDoS security fix
[/li][li]cleaned up the code and added LOTS of security fixes
[li]2.70 (beta 4b)[ul]
[/li][li]fixed a server crash
[li]2.70 (beta 4)[ul]
[/li][li]Jaymod 2.2.0 compatibility
[/li][li]Imported all the fixes from the Project: Bug Fix
[/li][li]etkey is optionally downloaded from (this will be replaced in the future)
[/li][li]Reverted change: ET:L uses ~/.etwolf as its home directory again
[/li][li]other minor changes, for a complete list of changes have a look here
[li]2.70 (beta 3)[ul]
[/li][li]screenshotJPEG command issue fixed (thanks acQu)
[/li][li]Morsik’s patch for PB-compatible etkey combined with the old stuff
[/li][li]very basic Visual Studio support
[/li][li]s_muteWhenMinimized set to 1 by default
[/li][li]ET:L now uses its own home directory (~/.etlegacy on linux)
[/li][li]other minor changes
[li]2.70 (beta 2)[ul]
[/li][li]workaround for the mouse getting stuck in the windowed mode (thanks Mateos)
[/li][li]Alt+Enter switches from/to fullscreen mode on all platforms
[/li][li]added: ability to mute sound when the game is minimized (thanks acQu)
[/li][li]switched from Makefile to premake build system (inspired by ET-XreaL)
[li]2.70 (beta 1)[ul]
[/li][li]added fix for libjpeg compatibility (originally written by Ilm) (broken in alpha2)
[/li][li]windowed mode behaves better (but it is not noob-friendly yet)
[/li][li]libraries are now all linked dynamically (Linux needs: libjpeg, libcurl, sdl)
[li]2.70 (alpha 2)[ul]
[/li][li]ALT+TAB minimizes the game
[/li][li]sound now works correctly on Windows and SDL is linked dynamically
[/li][li]fixed key binding on international keyboards
[/li][li]disabled OpenAL
[li]2.70 (alpha)[ul]
[/li][li]switched from to
[/li][li]compatibility with NoQuarter 1.2.9
[/li][li]ported etkey generation from ioquake
[/li][li]updated CURL lib to the latest version available
[/li][li]resolved about a 1000 compiler warnings (still a few hundreds left)
[/li][li]removed some useless and deprecated code (a lot more to go)
[/li][li]all the fixes and improvements made by raedwulf (move from deprecated platform specific code to SDL, sound fix on linux, etc.)

(Radegast) #2

[QUOTE=ailmanki;404919]Is there a chance for a OSX*Client?
If not, what needs to be done? You guys need donations for a mac? Coders?[/QUOTE]
This project is way too small to generate a reasonable amount of money for a Mac through donations, so your second guess is right. We need a Mac programmer. I hope it is only a matter of time since we already have OpenBSD support and even AROS Research Operating System port.

We have an ET:L test server running with NQ 1.2.9. It is automatically compiled with each new source code revision. If you want to see how fast it runs open up ET console and type:


(morsik) #3

I just added initial OS X support:



  • mouse accelleration doesn’t works. There is some code that should replace default OS X acceleration engine, but it looks like it only disables acceleration, and in-game accel settings doesn’t change anything.


  • check if sound works…
  • fix idSqrt code (i commented it for OS X because i had problems with compilations - and it needs more investigation because that code was wrote for PPC)
  • fix acceleration

ET:L loads standard OS X .dylib libraries. I don’t know if it can load original mods… i think that etpro was released for OS X?

Of course it’s up to mods creators to add support for OS X to their mods… :
It could be good now to have QVM. One file and one code for every platform.

PS I don’t own a Mac…

(Dragonji) #4

Great job, keep it up! There were only so small updates last times that I thought you’re not interested in developing ET:L anymore :tongue:

(morsik) #5

Just I don’t have much time now (-;

(Indloon) #6


  • fix idSqrt code (i commented it for OS X because i had problems with compilations - and it needs more investigation because that code was wrote for PPC )[/QUOTE]

I suggest to use Log base 2 approximation and Newton’s Method.

static inline float FAST_SQRT( const float x ) {
  union {
    int i;
    float x;
  } u;

  u.x = x;
  u.i = (1<<29) + (u.i >> 1) - (1<<22); 
  return u.x;

#define sqrt FAST_SQRT

Article reference:

(Indloon) #7


  • fix idSqrt code (i commented it for OS X because i had problems with compilations - and it needs more investigation because that code was wrote for PPC )[/QUOTE]

I suggest to use John Carmack way, which uses magic string

In my opinion there isn’t any better way what performs it so easily and fast. :eek:

static inline fast_sqrt ( float x ) {
        float halfx = 0.5f * x;
	int i = *(int*) &x;
	i = 0x5f375a86- ( i>>1 ); // What kind black magic is this?
	x = *(float*) &i;
	x = x *( 1.5f - haflx * x * x );
	return x;

#define sqrt fast_sqrt

A article about it:

(Mateos) #8

When I think for what I learnt today at school I understand a bit that code, and that in a year or two I’ll write that kind of stuff x)

(Indloon) #9

Now I ask, what will you code in year or two? :slight_smile:

A game or a tool?

A game involves more mathematics than a tool coding, especially a game render programming.

A tool requires more like “think what user would want”.

Thought for both cases, you need coding skillllz!

So what is the pick? :smiley:

(Mateos) #10

I guess for a game I will need some reading of source codes ^^

For the second option we’ve been already told, to show that some parts are not useless and need to be equally considered, but come on third week and we’re learning ==, !=, and that kind of things… Slow o.o Already learned with Omni-Bot.

Skillz are experience x) For now I map and do map/bot scripts, maybe later I’ll go forward in the game :slight_smile:

(Runeforce) #11

You like bitwise shifts? :eek::penguin:

(Mateos) #12

We’re not that far yet ^^’

(Maybe stop offtopic? :P)

(Dragonji) #13

(ponce) #14

Bulding from git, I’ve seen that IR4T4 added omnibot support, but seems like the zip file needed is not available on the site (don’t mean to be pushy, just for reporting) :slight_smile:

(Mateos) #15

It’s supported, but why force people to download it if they don’t want bots? :slight_smile:

You can grab OB from OB website :slight_smile:

(morsik) #16

But anyway it’s not bad idea to add them. But maybe better to do built-in autoupdater of them from omnibot site?

(Mateos) #17

If they do a major update, usually the mods need some new code, so I dunno if a auto-update would be well if there’s some core updates in the future… better ask crapshoot about this :slight_smile:

(Dragonji) #18 :slight_smile:

(ponce) #19

thanks, I missed this :slight_smile:

(morsik) #20

BTW. We have forum:
you’re welcome to use it (-;