Destiny Project

Directory Structure Specification

General Specifications for Directory Names

Directory names shall be composed of whole words, not separated by spaces, with the initial character of each word capitalized and subsequent characters in each word in lower case. The use of abbreviations shall be avoided, but not prohibited. Punctuation shall not be used in directory names. It follows that directory names should be single words or single phrases. Directory names shall not exceed 30 characters. These restrictions are principally consequences of our desire to have readable and meaningful directory names while satisfying the constraints imposed by the FTP programs we are currently using to share data.


The directory structure specified by this document is intended to hold data directly related to the Destiny Engine, related test drivers, and programming or game specification tools (such as the map editor). It is not intended as a repository for material properly belonging to any particular game application generated by or for the Destiny Engine.

Top Level Directory

The top level directory for shared source at the web site is /webdocs/Projects/Destiny/contrib. It is recommended that the top level directory on local systems used by individual contributors be named "Destiny Project", and that it be directly dependent from the root directory of whatever storage medium is used to contain the directory structure. The top level directory need not conform to the general specifications for directory names (above), and the storage medium name is expressly left unspecified by this specification.

Second-Level Directories

Second level directories shall be established for each of two organizational categories: subproject areas for specific aspects of the project which are deemed to be separable projects and common areas for generally useful data which is common to several subproject areas.

Common Areas

Second-level directories shall be established for at least the following common areas:


Contains artwork for the project. This includes icons, button bitmaps, texture patterns used by the map display, and larger artwork such as the "dragon in the castle doorway" drawing used for about boxes.


Contains source for classes which are generally useful in several project areas such as the graph, generic quantity, and expression classes. The directory shall contain a subdirectory named "TestPrograms" which shall contain test drivers for the common classes.


Contains project documentation files, including design documents, specifications, and general maundering on just about any project-related subject.


Contains include files germane to the development and/or execution environment. The include file "general.h" contains general definitions and typedefs (such as uint for unsigned int). The include file "sitedefs.h" file contains definitions which may be tailored for a specific development or execution environment (such as the character used to delimit directory names in a file path specification).

Subproject Areas

Directories for subproject areas contain source code and data for specific areas or functions of the Destiny Engine. Subproject areas may in turn contain subprojects. A game development tool (such as the Game Map Editor) shall be given its own subproject directory under the Destiny Engine subproject to which it relates.

TestPrograms and TestData

In general, when a subproject directory contains source code, it shall also contain a directory named "TestPrograms" to contain the source for any related test drivers and a directory named "TestData" to contain data sets used for testing. As a rule, if a test program or test data set is not intended to be incorporated into the Destiny Engine itself (or any of its associated game development tools), then it should be located in the appropriate test directory. If the program or data is intended to be incorporated into the Destiny Engine or tools (such as the lookup table used to color elevation in the elevation pane of the Game Map Editor), then it should be located in the normal source directory for the subproject with which it is associated.


Any directory may also have a subdirectory named "Obsolete" for use in containing data which is no longer part of the project, but is desired to be retained for the ideas or formats embodied therein. If appropriate, this directory may contain entire subprojects that have been discarded along the development path.

Example Directory Structure

4 April 1998

Revised 9 December 1999

Back to the Destiny documents