<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki.lostsouls.org/w/skins/common/feed.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Man projects - Revision history</title>
		<link>http://wiki.lostsouls.org/w/index.php?title=Man_projects&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.8.2</generator>
		<lastBuildDate>Mon, 04 May 2026 10:38:49 GMT</lastBuildDate>
		<item>
			<title>Laine at 22:59, 11 June 2007</title>
			<link>http://wiki.lostsouls.org/w/index.php?title=Man_projects&amp;diff=4008&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
The following is a standard for directory organization and master header&lt;br /&gt;
file use in MUD projects, a term inclusive of areas, affiliations, and any&lt;br /&gt;
other content.  Its use is required for all new projects.  Its primary goals&lt;br /&gt;
are increased project maintainability and interoperability.&lt;br /&gt;
&lt;br /&gt;
The top directory name of the project is its name, capitalized, with spaces&lt;br /&gt;
replaced by underscores.  Examples: /d/Tenochlan/Shadow_Tower, /d/Almeria/Lem,&lt;br /&gt;
/d/Affiliations/Guilds/Justicars_of_Tyr.&lt;br /&gt;
&lt;br /&gt;
The project has a corresponding .h header file (Shadow_Tower.h, Lem.h,&lt;br /&gt;
Justicars_of_Tyr.h) that contains standard macros for project files; this&lt;br /&gt;
is placed in the domain's lib directory (/d/Tenochlan/lib, /d/Almeria/lib,&lt;br /&gt;
/d/Affiliations/lib) so that it may be included with a simple #include&lt;br /&gt;
&amp;lt;Project.h&amp;gt; statement.  Examine examples of these files.&lt;br /&gt;
&lt;br /&gt;
Each file contains a list of standard macros which may vary slightly by&lt;br /&gt;
the type of project.  The names of these macros are detailed below.  The file&lt;br /&gt;
may also contain project-specific macros for ease of coding.  These macros&lt;br /&gt;
must stay within the &amp;quot;project namespace&amp;quot;; i.e. they must be of the form&lt;br /&gt;
Project_Macro, not merely Macro.  For some projects an &amp;quot;abbreviated namespace&amp;quot;&lt;br /&gt;
is also appropriate; Justicars_of_Tyr.h may contain macros of the form&lt;br /&gt;
Justicar_Macro in addition of Justicars_of_Tyr_Macro.&lt;br /&gt;
&lt;br /&gt;
If the project name contains a character which cannot be used in a macro,&lt;br /&gt;
such as an apostrophe or hyphen, replace the unusable character with an&lt;br /&gt;
underscore in the macros only, not the files or directories.  For example,&lt;br /&gt;
the file R'lyeh.h, controlling an area located in /d/Almeria/R'lyeh, contains&lt;br /&gt;
macros of the form R_lyeh_Macro.&lt;br /&gt;
&lt;br /&gt;
The name of the project is a macro defining its top directory; this macro&lt;br /&gt;
is placed in the relevant &amp;quot;master&amp;quot; file, normally the domain's header file.&lt;br /&gt;
So the macro Lem is defined in Almeria.h.  Sub-projects of other projects are&lt;br /&gt;
defined in their parent project's header file; the area Terrace, located in&lt;br /&gt;
/d/Exoma/Barsaive/Terrace, is a sub-area of Barsaive, so the macro Terrace is&lt;br /&gt;
defined in Barsaive.h, while Barsaive is defined in the Exoma.h.&lt;br /&gt;
&lt;br /&gt;
Individual files should be placed as follows:&lt;br /&gt;
&lt;br /&gt;
    Type        Directory                       Macro&lt;br /&gt;
&lt;br /&gt;
    Armour      /d/Domain/Project/arm           Project_Armour()&lt;br /&gt;
    Comestibles /d/Domain/Project/f&amp;amp;d           Project_Comestible()&lt;br /&gt;
    Daemons     /d/Domain/Project/dmn           Project_Daemon()&lt;br /&gt;
        The project control daemon, control.c, is expected to be found in&lt;br /&gt;
        this directory.  All objects in this directory will automatically&lt;br /&gt;
        be preloaded.&lt;br /&gt;
    Data files  /d/Domain/Project/dat           Project_Data()&lt;br /&gt;
        Object save files, map configuration files, other data files.&lt;br /&gt;
    Definitions /d/Domain/Project/def           Project_Definition()&lt;br /&gt;
        Definition objects (set, show, start, stop, and channel definitions).&lt;br /&gt;
        All objects in this directory will automatically be preloaded.&lt;br /&gt;
    Extensions  /d/Domain/Project/ext           Project_Extension()&lt;br /&gt;
        Extension objects (c.f. 'man extensions').&lt;br /&gt;
    Help files  /d/Domain/Project/hlp           Project_Help()&lt;br /&gt;
        Help files; primarily used for affiliations to explain the philosophy,&lt;br /&gt;
        benefits, drawbacks and powers of the group.&lt;br /&gt;
    Miscellany  /d/Domain/Project/etc           Project_Misc()&lt;br /&gt;
        Objects which do not fall under these categories.  Items commonly&lt;br /&gt;
        found here include doors, /std/quest objects, treasures, and so on.&lt;br /&gt;
    Modules     /d/Domain/Project/mod           Project_Module()&lt;br /&gt;
        Code modules intended to be inherited into disparate locations and not&lt;br /&gt;
        necessarily suitable for placement in a true base class.&lt;br /&gt;
    Monsters    /d/Domain/Project/mon           Project_Monster()&lt;br /&gt;
        &amp;quot;Monster&amp;quot; is defined as autonomon.c inheritors which are cloned, i.e.&lt;br /&gt;
        of which more than one exists.&lt;br /&gt;
    NPCs        /d/Domain/Project/npc           Project_NPC()&lt;br /&gt;
        &amp;quot;NPC&amp;quot; is defined as autonomon.c inheritors which are loaded rather&lt;br /&gt;
        than cloned, i.e. of which only one exists.&lt;br /&gt;
    Rooms       /d/Domain/Project/rms           Project_Room()&lt;br /&gt;
        Areas should have a base room file, Base.c, which all rooms in the&lt;br /&gt;
        area inherit; it should in turn inherit your domain's base file.  The&lt;br /&gt;
        use of additional base-class room files for specific terrains and so&lt;br /&gt;
        forth within the area is common.&lt;br /&gt;
    Text        /d/Domain/Project/txt           Project_Text()&lt;br /&gt;
        General text files: some log files (more often logging is done to&lt;br /&gt;
        /txt/log/dev), QC comments, area history files containing background,&lt;br /&gt;
        reason for being and basic map, and quest walk-through files that&lt;br /&gt;
        sufficiently explain how to complete the quest.&lt;br /&gt;
    Weapons     /d/Domain/Project/wpn           Project_Weapon()&lt;br /&gt;
&lt;br /&gt;
A three-letter directory naming method is maintained for aesthetic reasons&lt;br /&gt;
and to keep filenames shorter.&lt;/div&gt;</description>
			<pubDate>Mon, 11 Jun 2007 22:59:04 GMT</pubDate>			<dc:creator>Laine</dc:creator>			<comments>http://wiki.lostsouls.org/Talk:Man_projects</comments>		</item>
	</channel>
</rss>