Difference between revisions of "Source Code Reference"

From FreeSpace Wiki
Jump to: navigation, search
m (Fixed some spelling errors.)
(Alphabetical View)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== External libraries ==
+
== External Libraries ==
  
 
FreeSpace 2 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 ([[deprecation|deprecated]])
+
* openal: OpenAL sound library
* dx9sdk: DirectX 9 SDK ([[deprecation|deprecated]])
+
* 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 information.
+
For information on each library, look in the respective README files.
  
 
== FreeSpace 2 Source Code ==
 
== FreeSpace 2 Source Code ==
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 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.