Difference between revisions of "Source Code Reference"

From FreeSpace Wiki
Jump to: navigation, search
(Alphabetical view: -Another guess from a quick look at the source.)
(Alphabetical View)
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== External libraries ==
+
== External Libraries ==
  
Freespace2 relies on the following libraries, which are included in the source tree:
+
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
 
* lua: LUA Scripting language
* libjpeg: Jpeg library
+
* mongoose: HTTP server library
 
* oggvorbis: Ogg Vorbis sound library
 
* oggvorbis: Ogg Vorbis sound library
* dx8sdk: DirectX 8 SDK
+
* openal: OpenAL sound library
* dx9sdk: DirectX 9 SDK
+
* zlib: ZIP compression library; necessary for libpng
  
See msdn.microsoft.com for discussion of the DirectX libraries. For the other libraries, look in the README files for more info
+
For information on each library, look in the respective README files.
  
== Freespace2 Source Code ==
+
== FreeSpace 2 Source Code ==
  
The root also contains the actual Freespace2 code, in the code/ directory. The Freespace2 source code consists in several components, each of which is kept in a separate subdirectory. These components are listed below, from different views.
+
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 ===
+
=== Alphabetical View ===
  
 
* [[Source ai|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 asteriods when larger ones are blown up etc.)
+
* 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 eg. handles differences between Linux & Windows)
+
* 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 36: 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)
* fs2open_pxo (Network code)
+
* 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 42: 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 eg. radar, ammo, escort list, sqaud 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 traitor ships???)
+
* 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 (Responsible for lab model display?)
+
* 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 eg. briefing, goals, training info, in-mission messages etc)
+
* 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 eg. reading files, collission detection etc)
+
* 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, eg. UI, network traffic)
+
* 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 (Handles all non player ship views? Maybe the external views stuff, or death observation?)
+
* 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 68: 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, eg. when the player dies)
+
* 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, eg. shields, afterburner)
+
* ship (Displays & handles all ship code, e.g. shields, afterburner)
* sound (Low-level sound, speach & music routines)
+
* 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 eg. buttons, scrollbars)
+
* 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 92: Line 96:
 
* wxfred2 (Cross-platform version of FRED2)
 
* wxfred2 (Cross-platform version of FRED2)
  
=== Layer view ===
+
=== Layer View ===
  
 
* Infrastructure
 
* Infrastructure

Latest revision as of 05:30, 3 May 2015

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/
  • 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.