Source Code Reference: Difference between revisions

Aardwolf (talk | contribs)
No edit summary
Echelon9 (talk | contribs)
 
(6 intermediate revisions by 4 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 (used for ingame cutscenes ???)
* 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 the iffs in [[iff_defs.tbl]], controlling what color they show up as and what iffs they attack)
* 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)
Line 53: Line 56:
* 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 (Responsible for the multiplayer observer mode)
* observer (Responsible for the multiplayer observer mode)
Line 69: 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 93: 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.