**This is an old revision of the document!** ----
===== Locations of Things ===== Assets will exist in two locations: the GIT repository, and Dropbox / other. The GIT repository should ONLY contain game code and completed, game-ready, importable assets. This is the actual directory that will be built to a final game. All other art assets, audio, and likewise should be shared via Dropbox, email, or other means. ===== Directory Structure ===== The directory structure of our GIT repository is as follows: * Build - the built game executables and intermediate link data. * Client - the game files themselves. *this is the important one* * Assets - the folder containing the actual assets * Universal - contains assets that are the same on all platforms * Art - art used in all places * 2DTK - sprites and data managed by the 2DTK asset system * Shared - materials and textures shared across the project * Materials - textures and materials that use them * Meshes * Splash - icons and splash screens * Audio * FX * Music * Code - this is code that's used in several places * Core - general-purpose code used across several projects. Code placed here should be agnostic * Game - code specific to this game * Lib - code written by other people, generally shouldn't be changed * TK2DROOT - do not touch! This is the backbone of our entire asset management system * Entities - this folder contains things for **entities**, which are "things that exist in the game. Examples of entities would include "girl", "tree", "rock", "sun", "GUI menu", etc. Each Entity gets its own folder within the Entities folder, and within that folder is another directory tree for everything used in that entity. The structure of this directory mimics that of the parent directory (contains Art, Audio, Code, Misc, Models, and Prefabs). **//The reason for placing entity assets in their own folder together is to keep everything in context, making our lives easier (hopefully)//** * [example] * Art * Audio * Code * Misc * Models * Prefabs * Fonts * Plugins * Prefabs * Scenes - these are the actual scene and level files you edit within Unity (Scene.unity is the default) * Scripts - "scripts" are different from "code" in that they do a single, very simple thing just once (roll a thing down a hill, activate a door, etc.). Scripts, ideally, will be editable by a savvy "designer" * PerPlatform - contains assets that change on each platform. **Note:** the structure here should be identical to Universal. So if the material for the game's icon is in Universal/Art/Shared/Icon, then the down-rezzed mobile version might be in PerPlatform/Art/Shared/Icon. For more info, see GIT and PerPlatform, below * Resources - data used by various plugins - do not touch * Library - contains intermediate files for your local machine. Do NOT share * ProjectSettings - Contains metadata used by Unity. DO share * Temp - do not share * Tools - not used as such * Work - not used as such ===== Entities ===== We will be using Entities in this game. For the purposes of the game, an entity is defined as: "A thing that has its own properties, art, behavior, and design, and can be replicated, instanced, or referenced." Examples would include: * A bat * An arrow * The girl * A tree which can be duplicated and re-used * A flowing river * The sun * A menu Each entity has its own ID, and each entity has its own folder within the /Client/Assets/Entities folder So, if the girl has the entity ID of player_girl, its folder would be /Assets/Entities/player_girl. Within an Entity's folder is a subdirectory of all its data: entity_id/Art - all 2D art NOT used as a texture entity_id/Audio - sounds it makes entity_id/Code - scripted or coded behaviors it has entity_id/Models - the meshes, the materials, and the textures go in here entity_id/Misc - other things it needs to function (who knows what these are... oh well?) entity_id/Prefabs - if the entity has any prefabs, they should go here Any readme.txts on the entity should go in the root folder (entity_id/) We should do it this way, because it's intuitive to think of things in context. Having a folder with hundreds of script files, sorted by function, is fun, but it's really not using Unity's file manager to full advantage.