Difference between revisions of "Source Code Reference"
From FreeSpace Wiki
(→Alphabetical View) |
|||
(19 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | == External Libraries == |
− | |||
− | + | FreeSpace 2 relies on the following libraries which are included in the source tree: | |
− | + | * jansson: JSON library | |
− | + | * libjpeg: JPEG library | |
− | * | + | * libpng: PNG library |
− | * | + | * lua: LUA Scripting language |
− | * | + | * mongoose: HTTP server library |
− | * | + | * oggvorbis: Ogg Vorbis sound library |
− | * | + | * openal: OpenAL sound library |
− | * | + | * zlib: ZIP compression library; necessary for libpng |
− | * | ||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | For information on each library, look in the respective README files. | |
− | + | == FreeSpace 2 Source Code == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | The root also contains the actual | + | The root also contains the actual FreeSpace 2 code, in the code/ directory. The FreeSpace 2 source code consists of several components, each of which is kept in a separate subdirectory. These components are listed below from different views. |
− | === Alphabetical | + | === Alphabetical View === |
− | * ai (Computer AI) | + | * [[Source ai|ai]] (Computer AI) |
* [[Source anim|anim]] (Displaying .ani animated bitmaps) | * [[Source anim|anim]] (Displaying .ani animated bitmaps) | ||
− | * asteroid (Handle asteroids - movement, collisions, creating smaller | + | * asteroid (Handle asteroids - movement, collisions, creating smaller asteroids when larger ones are blown up etc.) |
* autopilot (Handles autopilot control - where if there are no enemies, travelling a long distance etc. control is temporarily switched to the computer) | * autopilot (Handles autopilot control - where if there are no enemies, travelling a long distance etc. control is temporarily switched to the computer) | ||
* [[Source bmpman|bmpman]] (Manage 2d graphics files, such as .bmp, .tga, .jpg etc.) | * [[Source bmpman|bmpman]] (Manage 2d graphics files, such as .bmp, .tga, .jpg etc.) | ||
− | * camera (???) | + | * camera (used for ingame cutscenes ???) |
− | * cfile (File/directory management routines including .VP file handling that are OS independent | + | * cfile (File/directory management routines including .VP file handling that are OS independent e.g. handles differences between Linux & Windows) |
* cmdline (Handles command line switches, such as -mipmap etc.) | * cmdline (Handles command line switches, such as -mipmap etc.) | ||
* cmeasure (Handles countermeasures - flares that the player & AI can drop to disrupt missiles) | * cmeasure (Handles countermeasures - flares that the player & AI can drop to disrupt missiles) | ||
Line 59: | Line 39: | ||
* fireball (Displays & handles fireballs and warping effects) | * fireball (Displays & handles fireballs and warping effects) | ||
* freespace2 (Main code - handles engine initialisation, loading resources, plus windows resources like icons & dialog boxes) | * freespace2 (Main code - handles engine initialisation, loading resources, plus windows resources like icons & dialog boxes) | ||
− | * | + | * fs2netd (Game matchmaker network client code) |
* gamehelp (Displays context sensitive help text) | * gamehelp (Displays context sensitive help text) | ||
* gamesequence (Handles progression of events during a campaign, such as entering a mission, showing credits etc.) | * gamesequence (Handles progression of events during a campaign, such as entering a mission, showing credits etc.) | ||
Line 65: | Line 45: | ||
* globalincs (Basic global constants & definitions, eg. version, colours) | * globalincs (Basic global constants & definitions, eg. version, colours) | ||
* [[Source graphics|graphics]] (Low-level wrapper for all 2d & 3d graphics that handles different display engines (DirectX, OpenGL etc) | * [[Source graphics|graphics]] (Low-level wrapper for all 2d & 3d graphics that handles different display engines (DirectX, OpenGL etc) | ||
− | * hud (Handles the HUD - all the 2d cockpit graphics that the player can see | + | * hud (Handles the HUD - all the 2d cockpit graphics that the player can see e.g. radar, ammo, escort list, squad etc) |
− | * iff_defs (Handles | + | * iff_defs (Handles the iffs in [[iff_defs.tbl]], controlling what color they show up as and what iffs they attack) |
* io (Handles IO devices, such as keyboard, mouse & joystick) | * io (Handles IO devices, such as keyboard, mouse & joystick) | ||
* irc (Adds support for an IRC chat client) | * irc (Adds support for an IRC chat client) | ||
* [[Source jpgutils|jpgutils]] (Opens, reads JPG files) | * [[Source jpgutils|jpgutils]] (Opens, reads JPG files) | ||
* jumpnode (Displays & handles jump nodes) | * jumpnode (Displays & handles jump nodes) | ||
− | * lab ( | + | * lab (Responsible for WMCoolmon's F3 lab screen) |
* lighting (Handles light sources, and their effect on ships) | * lighting (Handles light sources, and their effect on ships) | ||
* localization (Handles a global string table for translating all written text into foreign languages) | * localization (Handles a global string table for translating all written text into foreign languages) | ||
* math (Library of math routines for handling vectors, splines etc) | * math (Library of math routines for handling vectors, splines etc) | ||
* menuui (Handles all the misc user interface, such as the main menu, tech room, campaign list etc) | * menuui (Handles all the misc user interface, such as the main menu, tech room, campaign list etc) | ||
− | * mission (Handles general mission actions | + | * mission (Handles general mission actions e.g. briefing, goals, training info, in-mission messages etc) |
* missionui (Handles UI for general mission actions) | * missionui (Handles UI for general mission actions) | ||
* mm (Headers for older MS Multimedia library) | * mm (Headers for older MS Multimedia library) | ||
− | * model (Displays and handles ship models | + | * model (Displays and handles ship models e.g. reading files, collision detection etc) |
* nebula (Displays and handles nebulae) | * nebula (Displays and handles nebulae) | ||
− | * network (All multi-player code, | + | * network (All multi-player code, e.g. UI, network traffic) |
* object (High-level code to handle all objects eg. ships, weapons, debris, asteroids, waypoints, fireballs, shockwaves) | * object (High-level code to handle all objects eg. ships, weapons, debris, asteroids, waypoints, fireballs, shockwaves) | ||
− | * observer ( | + | * observer (Responsible for the multiplayer observer mode) |
* osapi (Wraps low-level Operating System calls, for different OS, eg. multi-threads, windows event loops, main app window) | * osapi (Wraps low-level Operating System calls, for different OS, eg. multi-threads, windows event loops, main app window) | ||
+ | * padlock (Handles cockpit views with a simulated head tracking of targets relative to the ship) | ||
* palman (Handles bitmap palettes - different colour maps for the same 2d bitmap) | * palman (Handles bitmap palettes - different colour maps for the same 2d bitmap) | ||
* parse (Handles scripting files, eg. python, LUA etc) | * parse (Handles scripting files, eg. python, LUA etc) | ||
Line 91: | Line 72: | ||
* physics (Handles realistic physical behaviour of objects, such as ship acceleration/deceleration, rotation etc.) | * physics (Handles realistic physical behaviour of objects, such as ship acceleration/deceleration, rotation etc.) | ||
* playerman (Handles pilot files & player ship movement) | * playerman (Handles pilot files & player ship movement) | ||
− | * popup (Displays & handles 2d pop-up windows, | + | * popup (Displays & handles 2d pop-up windows, e.g. when the player dies) |
* radar (Displays & handles the radar) | * radar (Displays & handles the radar) | ||
* [[Source render|render]] (Low-level 3d rendering code for some primitives) | * [[Source render|render]] (Low-level 3d rendering code for some primitives) | ||
− | * ship (Displays & handles all ship code, | + | * ship (Displays & handles all ship code, e.g. shields, afterburner) |
− | * sound (Low-level sound, | + | * sound (Low-level sound, speech & music routines) |
* species_defs (Reads species_defs.tbl to handle different behaviour for different species) | * species_defs (Reads species_defs.tbl to handle different behaviour for different species) | ||
* starfield (Displays & handles background images such as starfields, nebulae etc) | * starfield (Displays & handles background images such as starfields, nebulae etc) | ||
* stats (Displays & handles player statistics, medals etc) | * stats (Displays & handles player statistics, medals etc) | ||
* [[Source tgautils|tgautils]] (Handles .tga 2d graphics files) | * [[Source tgautils|tgautils]] (Handles .tga 2d graphics files) | ||
− | * ui (Low-level user inteface routines | + | * ui (Low-level user inteface routines e.g. buttons, scrollbars) |
* vcodec (Handles player voice streaming for multiplayer ???) | * vcodec (Handles player voice streaming for multiplayer ???) | ||
* weapon (Displays & handles everything to do with weapons) | * weapon (Displays & handles everything to do with weapons) | ||
Line 115: | Line 96: | ||
* wxfred2 (Cross-platform version of FRED2) | * wxfred2 (Cross-platform version of FRED2) | ||
− | === Layer | + | === Layer View === |
* Infrastructure | * Infrastructure | ||
Line 133: | Line 114: | ||
*** windows_stub/ | *** windows_stub/ | ||
** 2D graphics | ** 2D graphics | ||
− | *** anim | + | *** [[Source anim|anim]] |
− | *** bmpman | + | *** [[Source bmpman|bmpman]] |
− | *** ddsutils | + | *** [[Source ddsutils|ddsutils]] |
− | *** | + | *** [[Source jpgutils|jpgutils]] |
− | *** | + | *** [[Source pcxutils|pcxutils]] |
− | *** | + | *** [[Source tgautils|tgautils]] |
*** palman/ | *** palman/ | ||
** 3D graphics | ** 3D graphics | ||
Line 144: | Line 125: | ||
*** mm/ | *** mm/ | ||
*** directx/ | *** directx/ | ||
− | *** graphics | + | *** [[Source graphics|graphics]] |
*** camera/ | *** camera/ | ||
− | *** render | + | *** [[Source render|render]] |
** User Input | ** User Input | ||
*** controlconfig/ | *** controlconfig/ | ||
Line 157: | Line 138: | ||
*** debugconsole/ | *** debugconsole/ | ||
** In Space | ** In Space | ||
− | *** ai | + | *** [[Source ai|ai]] |
*** asteroid/ | *** asteroid/ | ||
*** autopilot/ | *** autopilot/ | ||
Line 206: | Line 187: | ||
** variables/ | ** variables/ | ||
− | ==Category Browser== | + | === Category Browser === |
The subdirectories above are also categorised by function. See the Category:Source Code to browse this way. | The subdirectories above are also categorised by function. See the Category:Source Code to browse this way. | ||
[[Category:Source Code]] | [[Category:Source Code]] |
Latest revision as of 05:30, 3 May 2015
Contents
External Libraries
FreeSpace 2 relies on the following libraries which are included in the source tree:
- jansson: JSON library
- libjpeg: JPEG library
- libpng: PNG library
- lua: LUA Scripting language
- mongoose: HTTP server library
- oggvorbis: Ogg Vorbis sound library
- openal: OpenAL sound library
- zlib: ZIP compression library; necessary for libpng
For information on each library, look in the respective README files.
FreeSpace 2 Source Code
The root also contains the actual FreeSpace 2 code, in the code/ directory. The FreeSpace 2 source code consists of several components, each of which is kept in a separate subdirectory. These components are listed below from different views.
Alphabetical View
- ai (Computer AI)
- anim (Displaying .ani animated bitmaps)
- asteroid (Handle asteroids - movement, collisions, creating smaller asteroids when larger ones are blown up etc.)
- autopilot (Handles autopilot control - where if there are no enemies, travelling a long distance etc. control is temporarily switched to the computer)
- bmpman (Manage 2d graphics files, such as .bmp, .tga, .jpg etc.)
- camera (used for ingame cutscenes ???)
- cfile (File/directory management routines including .VP file handling that are OS independent e.g. handles differences between Linux & Windows)
- cmdline (Handles command line switches, such as -mipmap etc.)
- cmeasure (Handles countermeasures - flares that the player & AI can drop to disrupt missiles)
- controlconfig (Configures keyboard/mouse/joystick controls)
- cutscene (Handles cutscene viewing)
- ddsutils (Handles compressed textures for 3d graphics cards that support it)
- debris (Creates & handles flying debris from exploding ships)
- debugconsole (Handles debugging console and file)
- decals (Adds support for painting decals - small 2d textures - onto ships etc.)
- demo (Allows you to save & playback games to show as demos)
- directx (Specific includes for the Microsoft DirectX library - Windows only)
- exceptionhandler (Deals with crashes, saving stack trace, system info etc.)
- fireball (Displays & handles fireballs and warping effects)
- freespace2 (Main code - handles engine initialisation, loading resources, plus windows resources like icons & dialog boxes)
- fs2netd (Game matchmaker network client code)
- gamehelp (Displays context sensitive help text)
- gamesequence (Handles progression of events during a campaign, such as entering a mission, showing credits etc.)
- gamesnd (Handles sounds & music)
- globalincs (Basic global constants & definitions, eg. version, colours)
- graphics (Low-level wrapper for all 2d & 3d graphics that handles different display engines (DirectX, OpenGL etc)
- hud (Handles the HUD - all the 2d cockpit graphics that the player can see e.g. radar, ammo, escort list, squad etc)
- iff_defs (Handles the iffs in iff_defs.tbl, controlling what color they show up as and what iffs they attack)
- io (Handles IO devices, such as keyboard, mouse & joystick)
- irc (Adds support for an IRC chat client)
- jpgutils (Opens, reads JPG files)
- jumpnode (Displays & handles jump nodes)
- lab (Responsible for WMCoolmon's F3 lab screen)
- lighting (Handles light sources, and their effect on ships)
- localization (Handles a global string table for translating all written text into foreign languages)
- math (Library of math routines for handling vectors, splines etc)
- menuui (Handles all the misc user interface, such as the main menu, tech room, campaign list etc)
- mission (Handles general mission actions e.g. briefing, goals, training info, in-mission messages etc)
- missionui (Handles UI for general mission actions)
- mm (Headers for older MS Multimedia library)
- model (Displays and handles ship models e.g. reading files, collision detection etc)
- nebula (Displays and handles nebulae)
- network (All multi-player code, e.g. UI, network traffic)
- object (High-level code to handle all objects eg. ships, weapons, debris, asteroids, waypoints, fireballs, shockwaves)
- observer (Responsible for the multiplayer observer mode)
- osapi (Wraps low-level Operating System calls, for different OS, eg. multi-threads, windows event loops, main app window)
- padlock (Handles cockpit views with a simulated head tracking of targets relative to the ship)
- palman (Handles bitmap palettes - different colour maps for the same 2d bitmap)
- parse (Handles scripting files, eg. python, LUA etc)
- particle (Displays and handles particles, such as smoke, fire)
- pcxutils (Handles 2d .pcx graphics files)
- physics (Handles realistic physical behaviour of objects, such as ship acceleration/deceleration, rotation etc.)
- playerman (Handles pilot files & player ship movement)
- popup (Displays & handles 2d pop-up windows, e.g. when the player dies)
- radar (Displays & handles the radar)
- render (Low-level 3d rendering code for some primitives)
- ship (Displays & handles all ship code, e.g. shields, afterburner)
- sound (Low-level sound, speech & music routines)
- species_defs (Reads species_defs.tbl to handle different behaviour for different species)
- starfield (Displays & handles background images such as starfields, nebulae etc)
- stats (Displays & handles player statistics, medals etc)
- tgautils (Handles .tga 2d graphics files)
- ui (Low-level user inteface routines e.g. buttons, scrollbars)
- vcodec (Handles player voice streaming for multiplayer ???)
- weapon (Displays & handles everything to do with weapons)
- windows_stub (Low-level windows functions that are needed for Unix)
There are also some directories that are only used for generating tools (not part of the main fs2 executable):
- cfilearchiver (Creates .VP file archives)
- cfileextractor (Extracts .VP file archives)
- cryptstring (Creates encrypted strings)
- fred2 (The FReespace EDitor)
- inetfile (FTP & HTTP network handlers)
- scramble (Utility to scramble file tables for the Demo version)
- variables (???)
- wxfred2 (Cross-platform version of FRED2)
Layer View
- Infrastructure
- Freespace2
- Common
- globalincs/
- cutscene/
- cmdline/
- debugconsole/
- In Space
- ai
- asteroid/
- autopilot/
- cmeasure/
- debris/
- demo/
- fireball/
- gamehelp/
- gamesequence/
- gamesnd/
- hud/
- iff_defs/
- jumpnode/
- lighting/
- nebula/
- object/
- observer/
- model/
- network/
- particle/
- parse/
- popup/
- physics/
- radar/
- ship/
- species_defs/
- starfield/
- weapon/
- In Base
- stats/
- menuui/
- mission/
- missionui/
- Engine
- fs2open_pxo/
- freespace2/
- playerman/
- Common
- FRED
- fred2/
- wxfred2/
- Tools
- cfilearchiver/
- cfileextractor/
- cryptstring/
- lab/
- scramble/
- inetfile/
- variables/
Category Browser
The subdirectories above are also categorised by function. See the Category:Source Code to browse this way.