Overview
Piro Game Toolkit™ is a 2D indie game library that allows you to do game development in Delphi for desktop PC's running Microsoft Windows® and uses OpenGL® for hardware accelerated rendering.
It's robust, designed for easy use and suitable for making all types of 2D games and other graphic simulations, you access the features from a simple and intuitive API, to allow you to rapidly and efficiently develop your projects. There is support for bitmaps, audio samples, streaming music, video playback, loading resources directly from a compressed and encrypted archive, a thin object-oriented actor/scene system, entity state machine, sprite management, collision detection and much more. Piro Game Toolkit, easy, fast & fun! This new library combines my previous libraries into one coherent whole, more efficient and better crafted.
Features
- Free for commercial use.
- Written in Object Pascal
- Support Windows 64-bit platform
- Hardware accelerated with OpenGL
- You interact with the toolkit via routines, class objects and a thin OOP framework
- Archive (custom archive format, password protection, encryption)
- Display (OpenGL, anti-aliasing, vsync, viewports, primitives, blending)
- Input (keyboard, mouse and joystick)
- Bitmap (color key transparency, scaling, rotation, flipped, titled, BMP, DDS, PCX, TGA, JPEG, PNG)
- Video (play, pause, rewind, OGV format)
- Sprite (pages, groups, animation, poly-point collision)
- Entity (defined from a sprite, position, scale, rotation, collision)
- Actor (list, scene, state machine)
- Audio (samples, streams, WAV, OGG/Vorbis, FLAC formats)
- Speech (multiple voices, play, pause)
- Font (true type, scale, rotate)
- Timing (time-based, frame elapsed, frame speed)
- Shaders (vertex, pixel, GLSL)
- Misc (collision, easing, screenshake, screenshot, starfield, colors, INI based config files, startup dialog, treeview menu)
Minimum System Requirements
How to use in Delphi
- Unzip the archive to a desired location.
- Add installdir\libs, folder to Delphi's library path so the toolkit source files can be found for any project or for a specific project add to its search path.
- See examples in the installdir\examples for more information about usage.
- Use PiroArc utility to make .ARC files (custom archive format, support encryption and password protection). Running makearc.bat in installdir\examples\bin will build Data.arc that is used by the examples.
- Build PiroExamples to showcase many of the features and capabilities of the toolkit.
- You must include PGT.dll in addition to any dependencies such an .ARC files for example, in your project distribution.
- NOTE: For your assurance, all official executables in the PGT distro are code signed by tinyBigGAMES LLC.
Known Issues
- This project is in active development so changes will be frequent
- Documentation is WIP. They will continue to evolve
- More examples will continually be added over time
A Tour of Piro Game Toolkit
Game Object
You just have to derive a new class from the TCustomGame base class and override a few callback methods. You access the toolkit functionality from the PiroGameToolkit unit.
Code:
uses
PiroGameToolkit;
const
cArchiveFilename = 'Data.arc';
cDisplayTitle = 'MyGame';
cDisplayWidth = 800;
cDisplayHeight = 480;
cDisplayFullscreen = False;
type
{ TMyGame }
TMyGame = class(TCustomGame)
protected
FFont: TFont;
public
procedure OnLoad; override;
procedure OnExit; override;
procedure OnStartup; override;
procedure OnShutdown; override;
procedure OnUpdate(aDeltaTime: Double); override;
procedure OnClearDisplay; override;
procedure OnShowDisplay; override;
procedure OnRender; override;
procedure OnRenderHUD; override;
end;
How to use
A minimal implementation example:
Code:
uses
System.SysUtils;
{ TMyGame }
procedure TMyGame.OnLoad;
begin
// open archive file
Piro.Archive.Open(cArchiveFilename);
end;
procedure TMyGame.OnExit;
begin
// close archive file
Piro.Archive.Close(cArchiveFilename);
end;
procedure TMyGame.OnStartup;
begin
// open display
Piro.Display.Open(cDisplayWidth, cDisplayHeight, cDisplayFullscreen, cDisplayTitle);
// create font
Piro.Get(IFont, FFont);
// use default mono spaced font
FFont.Load(16)
end;
procedure TMyGame.OnShutdown;
begin
// free font
Piro.Release(FFont);
// close display
Piro.Display.Close;
end;
procedure TMyGame.OnUpdate(aDeltaTime: Double);
begin
// process input
if Piro.Input.KeyboardPressed(KEY_ESCAPE) then
Piro.SetTerminate(True);
end;
procedure TMyGame.OnClearDisplay;
begin
// clear display
Piro.Display.Clear(BLACK);
end;
procedure TMyGame.OnShowDisplay;
begin
// show display
Piro.Display.Show;
end;
procedure TMyGame.OnRender;
begin
// render any graphics here
end;
procedure TMyGame.OnRenderHUD;
var
Pos: TVector;
begin
// assign hud start pos
Pos.Assign(3, 3, 0);
// display hud text
FFont.Print(FFont, Pos.X, Pos.Y, Pos.Z, WHITE, alLeft, 'fps %d', [Piro.GetFrameRate]);
FFont.Print(FFont, Pos.X, Pos.Y, 0, GREEN, alLeft, 'Esc - Quit', []);
end;
To run your game, call
PiroRun(TMyGame);
NOTE: For Piro to work properly, execution MUST start with PiroRun(...). This call will property setup/shutdown the library and log and handle errors. Only one Piro app instance is allowed to run and will safely terminated if more than one is detected.
Bookmarks