0 A.D. The C++ open source RTS that's looking for game dev geeks (not that you're a geek...)
Today's project is a little outside our usual, delving into C++, but one that I still thought pretty cool. And since it compiles with VS 2005, VS2008 or VS2010 and is "Fun" I thought it might be something you all might like too.
This project is still in an Alpha state, but that's actually good, since it means that if you want to help them out on it, you can get in closer to the ground floor...
I said, "help out?" Yep, they are actively looking for your help...
We are seeking contributors in programming, art, sound, web design, taking YouTube videos and more.
These roles on the 0 A.D. development team are great if you want to brush up on your skills and update your portfolio, if you're seeking a project for school with real-life applications, or if you care about the cause of free culture and software and are willing to work pro bono with a group of dedicated volunteers from all over the world.
What kind of project are we talking about?
• Free and Open Source Software
• Historically based
• 6 unique civilizations
• Provinces and territories
• Realistic maps/terrain
• Realistic naval warfare
• Comprehensive editor
• Several multiplayer modes
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 3D 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. The code and data are available under the GPL license, and the art, sound and documentation are available under CC-BY-SA. In short, we consider 0 A.D. an an educational celebration of game development and ancient history.
Top features - Technical
- Rendering: OpenGL with shaders
- Libraries used: OpenAL, OpenGL, Boost, Crypto++, CxxTest, DevIL, SDL, SpiderMonkey, Vorbis, wxWidgets, Xerces
- Operating Systems:
- Windows 2000, XP, 2003, XP64, Vista
- Mac OS X
- System Requirements: 1 GHz CPU, modern graphics card (GeForce 3 at minimum), 512 MB RAM
- Tools used: Visual Studio, g++, CppDoc, COLLADA, Debugging and Profiling tools included
- OpenGL-based rendering engine with shaders
- Hierarchal skeletal animation and deformation system based on COLLADA
- Fancy animated water with refraction, reflection
- Realistic shadows
- Particle effects
- Environmental lighting effects (time of day, sunset)
- Flexible terrain renderer that uses alpha maps to seamlessly blend terrain
- Unique civilizations: In 0 A.D. each civilization will be unique in its appearance, units, structures, and technology trees.
- Citizen soldiers: There will be no standard villager unit. Instead, regular infantry and cavalry have not only military capabilities, but also economic, making them substantially more versatile than in typical RTS games.
- Unit auto-upgrading: Citizen Soldiers will gain experience and automatically gain promotions. With each rank, they become stronger, and don a unique appearance but also get gradually worse at civilian tasks.
- Units on structures and ships: Gone are the days of units disappearing into buildings and transport ships. Some garrisoned units will be visible on the battlements of structures or the decks of ships, and capable of firing on opponents at range.
- Realistic naval warfare: No more tiny ships sinking other ships with arrows. Ship gameplay will include a variety of new features in RTS games, like much larger ship sizes, ship capture, sea rams, and a modular design that allows catapults to be stationed on the decks, and units to fire from the bows.
- Choices, choices, and more choices: Technology trees branch out in a pair-based hierarchy. For example, when you are given the option of techs 1A and 1B and you choose 1A to research, 1B is no longer available. Some of the techs that are higher up on the tech ladder will require that tech 1A is done, while others will require tech 1B. This adds a level of strategy and 'randomness' to picking your techs, as availability of higher level techs will depend on your choices earlier in the game. Similar choices are available with unit formations and battle tactics.
- Provinces and territories: In some game types, the map is subdivided into provinces that must be captured and annexed into a player's territory in order to reap their valuable resources and construct forward bases in these areas. If the host wishes, a player's starting province can also be surrounded by attrition borders to reduce early rushes.
- Real world map realism: Random maps are based upon geographical regions where the civilizations of the ancient world lived. These will be generated with biome specific-to-location features that replicate the look and feel of the world as it existed 2,000 years ago: flora, fauna and terrain.
Sounds like something that would be hard to compile, doesn't it? All those third party libraries, etc? And I mentioned something about Visual Studio?
This page describes how to get the very latest unstable version of the code. Unless you want to actively follow and contribute to development, you probably want the latest relatively-stable release instead.
The current release of the game is aimed at developers and not at 'normal' users. As such, the following instructions assume a reasonable level of technical proficiency. If you encounter difficulties, please post on the forum.
General prerequisites ¶
- An adequately high-spec computer - several gigabytes of free disk space, preferably at least 1GB of RAM for compiling, a fast CPU unless you want to spend ages waiting for the compiler, etc. Modern graphics hardware is also recommended, though the game can run (slowly) on fairly old devices (GeForce 4, Intel 945GM, etc).
- Up-to-date system software (Windows service packs, graphics driver updates, etc).
- Some technical proficiency. We try to make the build process as smooth and painless as possible, but it's designed to be followed by programmers - if you just want to play the game, wait for a pre-packaged installer instead.
Windows 7, Vista and XP are the main supported versions; 2000 should work too but is rarely tested. Visual C++ 2010 and 2008 are supported. Visual C++ 2005 may also work given a sufficiently modern Platform SDK. Only 32-bit builds are supported (though they can be compiled and run on 64-bit Windows). We have noticed occasional trouble with the free Express Editions; if possible, please consider acquiring the full version (e.g. via university programs). In particular, failures of the built-in self-test test_wdbg_sym.h seem to occur with VC2008 EE but not VC2008 nor VC2010 (c.f. #884).
Acquiring the code ¶
The game's code, data and build environment are stored on a Subversion server. The recommended way to get an up-to-date copy is with TortoiseSVN:
- Download and install TortoiseSVN. (Make sure you reboot when it asks you to.)
- Use TortoiseSVN to check out http://svn.wildfiregames.com/public/ps/trunk/. This may take a while, and will use around 1.2GB of disk space. If there are errors during the checkout, use TortoiseSVN's "update" to resume downloading.
(This is the read-only public SVN URL. If you have commit access, you need to use http://svn.wildfiregames.com/svn/ps/trunk/ instead.)
Setting up the build environment ¶
The game must be compiled with Microsoft Visual C++. If you already have Visual C++ 2005 or 2008 installed, make sure you have SP1 and then continue. Otherwise, you can get the free Express edition:
- Visual C++ 2010 Express Edition is recommended.
- Or download and install Visual C++ 2008 Express Edition.
- If you have the old VC++ 2005 Express, you need to install the separate Platform SDK (steps 1-3).
The Visual Studio project/solution files are automatically generated from the source files:
- Run build/workspaces/update-workspaces.bat.
- Open build/workspaces/vc2010/pyrogenesis.sln. (Use the vc2005 directory for VC++ 2005 or the vc2008 directory for VC++ 2008.)
So get the source from the SVN repository, run one batch file and launch the solution. Yep, it's really that easy.
Now the repository/source is huge (the installable version you can also download is 275MB, so you can image the size of source and assets... which is 3.16GB, which includes the post compile/build binaries) so it will take a while to grab it. But once you do, you should be able to build and run it in the debugger. (Well, at least I was...
Here's a WinDirStat snap of my tree, which is in a post build/compile state;
So you get this pretty awesome RTS, you get the source and you get everything to build it too.
Here's a snap of the Solution;
The code is smartly commented (i.e. intent is commented and not just the code re-worded)
If you've always wished you could work on a big game, you love the idea of helping out in build an RTS or just wonder what the source of one would look like, this project is looking for you...