Star Trek Voyager: Elite Force 1.36
Star Trek Voyager: Elite Force is a modification to the icculus.org maintained quake3 engine.
This engine has full compatibility for the newer _and_ the original EliteForce protocol, clients using the original engine can use newer servers, and clients using my engine can use old servers, too.
Now, the next few paragraphs are just some random blabla about the advantages of this release, but if you want to you can just skip it and go right to the installation instructions.
What was the motivation for me doing this project?
It actually started pretty small.. The Quake3 source has been released more than half a year ago and I got the crazy idea to try the quake3 engine with EliteForce on my trusted Gentoo Linux.
When I started the program first the screen went black and nothing happened... nearly nothing. I heard some sounds and when I moved the cursor I heard random click-clicks from the mouse going over some menu buttons. This meant this stuff is not completely incompatible after all, it didn't crash right away though that was exactly what I expected it to do. I digged in Raven's multiplayer source that they released (only the virtual machine stuff, to allow for building modifications) and compared it to quake3's virtual machines and realized that there was a small
incompatibility in one of the data structures used to pass information between engine and virtual machine. It was nothing big and after fixing this the menu worked!
There were some quirks here or there, but most of the menu really worked. So it got me thinking: If I fix all these incompatibilities.. maybe I can finally play my beloved multiplayer game I've been clinging to for over 5 years on my favorite OS natively.. and IPv6 support for EliteForce would be pretty cool too...
So a crazy idea was turned into a serious project. I had to add support for Raven's models, playing mp3s, EliteForce's own network protocol. My goal was to make this release as close to the original as possible. Most of the time, I only could guess what names and functions would mean to the engine or I had to compare the original game and then try to make it work the same way in my engine.
The quake3 game relies heavily on floating point operations. Unfortunately, the original EliteForce engine does non-ISO compliant rounding of floating point numbers to integers in the VMs. The game VM uses that flaw which will result in higher jumping for certain com_maxfps settings. As with the new engine there are many platforms that can be supported, there are probably many different ways one has to take to revert the rounding to the old behaviour. This is nearly impossible to do, so I had to use a different approach: build new VMs.
· A working hardware accelerated OpenGL setup (DRI, fireglx or nvidia-glx...)
· libSDL - Simple Direct Layer libraries
· libmad - (MPEG Audio Decoder, also known as MAD sometimes.)
· OpenAL - OpenAL sound libraries
What's New in This Release:
· There now is the possibility to revert the fastsky to EF's original color. set cvar r_origfastsky and the color of fastsky will be the normal beige you know.
· Ignore system. This is actually not specific to my engine but included in the VM updates in pak91.pk3. You can use it to ignore chat messages from abusive players. The ingame menu has been extended so you can conveniently add/remove players to/from your ignore list. Three new commands have been introduced: ignore, unignore and unignoreall, their names pretty much speak out for themselves. If the ignore or unignore command is called without playername, the person the crosshair is pointing at is affected. If you run it like: "/ignore evil 1", all players with the string "evil" in their name are affected. Colors in names will be stripped and don't affect the result at all. Of course, the ignore system is only available if the server has been updated with the pak91.pk3.