Version 8 (modified by Jan Wassenberg, 17 years ago) ( diff )

add GPL explanation

Jason Bishop Jan Wassenberg

== Introduction ==

Wildfire Games (WFG) is a group of hobbyist game developers in the process of producing a freeware real-time strategy (RTS) game. The name of this project is 0 A.D. (``zero ey-dee"). 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.

Our game engine, called Pyrogenesis, is specifically designed for flexibility and ease of modification. Game logic, artwork and data can easily be changed through data files. The engine itself is designed to provide maximal flexibility while while remaining efficient. Pyrogenesis therefore provides a solid platform on which to work on individual features of RTS games, and can be used to create a completely different game from 0 A.D. Wildfire Games is actually developing a second project based on the Pyrogenesis engine in parallel - a Lord of the Rings-based game called The Last Alliance.

0 A.D. has been in development for five years. The team members are largely students and game development hobbyists. The game has always been intended to be released as freeware and available to all, and none of the participants have been or will be compensated financially for the contributions they have made. The reward for us is the experience we have gained and the pleasure of creating a game RTS enthusiasts like us have been waiting for.

Wildfire Games is now creating a new branch of development. As students ourselves, we are aware that working on interesting problems in an academic setting is often difficult due to lack of access to a complete real-world system. Therefore, Wildfire Games would like to offer the source code of 0 A.D. to universities under an open-source license, as a means of enabling coursework, theses and research based on problems in game development. In return, we would benefit from the contributions of students and researchers that are experts in their fields.

== Pyrogenesis Features ==

The Pyrogenesis Engine was built from the ground up by WFG programmers. Its open-ended architecture can accommodate real-time strategy (RTS) and third-person role-playing game (RPG) game types. 

A brief feature list of the Pyrogenesis Engine follows:

TECHNICAL
- Engine Language: C++
- Scripting Language: Javascript
- Data files: XML (with transparent and automatic conversion to binary files) 
- 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
    * Linux
    * MacOSX (in progress)
- System Requirements:
    1 GHz CPU, modern graphics card (GeForce 3 at minimum), 512 MB RAM
- Tools used:
    - Visual Studio, g++, !CppDoc, COLLADA

GRAPHICS
- 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

AI
- A* pathfinding
- Designed to support "RTS style" AI (workers, NPCs)

MULTIPLAYER NETWORKING
- Peer to peer, no central server
- Lockstep simulation
(planned: reliable UDP for firewall punchthrough, detection of cheating/OOS)

LEVEL EDITOR
- Includes a level editor (Atlas) integrated with the Pyrogenesis engine.
- The editor uses the same rendering engine as the game itself.
- Deform terrain in real-time and sculpt intricate landscapes quickly and intuitively.
- Create a level and try it out in the editor immediately.
- Includes an Actor Editor that has a GUI interface to assist in defining the entities visually in the game.
- Includes a Random Map Generator and custom scripting languge
- A sound tool allows defining sound properties.

MODS
- Aspects of the game can be tweaked with tools or by modifying XML and Javascript files to totally change the game.
- Easily modify content (units, buildings, the tech tree, ..) without touching any C++ code.
- Console command panel
- The game code is separate from the core engine.
- Uses open, standard file formats: COLLADA 3D assets, Zip archives

SUPPORT
- Access to extensive documenation
- Well-commented code
- WFG developers just an email away

== Why? ==

Why should you as a student or a professor be interested in using Pyrogenesis?

- The game itself is visually attractive as delivered. Instead of the all too frequent ``programmer's art", you have quality artwork at your fingertips that allows showing your project in its best light.
- WFG has taken great pains to emphasize history through out development stressing authenticity and accuracy; always remembering the educational opportunity we have in games.
- The software is portable (works on Linux and Windows, MacOSX coming soon).
- The code and design are well documented (comments, !CppDoc documentation, Wiki,
  some full technical reports, reams of forum posts with rationale and discussion).
- We willing to go open source.
- The project is made up of gamers / people looking to get into the industry;
  a good deal of experience in this area has been gained and can be passed on.

== Licensing ==

For the source code, we suggest a common open-source license such as the GPL. The artwork would be made available for academic and non-commercial use (this is to prevent unscrupulous people from selling the finished product).

The GPL is oft misunderstood, so a brief summary follows.
You are allowed to access and use source code placed under GPL after you accept the GPL license. No restrictions or obligations are placed on you, with one exception: As soon as you make a binary release of a program containing GPL-ed code, you must thereafter license all of the code constituting it under the GPL.
As a concrete example, three use-cases are discussed.
1) You use GPL-ed source code to generate screenshots of an interesting graphical effect. As long as you do not publically release a compiled version of the program, you are under no obligation to place the source code under GPL. This means that the modifications you have made to the code can remain your property and secret, though we would appreciate seeing your changes so that 0 A.D. may be improved to the benefit of all.
2) You compile an unmodified version of the game source code and release it to the public (e.g. to act as a mirror). The GPL then requires you to also release the source code, or to provide a written offer promising to make the code available to anyone who asks.
3) You make changes to the initial GPL-ed code and wish to also distribute a compiled demo to the public. Note that the GPL is not concerned with any modifications you may make to code; this act is not restricted in any way. The only obligation you are under is to also place the entire source code that generated the demo under GPL, i.e. make it available to the public. This means that the next person who downloads your demo can further tweak it, and ensures he has the same chance you had to modify the source code.

== FAQ ==

When can this get started?
We need to make arrangements for efficiently distributing the data files and would like to finish the second revision of the network code. However, we are in principle available for collaborative work starting now.

What is WFG's angle?
Two of our programmers have had the pleasure of being able to work on parts of 0 A.D. within the scope of a course project. This yielded attractive results because the new work could be shown in the context of a full game and also advanced the project's development. Having seen the success of this approach, we would like to extend the same chance to interested students and hopefully integrate new developments into the public version of the game.

Note: See TracWiki for help on using the wiki.