PLIB (Portable Game Library) is a set of software libraries for writing games written by Steve J. Baker. FlightGear has used PLIB for most of its development. It is also used by the FlightGear-related program Atlas. PLIB is open-source and is released under the GNU Library General Public License, the predecessor to the Lesser GNU Public License.
FlightGear 1.0 (released in 2007) was the last public release to use PLIB for the 3D scene graph, before the transition to OpenSceneGraph (OSG). FlightGear still uses PLIB for various tasks; for example, reading joystick inputs and showing a graphical user interface (GUI). In the latter usage, the PUI component of PLIB will eventually be replaced in FlightGear by Canvas and Phi, which will vastly improve that capabilities of the current GUI beyond what PUI offers.
PLIB is needed when building FlightGear.
- Picoscopic User Interface (PUI)
- A fully portable set of GUI widgets that need OpenGL and C++ to operate. Useful for games because rendering these widgets is performed very quickly by your 3D hardware.
- Sound Library (SL)
- A fully portable Audio driver suited to C++, GLUT and realtime applications that need low latency. Includes a simple 'MOD' music loader/player.
- Standard Geometry Library (SG)
- A set of matrix and vector math functions that was specifically written to simplify the writing of efficient OpenGL programs. You need to include this code into any SSG applications. Widely used within PLIB itself.
- Simple Scene Graph Library (SSG)
- A scene graph library layered on top of OpenGL. Also contains code to load and save lots of 3D file formats.
- PUI Auxiliary Library (PUAUX)
- Additional functionality layered onto PUI — not every PUI program will need these but they can perhaps save you some effort.
- SSG Auxiliary Library (SSGA)
- Additional functionality layered onto SSG — not every SSG program will need these but they can perhaps save you some effort.
- Joystick wrappers (JS)
- Supports more Joysticks with more axes and buttons than GLUT.
- Fonts'n'Text Library (FNT)
- Supports text output in OpenGL using texture mapped fonts. These are much faster to render than GLUT's fonts.
- Utility Library (UL)
- A simple portability library to hide basic operating system incompatibilities. Widely used within PLIB itself.
- Pegasus Network Library (NET)
- Pegasus is a C++ library for assist you in adding networking to your games.
- PLIB Scripting Language (PSL)
- A very lightweight, stackless C-like scripting language.
- PLIB Windowing Library (PW)
- A lightweight windowing library. This is a very basic library — it only supports a single, double-buffered RGB OpenGL window, with support for keyboard and mouse. Simple though it is, it's usually plenty for OpenGL games and other simple OpenGL applications.
Even if version 1.8.5, shipped with most of the GNU/Linux distributions, does work for FlightGear and related software, it is recommended to use the latest source from its SVN repo:
$ svn checkout svn://svn.code.sf.net/p/plib/code/trunk plib-code $ cd plib-code $ sed s/PLIB_TINY_VERSION\ \ 5/PLIB_TINY_VERSION\ \ 6/ -i src/util/ul.h