Source Code Reference
From FreeSpace Wiki
(Redirected from Sourcecode Reference)
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.