Changes between Version 7 and Version 8 of Finding_Your_Way_Around


Ignore:
Timestamp:
2011-09-01 10:23:21 (21 months ago)
Author:
quantumstate
Comment:

Added extra description for how to open the console for non US keyboards

Legend:

Unmodified
Added
Removed
Modified
  • Finding_Your_Way_Around

    v7 v8  
    11= Getting the source = 
    2  
    3 All the files used in Pyrogenesis and game data are all stored via version control. For anyone not familiar with version control, it's a system that keeps us all up to date and allows us to work together (even work on the same file) by keeping track of multiple versions of a shared file.  
     2All the files used in Pyrogenesis and game data are all stored via version control. For anyone not familiar with version control, it's a system that keeps us all up to date and allows us to work together (even work on the same file) by keeping track of multiple versions of a shared file. 
    43 
    54It keeps track of all changes and provides a more powerful alternative to keeping backup files by storing every version put back in. This allows us to undo any mistakes. To use source control we need to download a client such as: 
     
    1312 
    1413= Finding your way around = 
    15  
    1614There are 4 main directories in the repository: 
    1715 
    18  * Source    : The source code for the main game and tools, as you would expect.  
     16 * Source    : The source code for the main game and tools, as you would expect. 
    1917 * Build     : Tools and workspaces required to build the source. 
    2018 * Binaries  : This contains a working game exe, DLLs and Tools. 
     
    2422 
    2523== binaries == 
    26  
    2724This is where everything that will eventually be released to the end user ends up. This is the only part that an artist or designer needs. It contains all the tools, data and of course the main game exe. This is where the any executables are compiled to. 
    2825 
     
    5148        and relevant DLLs 
    5249}}} 
    53  
    5450== build == 
    55  
    56 This is where the workspaces are generated so we can start work. 
    57 This is done by going into the workspace directory and running the update-workspaces.bat file. This then creates all Visual Studio workspaces for VC2005 and VC2008. So depending on which editor your using enter the relevant directory and a workspace will have been created for your editor. 
     51This is where the workspaces are generated so we can start work. This is done by going into the workspace directory and running the update-workspaces.bat file. This then creates all Visual Studio workspaces for VC2005 and VC2008. So depending on which editor your using enter the relevant directory and a workspace will have been created for your editor. 
    5852 
    5953{{{ 
     
    7670    since the entire file is considered modified) 
    7771}}} 
    78  
    7972== libraries == 
    80  
    81 These are the third-party libraries currently stored in the repository; they are not necessarily used in the final game. 
    82 Here are some descriptions of the libraries and where it can be downloaded from. 
     73These are the third-party libraries currently stored in the repository; they are not necessarily used in the final game. Here are some descriptions of the libraries and where it can be downloaded from. 
    8374 
    8475{{{ 
     
    9889    More info : http://www.mozilla.org/js/spidermonkey/ 
    9990}}} 
    100  
    10191{{{ 
    10292  OpenAL         
     
    10696    More info : http://www.openal.org/ 
    10797}}} 
    108  
    10998{{{ 
    11099  Vorbis         
     
    114103    More info :  http://www.vorbis.com/ 
    115104}}} 
    116  
    117105{{{ 
    118106  Boost 
     
    121109    More info :  http://www.boost.org/ 
    122110}}} 
    123  
    124111{{{ 
    125112  Xerces 
     
    132119    More info : http://xml.apache.org/ 
    133120}}} 
    134  
    135121{{{ 
    136122  OpenGL 
     
    141127    More info : http://www.opengl.org/ 
    142128}}} 
    143  
    144129{{{ 
    145130  SDL 
     
    148133    More info : http://www.libsdl.org/  
    149134}}} 
    150  
    151 ''Other Libs'' 
    152 [description minimal because they are mostly self-explanatory] 
     135''Other Libs'' [description minimal because they are mostly self-explanatory] 
     136 
    153137 * libjpg: Jpeg Reader 
    154138 * libpng: Png Reader (portable nework graphics) graphic format 
    155  * Zlib:        Zip archive Reader. 
     139 * Zlib:        Zip archive Reader. 
    156140 * Dbghelp: Microsoft's debug support functions. 
    157  * Misc:        Contains the OGL extensions. 
     141 * Misc:        Contains the OGL extensions. 
    158142 * DirectX: minimal part of SDK needed to compile (used by wsdl) 
    159143 
    160144== source == 
    161  
    162145The source can be broken down into the following sub directories 
    163146 
     
    165148 * Collada:             Libraries for converting Collada digital assets to 0AD formats 
    166149 * Engine:              Math code, OpenAL sound stuff and other support code like profilers and hardware support. 
    167  * Graphics:            Engine 3D Graphics (Cameras, Meshes, Particles, Shaders, etc.) 
    168  * Gui:                 Graphic user Interface (2D stuff for creating dialog boxes, text, buttons and other similar stuff) 
     150 * Graphics:                Engine 3D Graphics (Cameras, Meshes, Particles, Shaders, etc.) 
     151 * Gui:                        Graphic user Interface (2D stuff for creating dialog boxes, text, buttons and other similar stuff) 
    169152 * Lowlevel:            Low level code that gives the engine some common functionality in different OS's 
    170153 * Network:             Code that manages network connectiviity between peers for multi-user games. 
    171154 * Pyrogenesis:         "Main" for the game.  The game executable is called pyrogenesis.exe 
    172  * Scriptinginterface:  Scripting Engine 
    173  * Simulation2:         Game Simulation main work (Pathing, Motion, Command processing, Player Management, etc.) 
     155 * Scriptinginterface:        Scripting Engine 
     156 * Simulation2:                Game Simulation main work (Pathing, Motion, Command processing, Player Management, etc.) 
    174157 
    175158= Tools = 
    176159These are separate stand alone tools not part of the main code. These are used to build the project files into something useable by the engine, these can be then placed in the binaries\mods directory 
    177  * Ape:                 Tool for Building particle systems 
    178  * Arch Builder:        Builds Archived Project 
    179  * Auto Builder:        Build Project 
    180  * Font Builder:        Builds Font Texture 
    181  * I18n:                Language Importing. 
    182  * pmdexp:              Export Meshes to PMD format 
    183  * !ScEd:               Scenario Editor 
    184  * textureconv:         Texture Conversion to DDS format 
     160 
     161 * Ape:                        Tool for Building particle systems 
     162 * Arch Builder:        Builds Archived Project 
     163 * Auto Builder:        Build Project 
     164 * Font Builder:        Builds Font Texture 
     165 * I18n:                Language Importing. 
     166 * pmdexp:                Export Meshes to PMD format 
     167 * !ScEd:                Scenario Editor 
     168 * textureconv:                Texture Conversion to DDS format 
    185169 
    186170= Main Classes = 
    187  
    188171== CWorld == 
    189172- Owns the map and all entities 
     
    202185 
    203186== CPlayer == 
    204 Represents a player. Either human or computer, local or networked.  
     187Represents a player. Either human or computer, local or networked. 
    205188 
    206189- Containing player-specific information such as name, score, color etc. 
     
    211194 
    212195== CGame == 
    213 The CGame is the representation of the game itself. 
    214 It is the container that holds the rules, resources and attributes of the game. 
     196The CGame is the representation of the game itself. It is the container that holds the rules, resources and attributes of the game. 
    215197 
    216198== CSessionManager == 
     
    218200 
    219201== Graphics == 
    220  
    221202=== CRender: === 
    222 This is the class that maintains lists of objects to be rendered, and handles all the OGL calls to display them, etc.  
     203This is the class that maintains lists of objects to be rendered, and handles all the OGL calls to display them, etc. 
     204 
    223205=== IRenderableObject: === 
    224206Base class for renderable objects. 
     207 
    225208==== CTerrain: ==== 
    226209Terrain heightmap and rendering functions. 
     210 
    227211==== CModel: ==== 
    228212Animated model, made out of multiple meshes and joints. 
     213 
    229214==== CMesh: ==== 
    230215Mesh class to hold geometry, normals and textures. 
     216 
    231217==== CParticleSystem: ==== 
    232218A single particle system. 
     219 
    233220==== CSprite: ==== 
    234 Sprites can be any size, and may be composed of multiple textures.  
     221Sprites can be any size, and may be composed of multiple textures. 
     222 
    235223=== CParticleManager: === 
    236 Manager class for all the particle systems.  
     224Manager class for all the particle systems. 
     225 
    237226=== CTexture: === 
    238 A texture as represented in OpenGL. Width and height are powers of 2.  
     227A texture as represented in OpenGL. Width and height are powers of 2. 
     228 
    239229=== CCamera: === 
    240 Simple class to encapsulate camera.  
     230Simple class to encapsulate camera. 
     231 
    241232=== CImageLoader: === 
    242 Loads various formats (PNG, JPG, BMP, TGA, etc).  
     233Loads various formats (PNG, JPG, BMP, TGA, etc). 
     234 
    243235=== CLight: === 
    244 Directional lights, just specify a color and direction.  
     236Directional lights, just specify a color and direction. 
     237 
    245238=== CMaterial: === 
    246 Set material properties for meshes.  
     239Set material properties for meshes. 
     240 
    247241=== CSelection: === 
    248 Get the index of the object which is selected when the user clicks on a point on the screen.  
     242Get the index of the object which is selected when the user clicks on a point on the screen. 
     243 
    249244=== CFont: === 
    250245Holds the description of a font, and used by renderer for outputting text. 
    251   
     246 
    252247= Useful Features for Testing = 
    253  
    254248== Starting the Game in a Window == 
    255  
    256249Edit the binaries/config/system.cfg file and modify the "windowed" property to true. You can also modify "xres" and "yres" to change the window size. 
    257250 
    258251== Using the Console == 
    259  
    260 Press the ~ key to toggle the console. This allows you to view various debug output that has been written by scripts using console.write or from C++ using Console->!InsertMessage. It also lets you enter !JavaScript expressions to be evaluated. To do this, start a like with ":" to run an expression, or "?" to run it and print the output. For example, `:new Entity("hele_infantry_spearman_b", new Vector3D(0,0,0))` will create a Hoplite at the left corner of the map, and `?1+1` will write 2. One useful variable is `selection`, the array of currently selected units. For example, type `:selection[0].actions.attack.melee.damage *= 2` to double the selected unit's attack. One useful function is `startPlacing(type)`, which will create a cursor for placing a unit of the given type. You can find most of the available functions in !ScriptGlue.cpp. You are also free to use variables, loops, etc in the console. 
     252Press the ~ key (top left key (` for UK)) to toggle the console. This allows you to view various debug output that has been written by scripts using console.write or from C++ using Console->!InsertMessage. It also lets you enter !JavaScript expressions to be evaluated. To do this, start a like with ":" to run an expression, or "?" to run it and print the output. For example, `:new Entity("hele_infantry_spearman_b", new Vector3D(0,0,0))` will create a Hoplite at the left corner of the map, and `?1+1` will write 2. One useful variable is `selection`, the array of currently selected units. For example, type `:selection[0].actions.attack.melee.damage *= 2` to double the selected unit's attack. One useful function is `startPlacing(type)`, which will create a cursor for placing a unit of the given type. You can find most of the available functions in !ScriptGlue.cpp. You are also free to use variables, loops, etc in the console. 
    261253 
    262254== Logging and Debugging Functions == 
    263  
    264255debug_printf is a handy method for writing text to the IDE's output window from code. Its syntax is identical to printf. Note that it can be rather slow and may thus affect the timing of a routine being debugged. 
    265256