Sign in Join
Wiki copytemporary

Game framework: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1----
2-[[Portal:Game Development|**Game Development**]]
3-
4- * [[FPC and Allegro|Allegro Game Framework]] \- cross-platform
5- * [[Castle Game Engine]] \- 2D and 3D cross-platform Pascal game engine
6- * [[Choosing a Game Engine]]
7- * [[Games]]
8- * [[Game Engine|Game Engines]]
9- * Game Frameworks
10- * [[Graphics libraries]]
11- * [[Lazarus- Game Developers Edition]] _Proposal_
12- * [[nxPascal]] \- lightweight 3D game engine
13- * [[Peg Solitaire tutorial|Peg Solitaire]] \- a Lazarus game tutorial
14- * [[Projects using Lazarus - Games]]
15- * [[ZenGL]] \- Pascal cross-platform game development library
16-
17-
18-
19-A **game framework** is a library designed to help game development. It usually defines [APIs](<https://en.wikipedia.org/wiki/Application_programming_interface>) to deal with [[Graphics libraries|graphics]], sound, user input, data files, etc. In most cases it defines a high-level API that allows cross-platform development.
20-
21-Main difference between game frameworks and [[Game Engine|game engines]] is that the latter also implements the game loop, as well as complex data structures (maps, actors...), data containers and tools.
22-
23-## Contents
1+A **game framework** is a library designed to help game development. It usually defines [APIs](https://en.wikipedia.org/wiki/Application_programming_interface) to deal with [[Graphics libraries|graphics]], sound, user input, data files, etc. In most cases it defines a high-level API that allows cross-platform development.
242
25- * 1 Game frameworks
26- * 2 Other libraries for games
27- * 3 Using LCL for game development
28- * 4 See also
3+Main difference between game frameworks and [[Game Engine|game engines]] is that the latter also implements the game loop, as well as complex data structures (maps, actors...), data containers and tools.
294
305## Game frameworks
316
32-Name | Site | Usage | License | Notes
33----|---|---|---|---
34-[[FPC and Allegro|Allegro]] | [liballeg.org](<http://liballeg.org/>) | [Bindings Allegro-pas](<http://allegro-pas.sourceforge.net/>) | Allegro 1-4: Beerware, Allegro 5: zlib | Allegro is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform.
35-Phoenix | [GitHub](<https://github.com/GuvaCode/PGF>) | FPC/Delphi | Mozilla Public License | A set of Delphi 7+ and Free Pascal components and classes to help in creating hardware accelerated 2D and 3D games.
36-[[GLScene]] | [SourceForge](<http://glscene.sourceforge.net/>) | FPC/Delphi | Mozilla Public License | GLScene is a free OpenGL-based library for the Delphi programming language, C++ and Free Pascal. It provides visual components and objects allowing description and rendering of 3D scenes.
37-Raylib | [www.raylib.com](<https://www.raylib.com/>) | FPC/Lazarus [Raylib 4.0 Pascal Bindings](<https://github.com/sysrpl/Raylib.4.0.Pascal>) | Zlib | Raylib is a popular game development toolkit in the computer programming education space. It provides windowing, input, graphics, text, audio, collision detection, and a basic GUI. The official website contains many examples and an easy to learn and use documentation cheatsheet.
38-SFML | [www.sfml-dev.org](<https://www.sfml-dev.org/>) | FPC/Lazarus [SFML headers](<https://github.com/DJMaster/csfml-fpc>) [PasSFML(OOP)](<https://github.com/CWBudde/PasSFML>) | | SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing, graphics, audio and network.
39-SDL | [www.libsdl.org](<http://www.libsdl.org>) | [SDL2 for Pascal](<https://github.com/PascalGameDevelopment/SDL2-for-Pascal>) [SDL2 bindings for FPC](<http://sourceforge.net/projects/sdl2fpc/?source=directory>) [Laz2SDL](<https://sourceforge.net/projects/lazsdl2/>) [SDL2 Headers](<https://github.com/ev1313/Pascal-SDL-2-Headers>) | SDL2: [zlib](<http://libsdl.org/license.php>) | Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.
40-[[ZenGL]] | [SourceForge](<https://sourceforge.net/projects/new-zengl/>) | FPC/Delphi | [Zlib](<http://www.zengl.org/license.html>) | Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc.
41-Bare Game | [GitHub](<https://github.com/sysrpl/Bare.Game>) | FPC | | An open source modern minimal game cross platform gaming library using SDL. Archive of official web page from 2017 [www.baregame.org](<https://web.archive.org/web/20171005052020/http://www.baregame.org/>).
42-
7+| Name | Site | Usage | License | Notes |
8+|----|----|----|----|----|
9+| [[FPC and Allegro|Allegro]] | [liballeg.org](http://liballeg.org/) | [Bindings Allegro-pas](http://allegro-pas.sourceforge.net/) | Allegro 1-4: Beerware, Allegro 5: zlib | Allegro is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. |
10+| Phoenix | [GitHub](https://github.com/GuvaCode/PGF) | FPC/Delphi | Mozilla Public License | A set of Delphi 7+ and Free Pascal components and classes to help in creating hardware accelerated 2D and 3D games. |
11+| [[GLScene]] | [SourceForge](http://glscene.sourceforge.net/) | FPC/Delphi | Mozilla Public License | GLScene is a free OpenGL-based library for the Delphi programming language, C++ and Free Pascal. It provides visual components and objects allowing description and rendering of 3D scenes. |
12+| Raylib | [www.raylib.com](https://www.raylib.com/) | FPC/Lazarus [Raylib 4.0 Pascal Bindings](https://github.com/sysrpl/Raylib.4.0.Pascal) | Zlib | Raylib is a popular game development toolkit in the computer programming education space. It provides windowing, input, graphics, text, audio, collision detection, and a basic GUI. The official website contains many examples and an easy to learn and use documentation cheatsheet. |
13+| SFML | [www.sfml-dev.org](https://www.sfml-dev.org/) | FPC/Lazarus [SFML headers](https://github.com/DJMaster/csfml-fpc) [PasSFML(OOP)](https://github.com/CWBudde/PasSFML) | | SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing, graphics, audio and network. |
14+| SDL | [www.libsdl.org](http://www.libsdl.org) | [SDL2 for Pascal](https://github.com/PascalGameDevelopment/SDL2-for-Pascal) [SDL2 bindings for FPC](http://sourceforge.net/projects/sdl2fpc/?source=directory) [Laz2SDL](https://sourceforge.net/projects/lazsdl2/) [SDL2 Headers](https://github.com/ev1313/Pascal-SDL-2-Headers) | SDL2: [zlib](http://libsdl.org/license.php) | Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. |
15+| [[ZenGL]] | [SourceForge](https://sourceforge.net/projects/new-zengl/) | FPC/Delphi | [Zlib](http://www.zengl.org/license.html) | Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc. |
16+| Bare Game | [GitHub](https://github.com/sysrpl/Bare.Game) | FPC | | An open source modern minimal game cross platform gaming library using SDL. Archive of official web page from 2017 [www.baregame.org](https://web.archive.org/web/20171005052020/http://www.baregame.org/). |
17+
4318## Other libraries for games
4419
45-Libraries that aren't to create games but are useful.
20+Libraries that aren't to create games but are useful.
4621
47-Name | Site | Usage | License | Notes
48----|---|---|---|---
49-[Steam Wrapper](</index.php?title=Steam_Wrapper&action=edit&redlink=1> "Steam Wrapper \(page does not exist\)") | <https://github.com/thecocce/steamwrapper> | FPC/Delphi | | Cross-platform game development wrapper written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc.
50-
22+| Name | Site | Usage | License | Notes |
23+|----|----|----|----|----|
24+| [[Steam Wrapper]] | [<https://github.com/thecocce/steamwrapper>](https://github.com/thecocce/steamwrapper) | FPC/Delphi | | Cross-platform game development wrapper written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc. |
25+
5126## Using LCL for game development
5227
53-1) From forum member **furious programming**.
28+1\) From forum member **furious programming**.
5429
55-I suggest not to waste your time on LCL to build games, because it is not suitable for creating games for many reasons, including the most important:
30+I suggest not to waste your time on LCL to build games, because it is not suitable for creating games for many reasons, including the most important:
5631
57- * no Direct3D and OpenGL support
58- * unable to use GPU for rendering textures
59- * no exclusive video mode support and available screen resolutions
60- * absolutely no support for sound mixer and playing multiple sounds at the same time
61- * lack of support for game controllers and their full functionality
62- * lack o V-Sync support
32+- no Direct3D and OpenGL support
33+- unable to use GPU for rendering textures
34+- no exclusive video mode support and available screen resolutions
35+- absolutely no support for sound mixer and playing multiple sounds at the same time
36+- lack of support for game controllers and their full functionality
37+- lack o V-Sync support
6338
64-What I mentioned above are the basics, without which creating even a simple game will be inconvenient, the game itself will be very limited, and its performance will be very low (software rendering is horribly slow in compare to GPU rendering). As you can see, it doesn't make much sense.
39+What I mentioned above are the basics, without which creating even a simple game will be inconvenient, the game itself will be very limited, and its performance will be very low (software rendering is horribly slow in compare to GPU rendering). As you can see, it doesn't make much sense.
6540
66-Whether you want to make a tiny game or a bigger one, use the library dedicated to their creation. It does not have to be SDL, but it is important that it has all the functionality to create full-fledged video games. However, if you are interested in creating a 2D game, I strongly advise you not to use 3D engines for this purpose, because it will significantly complicate the implementation, and you will get discouraged very quickly.
41+Whether you want to make a tiny game or a bigger one, use the library dedicated to their creation. It does not have to be SDL, but it is important that it has all the functionality to create full-fledged video games. However, if you are interested in creating a 2D game, I strongly advise you not to use 3D engines for this purpose, because it will significantly complicate the implementation, and you will get discouraged very quickly.
6742
68-Use something small, light, functional and, above all, supported at all times. I suggest SDL because it meets all the requirements and is great, but it can also be Allegro, because it's the same shelf.
43+Use something small, light, functional and, above all, supported at all times. I suggest SDL because it meets all the requirements and is great, but it can also be Allegro, because it's the same shelf.
6944
70-2) From forum member **Seenkao**.
45+2\) From forum member **Seenkao**.
7146
72-There are quite a few solutions for using both LCL and OpenGL/DirectX at the same time. They can be seen in neighboring topics and on the Free Pascal wiki. In the German forum, almost all OpenGL tutorials are made under LCL. dglOpenGL.pas - allows you to work with LCL on Windows without much knowledge of creating an OpenGL window/context.
47+There are quite a few solutions for using both LCL and OpenGL/DirectX at the same time. They can be seen in neighboring topics and on the Free Pascal wiki. In the German forum, almost all OpenGL tutorials are made under LCL. dglOpenGL.pas - allows you to work with LCL on Windows without much knowledge of creating an OpenGL window/context.
7348
74- * [[OpenGL Tutorial]]
75- * [dglOpenGL tutorial, Deutsch](<https://wiki.delphigl.com/index.php/Lazarus_-_OpenGL_3.3_Tutorial>)
76- * [Metal, OpenGL demos](<https://forum.lazarus.freepascal.org/index.php/topic,42306.0.html>)
77- * [[GLScene]]
78- * [GLEngine2D](<https://github.com/Dev-Demi/GLEngine2D>), based on dglOpenGL. Deprecated. But it works.
79- * [[Game Engine]]
49+- [[OpenGL Tutorial]]
50+- [dglOpenGL tutorial, Deutsch](https://wiki.delphigl.com/index.php/Lazarus_-_OpenGL_3.3_Tutorial)
51+- [Metal, OpenGL demos](https://forum.lazarus.freepascal.org/index.php/topic,42306.0.html)
52+- [[GLScene]]
53+- [GLEngine2D](https://github.com/Dev-Demi/GLEngine2D), based on dglOpenGL. Deprecated. But it works.
54+- [[Game Engine]]
8055
81-I don't even think I can fully cover this topic. And there's a good chance I'll miss something. LCL can also be used with SDL, Castle Game Engine, PGF, Apus Game Engine, ZenGL and many other engines. Connecting controllers does not depend at all on what we use. To do this, you just need to use the necessary libraries. Often that already come with game engines. And it can also be used in LCL. With sound, no one forbids the use of single-channel / multi-channel sound. All this is provided in the respective libraries. And it can also be used in LCL.
56+I don't even think I can fully cover this topic. And there's a good chance I'll miss something. LCL can also be used with SDL, Castle Game Engine, PGF, Apus Game Engine, ZenGL and many other engines. Connecting controllers does not depend at all on what we use. To do this, you just need to use the necessary libraries. Often that already come with game engines. And it can also be used in LCL. With sound, no one forbids the use of single-channel / multi-channel sound. All this is provided in the respective libraries. And it can also be used in LCL.
8257
83-The only reason this is not a suitable option is if you have a highly loaded application. Here I partly agree! In simple games, this has almost no effect.
58+The only reason this is not a suitable option is if you have a highly loaded application. Here I partly agree! In simple games, this has almost no effect.
8459
8560## See also
8661
87- * [[Graphics libraries]]
88- * [[Game Engine|Game engine]]
62+- [[Graphics libraries]]
63+- [[Game Engine|Game engine]]
8964
9065---
91-*From the Free Pascal wiki, page "Game framework", as the Internet Archive kept it on 2025-04-24. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
66+*From the Free Pascal wiki, page "Game framework", as it stood on 2024-04-20 after a change by Chronos, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
67+Category: Game Development
68+Category: Games

Back to history