Changes between Version 7 and Version 8 of Finding_Your_Way_Around
- Timestamp:
- Sep 1, 2011, 12:23:21 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Finding_Your_Way_Around
v7 v8 1 1 = 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. 2 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. 4 3 5 4 It 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: … … 13 12 14 13 = Finding your way around = 15 16 14 There are 4 main directories in the repository: 17 15 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. 19 17 * Build : Tools and workspaces required to build the source. 20 18 * Binaries : This contains a working game exe, DLLs and Tools. … … 24 22 25 23 == binaries == 26 27 24 This 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. 28 25 … … 51 48 and relevant DLLs 52 49 }}} 53 54 50 == 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. 51 This 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. 58 52 59 53 {{{ … … 76 70 since the entire file is considered modified) 77 71 }}} 78 79 72 == 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. 73 These 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. 83 74 84 75 {{{ … … 98 89 More info : http://www.mozilla.org/js/spidermonkey/ 99 90 }}} 100 101 91 {{{ 102 92 OpenAL … … 106 96 More info : http://www.openal.org/ 107 97 }}} 108 109 98 {{{ 110 99 Vorbis … … 114 103 More info : http://www.vorbis.com/ 115 104 }}} 116 117 105 {{{ 118 106 Boost … … 121 109 More info : http://www.boost.org/ 122 110 }}} 123 124 111 {{{ 125 112 Xerces … … 132 119 More info : http://xml.apache.org/ 133 120 }}} 134 135 121 {{{ 136 122 OpenGL … … 141 127 More info : http://www.opengl.org/ 142 128 }}} 143 144 129 {{{ 145 130 SDL … … 148 133 More info : http://www.libsdl.org/ 149 134 }}} 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 153 137 * libjpg: Jpeg Reader 154 138 * libpng: Png Reader (portable nework graphics) graphic format 155 * Zlib: 139 * Zlib: Zip archive Reader. 156 140 * Dbghelp: Microsoft's debug support functions. 157 * Misc: 141 * Misc: Contains the OGL extensions. 158 142 * DirectX: minimal part of SDK needed to compile (used by wsdl) 159 143 160 144 == source == 161 162 145 The source can be broken down into the following sub directories 163 146 … … 165 148 * Collada: Libraries for converting Collada digital assets to 0AD formats 166 149 * Engine: Math code, OpenAL sound stuff and other support code like profilers and hardware support. 167 * Graphics: 168 * Gui: 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) 169 152 * Lowlevel: Low level code that gives the engine some common functionality in different OS's 170 153 * Network: Code that manages network connectiviity between peers for multi-user games. 171 154 * Pyrogenesis: "Main" for the game. The game executable is called pyrogenesis.exe 172 * Scriptinginterface: 173 * Simulation2: 155 * Scriptinginterface: Scripting Engine 156 * Simulation2: Game Simulation main work (Pathing, Motion, Command processing, Player Management, etc.) 174 157 175 158 = Tools = 176 159 These 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 185 169 186 170 = Main Classes = 187 188 171 == CWorld == 189 172 - Owns the map and all entities … … 202 185 203 186 == CPlayer == 204 Represents a player. Either human or computer, local or networked. 187 Represents a player. Either human or computer, local or networked. 205 188 206 189 - Containing player-specific information such as name, score, color etc. … … 211 194 212 195 == 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. 196 The CGame is the representation of the game itself. It is the container that holds the rules, resources and attributes of the game. 215 197 216 198 == CSessionManager == … … 218 200 219 201 == Graphics == 220 221 202 === CRender: === 222 This is the class that maintains lists of objects to be rendered, and handles all the OGL calls to display them, etc. 203 This is the class that maintains lists of objects to be rendered, and handles all the OGL calls to display them, etc. 204 223 205 === IRenderableObject: === 224 206 Base class for renderable objects. 207 225 208 ==== CTerrain: ==== 226 209 Terrain heightmap and rendering functions. 210 227 211 ==== CModel: ==== 228 212 Animated model, made out of multiple meshes and joints. 213 229 214 ==== CMesh: ==== 230 215 Mesh class to hold geometry, normals and textures. 216 231 217 ==== CParticleSystem: ==== 232 218 A single particle system. 219 233 220 ==== CSprite: ==== 234 Sprites can be any size, and may be composed of multiple textures. 221 Sprites can be any size, and may be composed of multiple textures. 222 235 223 === CParticleManager: === 236 Manager class for all the particle systems. 224 Manager class for all the particle systems. 225 237 226 === CTexture: === 238 A texture as represented in OpenGL. Width and height are powers of 2. 227 A texture as represented in OpenGL. Width and height are powers of 2. 228 239 229 === CCamera: === 240 Simple class to encapsulate camera. 230 Simple class to encapsulate camera. 231 241 232 === CImageLoader: === 242 Loads various formats (PNG, JPG, BMP, TGA, etc). 233 Loads various formats (PNG, JPG, BMP, TGA, etc). 234 243 235 === CLight: === 244 Directional lights, just specify a color and direction. 236 Directional lights, just specify a color and direction. 237 245 238 === CMaterial: === 246 Set material properties for meshes. 239 Set material properties for meshes. 240 247 241 === CSelection: === 248 Get the index of the object which is selected when the user clicks on a point on the screen. 242 Get the index of the object which is selected when the user clicks on a point on the screen. 243 249 244 === CFont: === 250 245 Holds the description of a font, and used by renderer for outputting text. 251 246 252 247 = Useful Features for Testing = 253 254 248 == Starting the Game in a Window == 255 256 249 Edit 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. 257 250 258 251 == 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. 252 Press 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. 261 253 262 254 == Logging and Debugging Functions == 263 264 255 debug_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. 265 256