Game Development Libraries
A game engine is more than just a set of libraries. It must also contain some level/world editor functionality. It must also provide an API that makes it easy to write a program.
A multiplatform free game development library with bindings for many languages (C++, Go, Python, Rust,…). It supports windowing, user interface event handling, Joysticks and OpenGL graphics.
libGDX is a cross-platform game development framework for Java that supports Windows, macOS, Linux (including the RPi), Android and your browser. It offers well-tried, robust tools and a framework for rapid prototyping and fast iterations. It also gives creators the freedom to choose their own tools and coding styles.
Its library includes tools that allow developers to add 2D and 3D physics, as well as a variety of different visual effects. It is easy to learn, and it has a vibrant community that can provide valuable assistance to newcomers. It is also fully open source and free to use, making it an excellent choice for game developers.
The GameMaker engine has a wide range of features, making it a powerful choice for developers of all skill levels. Designed to be easy-to-use, it can help students and indie creators get started with game creation while also supporting the needs of seasoned developers.
The 2023.2 update to GameMaker removes the requirement for a login when the program is opened, which makes the tool more user-friendly and minimizes interruptions to workflow. It also allows users to create bookmarks to quickly access specific areas of the IDE.
GameMaker also has a dedicated community forum, as well as the Game Maker Language (GML) scripting system that can be used to add additional functionality to the drag-and-drop interface.
GLScene is a 3D library for Delphi that provides visual components and objects for description and rendering of 3D scenes. It is an OpenGL-based, multi-OS and multi-CPU library that is designed with rapid application development in mind.
It manages drawing in a GLContext, and provides a simple interface for orthographic rendering, render-to-texture operations, and loading vert/geo/frag shaders. It also supports high-performance cull and draw traversals.
It is compatible with C++ Builder, Kylix and Delphi and runs on Linux, Mac OS X, and Windows. Its code is available for download under the Mozilla Public License. It is free for commercial use and comes with a variety of demos.
Raylib is a cross-platform game development library that supports a wide range of graphics devices and programming languages. It also includes functions for detecting user input and managing the game state.
RayLib features a modular architecture, meaning everything is contained in a small number of well defined, specific and self-contained modules that are named according to their primary functionality. The rcamera module, for example, is a single-file header-only library that can be used standalone, independently of the main raylib library.
It has been reviewed to minimize rlgl dependency and now only depends on 6 low-level functions. This opens the door to build raylib with different backends like OpenGL, Direct3D 11, Vulkan and Metal.
SFML is a cross platform open source 2D game development library that offers a simple API. It is easy to use and well documented with excellent examples and clickable inheritance diagrams. It is also extremely fast, assuming your graphics hardware supports OpenGL framebuffer objects. If it does not, SFML provides a fallback implementation with performance ranging from marginally slower to significantly slower.
One of the most important optimizations to consider is how many sf:draw() calls you make each frame. More drawing means more work for the driver and the graphics hardware. The more you can batch up draws and not require a full framerate every single time, the better your performance will be.
Piston is a modular library for 2D graphics, immediate UI and image processing in Rust. It features a dynamic scripting language called Dyon, which uses lifetime checking without garbage collection. It is designed for optimal modularity and works with multiple backends.
In Minecraft Bedrock Edition, pistons can push most entities and blocks when given a redstone signal. They can also retract blocks in addition to pushing them. Sticky pistons can additonally pull adjacent blocks when retracted.
In Bedrock Edition, the retraction of a piston starts immediately in Java Edition and takes 2 game ticks (4 redstone ticks) in Bedrock Edition. The retraction speed of pistons is influenced by the amount of power they receive.