Making games in Pascal can me super frustrating to say the least. If you want to make games in nearly any other language, just pop over to YouTube or Github and search for C++ Game Engine, or Rust Game Engine. You will find many suitable libraries, frameworks, and engines for you to use. This is not the case for Pascal Game Development.
Let's be honest for a minute. If you are a professional game developer, or you are wishing to be. Just go and use C or C++, they are the industry standard, and an established or startup studio is not going to use Pascal. But for those of you who are Indie Developers or interested in Pascal and Game Programming. I encourage you to keep reading and hopefully see a few solutions that you will really like, and give Pascal Game Development a real chance.
Castle Game Engine
The Castle Game Engine is a full featured Game Engine and Library. Allowing not only Desktop, but also Mobile game development, from a single code base. While it isn't a game engine like Unity, which hides all of the details, and expects you to drag and drop most of the game. You will do lots of coding in Pascal with this engine. It offers lots of useful features though.
Castle Game Engine Features:
- Supports many 2D & 3D file formats: X3D, VRML, Collada, OBJ, MD3, Spine, etc...
- Cross-Platform: Windows, Mac OS X, Linux, Android, and iOS
- Rendering effects: Shadows, Mirrors, Bump Mapping, Shaders, etc...
- Game Object System: Physics, AI, NavMesh, and more.
- 3rdParty Services: In-App Purchase Achievements, Leaderboards, Ads, Facebook SDK, and many others.
- 2D & 3D Animation support.
- Terrain Rendering, SceneGraph Management, and others.
Terra Game Engine
The Terra Game Engine was the first game engine I found many years ago for Pascal, aside from the sorely out of date GLScene library. This game engine/library was developed by Sergio Flores from Portugal,for many years. Specifically to create a few games on Android and iOS, including Minimon3D (A 3d Pokemon-like MMO). It is entirely written in Pascal and should compile on Delphi 7 and newer, or FreePascal 2.6.4 and newer. Sadly, it seems to be out of date by nearly 3 years now. It is Open-Source over on Github (https://github.com/Relfos/TERRA-Engine)
This engine has loads of features, however I have personally found many of them to be lacking the polish you would expect, to call them "Features". Sometimes things like not all JPEG images being supported, for example. And no SceneGraph, you are expected to bring your own, in your code. However it does come with a fair number of samples.
Terra Engine Features:
- Many 3D File Formats: OBJ, MS3D, SMD, 3DS, Collada, GLS, and X
- Many Audio Formats: WAV, OGG, MOD, MIDI, & MP3 (some platforms)
- TrueType & Bitmap (Angelcode) Fonts are supported
- Image Formats Include: PNG, JPG, BMP, TGA, DDS, PSD, GIF, and some more
- Desktop & Mobile development. (Windows, Mac OS X, Linux, Android, and iOS)
- Steam Integration
- Lots of Rendering features: Dynamic Lights, Sprite Group, Skeletal Animation, IK Animation, Billboards, Particle System, and so much more. (Seriously, take a look on Github)
This engine is not exactly the easiest to work with, but is a great place to start if you are an experienced developer hoping to create a 3D game in Pascal. Visit the Github page to learn more.
Raylib - Wrapper
Raylib is a really nice and simple Game Development Library. It is focused on Teaching instead of Production of Games. However there is nothing stopping you from using it in a production game. If the features of this library fit what you need for your video game, then I would encourage you to give it a try. While I haven't seen anyone successfully compile the Pascal Wrapper of raylib for Mobile. I have managed to get it to compile for Linux and Windows using the FreePascal Compiler. For a newbie to FPC it might be a little difficult, however with a little time and reading I am certain the newest of newbs, can get it to work. (Maybe I will create a repo, of github for everyone to clone or fork, as a starting point for linux)
This library, since using a wrapper; will need to be linked dynamically or statically with your executable. To learn more about the Library itself, head over to https://www.raylib.com/ and more about the pascal wrapper https://github.com/drezgames/raylib-pascal
- No External Dependencies
- Windows, Mac OS X, Linux, Android and many more...
- Written in Plain C, and very clean.
- Targets Legacy and Modern OpenGL or GLES 2.0 for mobile
- Unique and clean OpenGL Abstraction
- Full 3D Support.
- GLSL Shaders
I encourage you to head over to the two sites, and take a look around.