Changes between Version 7 and Version 8 of Finding_Your_Way_Around


Ignore:
Timestamp:
Sep 1, 2011, 12:23:21 PM (13 years ago)
Author:
Jonathan Waller
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