Development
Open-source FPS gaming with Xonotic 0.8
Linux has been getting more attention from commercial developers as a gaming operating system. With the Steam gaming service available natively for Linux, major video game companies have been porting popular proprietary games to the platform. But there are also many quality open-source games for Linux, with some, such as the first-person shooter (FPS) Xonotic, able to hold their own against their better funded, professionally developed competitors. Xonotic's recent 0.8 release, which comes a year and a half after 0.7, adds an "Invasion" game mode, a new lightning weapon, and other new features—it packs in lots of fun for open-source game players.
FPS games all have several things in common. Players have a first-person perspective in a three-dimensional game world. A variety of weapons are available for slaying enemies and the player character has a health meter that tracks any damage received. If the meter drops to zero, the player character dies. The primary gameplay goals are typically achieved by slaughtering opponents using the weaponry.
Amidst the competition, Xonotic offers something unique. It is a hectic, fast-paced multiplayer shooter with a variety of modes and interesting weapons. For example, there is a "Capture the Flag" mode that uses grappling hooks to propel characters lighting-fast around the map and has sniper rifles to put a quick stop to an escaping flag-carrier. Succeeding in this mode, which pits two teams of human players against each other, relies on sharp reflexes and good instincts. There is just a fraction of second after identifying an opponent to snipe them down; any hesitation and they'll be a mile away. But being too trigger-happy can be a liability, one that may result in slaying a teammate by accident.
There's also a "Key Hunt" mode: each team has a player who holds a key, and killing the opponent's key holder is the path to victory. "Onslaught" requires teams to destroy enemy power generators while protecting their own. Those interested in something a bit more silly can try "Nexball", which is a weapon-free game of soccer.
Weapons in Xonotic include familiar FPS staples like shotguns and machine guns, but also some unique weaponry. There's the Crylink, which can shoot several bursts of energy that can bounce off walls. A player more interested in demolitions can try the Hagar, a rapid-fire rocket launcher, or the grenade-launching Mortar.
With the latest 0.8 version, there is a new "Invasion" mode, where players fight off waves of monsters. This is reminiscent of popular, survival-horror-themed FPS games, like the Left 4 Dead series and Killing Floor, which both feature cooperative, team-based multiplayer modes that make players fend off ever more dangerous swarms of computer-controlled enemies. However, while the code for Invasion mode is in 0.8, there are no maps yet; Xonotic developers are considering holding a contest to make maps for the mode. When these maps come out, the new lightning gun, named Arc, should come in handy. It shoots out a ray of energy for powerful close-quarter combat but can overheat if used to excess.
There are a large number of public multiplayer servers to choose from. Unfortunately, only a few are populated, but there are enough to ensure that one will always find a game to play. The server hosted by Jupiter Broadcasting, an information-technology podcasting company that has drawn attention to Xonotic, is almost always populated, so those in North America should try that one. For those on the other side of the Atlantic, there are popular servers in Europe that are mostly German-speaking. You'll be too busy trying to survive to chat much, though, so a language barrier really isn't a concern. Servers are also available in Japan and Australia.
From the main menu, players can choose a single-player mode, which is purely a tutorial to learn the game and to practice against computer-controlled opponents, the multiplayer mode (where the meat of the game is), and the options menu. In the latter, players can change a variety of settings including controls for graphics quality. It's not necessary to have the latest NVIDIA or Radeon GPU to enjoy Xonotic, as it can be run on its lowest graphical settings on machines with low-end graphics. I was able to run the game on almost maximum graphics quality (disabling bloom purely out of preference though, since it was way too bright for my liking) on my laptop with Intel HD 4000 integrated graphics.
The player base is quite active. Discussions on the official forums range from new players introducing themselves to news about official and unofficial tournaments for those interested in competition. For instance, a group of dedicated players set up an official "defrag championship" with cash prizes for the winner.
On the technical side, Xonotic is based on the engine from Quake 1,
which is one of the most influential FPS games made. One might be startled
to think that a twenty-year-old engine is powering this game, but a Jupiter
Broadcasting podcast interview
with developer "Antibody" noted that the Xonotic engine involved "lots of
modifications, stripping it all the way down, building it all the way
up". With the 0.8 version, the code now relies on Simple DirectMedia Layer 2.0, the latest
version of the "cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D
".
Xonotic is free software, which makes it an excellent means for aspiring game developers to see (and modify) working game code. The game was originally called "Nexuiz", but a dispute over naming and rights to the code led to a name change. The Xonotic FAQ page has the details of the change. The game is packaged for many Linux distributions, with the code and art assets available under GPLv2-or-later. The binaries for Linux and Windows also incorporate the LGPLv3-or-later GNU Multiple Precision Arithmetic Library (GMP). For those who don't have the latest version available in their distribution, there's one unified download that contains binaries for Linux, Windows, and OS X.
The project continues to be actively developed. Xonotic developer "TimePath" is planning to archive older branches to remove clutter from the tree in order to facilitate further development. Progress is being made on the user interface, with a recent focus on improving the in-game weapons panel (indicating which weapons are possessed). Those interested in contributing can check out the project's GitLab repositories, where one can see frequent patches and engaged commentary about development. The official Xonotic website was also updated a couple weeks ago to look more modern. Xonotic continues to showcase some of the best in open-source game development and gameplay—I look forward to seeing the project continue to grow.
Brief items
Quotes of the week
GNU C library version 2.21 released
Version 2.21 of the GNU C library is available. This release includes a lot of bug fixes, a wide range of architecture-specific performance and functionality improvements, and a new semaphore implementation. "Previous custom assembly implementations of semaphore were difficult to reason about or ensure that they were safe. The new version of semaphore supports machines with 64-bit or 32-bit atomic operations."
ownCloud Server 8 released
Version 8 of the ownCloud server is available. "This new release brings improved sharing and collaboration between clouds and introduces faster ways of getting at your files with favorites and improved search." See the feature page for details.
Git v2.3.0 available
Git version 2.3.0 has been released. New in this release are "
lots of small corrections and improvements without big uncomfortably exciting features
", although many Git users may find something to be excited about. Included in the small improvements are a new environment variable for use in passing extra arguments down to ssh, the ability to try multiple credential helpers in turn until one of them succeed, and numerous new flags for various subcommands.
Newsletters and articles
Development newsletters from the past week
- What's cooking in git.git (February 5)
- Haskell
Weekly News (February 4)
(Readers should take note that, as of this issue, longtime HWN editor Daniel Santa Cruz is stepping down, and HWN will only continue if a new editor can be found.) - LLVM Weekly (February 9)
- OCaml Weekly News (February 10)
- OpenStack Community Weekly Newsletter (February 6)
- Perl Weekly (February 9)
- PostgreSQL Weekly News (February 8)
- Python Weekly (February 5)
- Qt Weekly (February 10)
- Ruby Weekly (February 5)
- This Week in Rust (February 9)
- Tor Weekly News (February 11)
- Wikimedia Tech News (February 9)
GCC5 and the C++11 ABI (Red Hat developer blog)
A post at the Red Hat developer blog looks at some of the changes that are coming with GCC5. Support for the C++11 standard means that some standard library classes need to change their ABI, notably std::basic_string and std::list. The post looks at how the change has been handled and what programmers need to do to deal with the changes. "The last time G++ went through an ABI change, back in the 3.x period, we changed the soname of libstdc++, which was widely regarded as a mistake. Changing the soname caused a lot of pain but is not sufficient to deal with changes in symbol ABIs: if you load multiple shared objects that depend on different versions of the library, you can still get clashes between different versions of the same symbol. So the plan for this ABI change has been to leave the soname (and the existing binary interface) alone, and express the new ABI using different mangled names."
Page editor: Nathan Willis
Next page:
Announcements>>
