New Projects - Fresh from the Labs
When exploring these projects, sometimes I have to dig deep to find something that will arouse my audience, but other times, I'm instantly mesmerized and need discipline, so I don't run out of writing space! This is one of those times. According to the game's Web site:
0 A.D. (pronounced “zero ey-dee”) is a free, open-source, cross-platform real-time strategy (RTS) game of ancient warfare. In short, it is a historically based war/economy game that allows players to relive or rewrite the history of Western civilizations, focusing on the years between 500 B.C. and 500 A.D. The project is highly ambitious, involving state-of-the-art 3-D graphics, detailed artwork, sound and a flexible and powerful custom-built game engine.
The game has been in development by Wildfire Games (WFG), a group of volunteer, hobbyist game developers, since 2001....In short, we consider 0 A.D. an educational celebration of game development and ancient history.
At the time of this writing, the game was in an early testing version (Build: Jul 29 2010—7732-release). Tailored packages purportedly are available in various guises for Gentoo, Arch Linux, Debian, OpenSUSE, Fedora and Mandriva. If you can, trust me, grab a binary! A package was supposed to be available for Ubuntu on the PlayDeb.net Web site, but I got an error when I tried to download it. If you're unlucky like I was, source packages are available, and as that's the usual “distro-neutral” option, that's what I'll be running with here. This project is in its infancy, and compilation will be more streamlined in the future (possibly by the time this article is printed), but for now, strap yourselves in—this will be a long one!
As far as library requirements go, the documentation states you need the following:
GCC (at least 4.0, preferably 4.3).
NASM—there is a bug in NASM 2.06 on x86_64, so you might want to try a different version if you get errors.
wxWidgets (probably called wxgtk on Linux; optional, but required for the editor tools).
Gamin (FAM should work too; Linux only).
BFD (typically called something like binutils-dev; Linux only).
ENet 1.2.x (not 1.3.x).
Of course, this doesn't include the “-dev” libraries you'll need to compile it, and I needed to grab a few for my Kubuntu machine. The docs are helpful enough to recommend this command for Ubuntu or Debian (at least unstable and testing):
sudo apt-get install build-essential libsdl1.2-dev zlib1g-dev ↪libpng12-dev libjpeg62-dev libgamin-dev nasm ↪libwxgtk2.8-dev libboost-dev libboost-signals-dev ↪libboost-filesystem-dev libopenal-dev libalut-dev ↪libvorbis-dev libogg-dev libcrypto++-dev binutils-dev ↪libdevil-dev libenet-dev libxml2-dev
Sorry I don't have room for helping out with other distros, but the package names should at least give you a hint for your own system.
Once the packages are sorted, grab the latest tarball files from the Web site, specifically the 0ad build and data files. Now, this is important: copy the two files into the same folder, and extract them both there.
Next, open a terminal in the (0ad main directory)/build/workspaces/ folder, and run the command:
A series of files will download for several minutes. Once they're done, continue with the following commands:
$ cd gcc $ make $ cd ../../../binaries/system
Run the game with:
This game is still in its early alpha stage, so there's no single-player AI yet, but you can at least test the game mechanics. For now, you can play multiplayer over a LAN—at least I think so, I didn't get the chance. For now, fire up a single-player map and have a look around. I recommend the default choice to begin.
Once you're in the game screen, you're presented with a village that is your starting base with a number units (people). To scroll around your world, middle-click and drag your mouse. Left-click a unit or object to select it, and right-click on a map to tell where to go or what to do.
Units seem able to go beyond simply one class, like harvesting wood or combat. Instead, a unit seems to be capable of combat, wood harvesting, hunting, stone milling and so on. Hover your mouse over a piece of rock for instance, and the mouse pointer will change to a stone-working icon. Hold your mouse pointer over an enemy unit, and an attack sign will appear. Hold it over some livestock, and an icon of meat appears.
What becomes inescapable are the gorgeous graphics, with beautiful 3-D rendering, especially when you scroll around the map. In particular, I noticed some photographically mapped rocks, and trees are lush and green, rendered in a very tasteful and intricate 3-D. There's a distinct lack of sprites around the place to keep the game from feeling tacky.
Oceans move around dynamically with rippling water, beaches graduate from pebbles to sand and move gently on to the seemingly random but convincing beach vegetation, which itself graduates into thicker inland bush. Everything's just so organic. There's none of that blocky squared mapping that screams of a basic-level designer—you may as well be looking at a more convincing Google Earth!
The soundtrack is gentle and tastefully done, with the sort of soundloops that can be played over 100 times without becoming annoying, and without turning into bland muzak. Unit animations also are wonderfully smooth, with many frames per second and shadow rendering.
A scenario editor also is included for those who want to make their own levels. Look on-line to see galleries of some absolutely stunning efforts. But, that's for another day.
I'm not a real-time strategy fan, and I haven't been excited about an RTS game since Command and Conquer: Red Alert! However, this is the first RTS I'm actually enthused about, and I'll keep a close eye on it in the future. The graphics are easily on par with commercial efforts (and even better than quite a few). Hopefully, the gameplay dynamics are just as solid as development continues. My keen hope is that the free 0 A.D. one day dominates LAN parties and cafés, outdoing its commercial rivals and becoming a free software gaming classic.
John Knight is the New Projects columnist for Linux Journal.
- My Childhood in a Cigar Box
- Tech Tip: Really Simple HTTP Server with Python
- Papa's Got a Brand New NAS
- Applied Expert Systems, Inc.'s CleverView for TCP/IP on Linux
- Rogue Wave Software's TotalView for HPC and CodeDynamics
- Returning Values from Bash Functions
- Panther MPC, Inc.'s Panther Alpha
- Simplenote, Simply Awesome!
- OpenSSL Hacks