Results 1 to 6 of 6

Thread: Piro Game Toolkit

  1. #1

    Piro Game Toolkit


    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.


    • 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.
      cArchiveFilename   = 'Data.arc';
      cDisplayTitle      = 'MyGame';
      cDisplayWidth      = 800;
      cDisplayHeight     = 480;
      cDisplayFullscreen = False;
      { TMyGame }
      TMyGame = class(TCustomGame)
        FFont: TFont;
        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;

    How to use

    A minimal implementation example:
    { TMyGame }
    procedure TMyGame.OnLoad;
      // open archive file
    procedure TMyGame.OnExit;
      // close archive file
    procedure TMyGame.OnStartup;
      // open display
      Piro.Display.Open(cDisplayWidth, cDisplayHeight,  cDisplayFullscreen, cDisplayTitle);
      // create font
      Piro.Get(IFont, FFont);
      // use default mono spaced font
    procedure TMyGame.OnShutdown;
      // free font
      // close display
    procedure TMyGame.OnUpdate(aDeltaTime: Double);
      // process input
      if Piro.Input.KeyboardPressed(KEY_ESCAPE) then
    procedure TMyGame.OnClearDisplay;
      // clear display
    procedure TMyGame.OnShowDisplay;
      // show display
    procedure TMyGame.OnRender;
      // render any graphics here
    procedure TMyGame.OnRenderHUD;
      Pos: TVector;
      // 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', []);
    To run your game, call


    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.

    Last edited by drezgames; 23-12-2021 at 05:51 PM.

  2. #2
    This seems impressive. Will have to check it out one day

  3. #3
    Quote Originally Posted by SilverWarior View Post
    This seems impressive. Will have to check it out one day
    Thanks. Yes, give it try when you get a chance. I'm adding new features, enhancements and fixing any reported bugs regularly.

  4. #4
    In the next Piro drop, you will be able to do in-app purchase direct from the desktop. It's powered by and very easy to setup and use. Just set your API key you get from your stripe account, the transaction, credit card and customer information. You then call the IIAP.Buy method to create a charge. It will return TRUE if successful. There are various methods to check for errors and status. You can use IAsync if you need to run it a non-blocking.


  5. #5
    Added support for importing sprite animation created by PixelOver.

  6. #6
    Adding a IMGUI system for Piro. This is what I got working so far.

Tags for this Thread


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts