Allegro (software)
   HOME

TheInfoList



OR:

Allegro is a
software library In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and sub ...
for
video game Video games, also known as computer games, are electronic games that involves interaction with a user interface or input device such as a joystick, controller, keyboard, or motion sensing device to generate visual feedback. This fee ...
development. The functionality of the library includes support for basic 2D graphics, image manipulation, text output, audio output,
MIDI MIDI (; Musical Instrument Digital Interface) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and ...
music, input and timers, as well as additional routines for fixed-point and floating-point
matrix Matrix most commonly refers to: * ''The Matrix'' (franchise), an American media franchise ** ''The Matrix'', a 1999 science-fiction action film ** "The Matrix", a fictional setting, a virtual reality environment, within ''The Matrix'' (franchis ...
arithmetic,
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
strings, file system access, file manipulation, data files, and 3D graphics. The library is written in the C programming language and designed to be used with C,
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
, or
Objective-C Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its NeXT ...
, with bindings available for
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
,
Lua Lua or LUA may refer to: Science and technology * Lua (programming language) * Latvia University of Agriculture * Last universal ancestor, in evolution Ethnicity and language * Lua people, of Laos * Lawa people, of Thailand sometimes referred t ...
, Scheme, D, Go, and other languages. Allegro comes with extensive documentation and many examples. Allegro supports
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
,
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
, Unix-like systems, Android, and
iOS iOS (formerly iPhone OS) is a mobile operating system created and developed by Apple Inc. exclusively for its hardware. It is the operating system that powers many of the company's mobile devices, including the iPhone; the term also include ...
, abstracting their application programming interfaces (APIs) into one portable interface. It can run also on top of
Simple DirectMedia Layer Simple DirectMedia Layer (SDL) is a cross-platform In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in sever ...
which is used to run Allegro programs in web browser using Emscripten. Released under the terms of the
zlib license The zlib license is a permissive free software license which defines the terms under which the zlib software library can be distributed. It is also used by many other free software packages. The libpng library uses a similar license sometimes r ...
, Allegro is
free and open source software Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
.


History

Initially standing for ''Atari Low-Level Game Routines'', Allegro was originally created by for the Atari ST in the early 1990s. However, Hargreaves abandoned the Atari version as he realized the platform was dying, and reimplemented his work for the Borland C++ and
DJGPP DJ's GNU Programming Platform (DJGPP) is a software development suite for Intel 80386-level and above, IBM PC compatibles which supports DOS operating systems. It is guided by DJ Delorie, who began the project in 1989. It is a port of the GNU Co ...
compilers in 1995. Support for Borland C++ was dropped in version 2.0, and DJGPP was the only supported compiler. As DJGPP was a
DOS DOS is shorthand for the MS-DOS and IBM PC DOS family of operating systems. DOS may also refer to: Computing * Data over signalling (DoS), multiplexing data onto a signalling channel * Denial-of-service attack (DoS), an attack on a communicat ...
compiler, all games which used Allegro therefore used DOS. Around 1998, Allegro branched out into several versions. A port to
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
, WinAllegro, was created, and also during this time, a Unix port of Allegro, XwinAllegro, was created. These various ports were brought together during the Allegro 3.9 WIP versions, with Allegro 4.0 being the first stable version of Allegro to support multiple platforms.


Allegro 5

Current development is focused on the Allegro 5 branch, a complete redesign of both the API and much of the library's internal operation. Effort was made to make the API more consistent and multi-thread safe. By default, the library is now hardware accelerated using OpenGL or DirectX rendering backends where appropriate. Many of the addons that existed as separate projects for Allegro 4 now interface seamlessly with Allegro proper and are bundled with the default installation. Allegro 5 is event driven.


Features

Allegro 5 supports following features in its Core API: * Configuration files – INI format file handling * Displays - working with windows * Events - event management * File I/O - abstraction over both real files and files inside some data file (e.g. ZIP * archive) * Filesystem - abstraction over both real file system and file system inside some data file (e.g. ZIP archive) * Fixed point math - might useful for embedded processors without FPU * Fullscreen modes * Graphics routines - colors, pixel formats, bitmaps, clipping * Haptic routines - force feedback and vibration on input devices * Joystick routines * Keyboard routines * Memory management * Monitors * Mouse routines * Path structures - file path manipulation * Shader * State - you can store and later restore the state of Allegro application * System routines * Threads * Time * Timer * Touch input * Transformations – transformation of coordinates for 2D and 3D * UTF-8 string routines * Direct3D integration * OpenGL integration


Addons

The community of Allegro users have contributed several library extensions to handle things like scrolling tile maps and import and export of various file formats. Also some parts of what used to be part of Allegro, is now separated as an addon in Allegro 5. These addons are distributed with the core library: * Audio addon * Audio codecs - .wav, .flac, .ogg, .opus, .it, .mod, .s3m, .xm, .voc * Color addon - color space conversion * Font addons * Image I/O addon - BMP, DDS, PCX, TGA, JPEG, PNG * Main addon * Memfile addon - treat a fixed block of contiguous memory as a file * Native dialogs addon * PhysicsFS addon - using archive as a file system * Primitives addon - drawing primitives (e.g. circle) * Video streaming addon


See also

* Borland Graphics Interface (BGI) * ClanLib * DirectX *
List of game engines Game engines are tools available for game designers to code and plan out a video game quickly and easily without building one from the ground up. Whether they are 2D or 3D based, they offer tools to aid in asset creation and placement. Engines ...
*
Microsoft XNA Microsoft XNA (a recursive acronym for XNA's not acronymed) is a freeware set of tools with a managed runtime environment that Microsoft developed to facilitate video game development. XNA is based on .NET Framework, with versions that run on Win ...
*
OpenAL OpenAL (Open Audio Library) is a cross-platform audio application programming interface (API). It is designed for efficient rendering of multichannel three-dimensional positional audio. Its API style and conventions deliberately resemble those ...
* OpenGL * OpenML * Raylib * SciTech SNAP * SDL * SFML * UniVBE


References


External links

*
Allegro Wiki

Games Using Allegro

Shawn Hargreaves's Homepage
{{Video game engines AmigaOS 4 software Application programming interfaces C (programming language) libraries Cross-platform software Free game engines Free software programmed in C Graphics libraries Linux APIs MacOS APIs MorphOS software Software using the zlib license Video game development software Widget toolkits Windows APIs