Languages Written In:
None (be one!)
APOCALYX is an OpenGL 3D engine with GPL license. The current implementation supports Win98 (or higher) and accelerated 3D graphic cards with OpenGL drivers.
LUA, SMALL and TinyC
|License Name||Price in $US||Source Code Included?|
Showing 1-1 of 1
APOCALYX (http://apocalyx.sf.net) is a 3D engine based on OpenGL and other free libraries suitable in particular for the development of Programming Games, the genre of games like GUN-TACTYX (http://guntactyx.gameprog.it) or JROBOTS (http://jrobots.sf.net), where the player programs the AI of his own team of bots to make it fight against teams written by other players.
The engine already includes features such as the rendering of sky boxes, cloud layers, lens flares, flat terrains and height fields even with reflections, infinite terrains, wavy surfaces, sprites, billboards, meshes with diffuse, gloss, environment and bump mapping, particles emitters, planar shadows and shadow volumes, the loading of 3DS and OBJ meshes, the animation of MD2, MD3 and Cal3D models, the loading of BSP levels with collision detection and lightmaps, the support for OpenGL vertex and fragment programs and the support of the GLSL language for vertex and fragment shaders, the spatialization of 3D sound, the management of compressed data and a particle-based physics engine suitable for the simulation of flags, cloths and articulated, soft or rigid bodies.
The engine also includes and provides easy access to libraries such as the ODE physics engine, the ColDet Collision Detector, the Cal3D Animation Library, the LUA scripting language to describe and control the scenes without any recompilation, the Tiny C compiler for fast compilation of C time-critical code and the C Scripting Language for fine control of bots' AI.
Then, to help the development of interesting AI, the engine also uses the MicroPather library (for A* path finding algorithms), the OpenSteer library (for the implementation of steering behaviors) and a library to define and control finite state machines.
Visit the Features page for a more detailed list: http://apocalyx.sf.net/info.php
The engine is completely scripted and no recompilation is needed to create new contents. You must simply program your scripts using the LUA language, or other languages available, and add your media files.
Visit the demos page to see how its easy to program simple games: http://apocalyx.sf.net/demos.php
* OpenGL Support
The engine is based on OpenGL. Version 1.5 is better to access some advanced features, but 1.1 should be supported as well. The renderer uses some common OpenGL extensions to improve the rendering speed, but none of them is really required. Be sure to install the latest OpenGL drivers for your accelerated graphic card: Almost the totality of the problems you can experience with APOCALYX is caused by old drivers.
* GLSL Support
The OpenGL Shading language (GLSL) is fully supported. Almost every kind of object that appear on the scene may be rendered with vertex and fragment programs or the more advanced vertex and fragment shaders. When the graphic card does not support those features, multi-pass meshes with diffuse, gloss, environment and bump mapping is still possible.
* Skies and Cloud Layers
The engine includes methods to render skies and cloud layers. Sky Boxes, Half Sky Boxes, Mirrored Sky Boxes, dynamic Sky Domes and Starfields are available. Several backgrounds may be attached to the world at the same time specifying the required blending and orientation.
* Lens Flares
The engine supports sun lens flares to improve the realism of outdoor scenes. This effect takes into account any occlusion, that prevents the sun to be seen by the camera, reading the Z buffer, so there is non need of particular object management to show or hide the lens flare.
* Flat Terrains
The engine renders a simple kind of flat terrain. It can be opaque, transparent or reflective and animated textures may be attached to it.
* Height Field Terrains
The engine includes also a more realistic kind of terrain realized through the use of height fields. The heights are defined using grayscale images. The applied textures are two: A large one that specify the color (including shadows) of the complete surface and a detailed one that is tiled. Height fields may increase their transparency downwards and a plane can trim the lowest triangles to create mirrored surfaces. A simple level of detail (LOD) is implemented.
* Infinite Terrains
The engine even includes a kind of terrain larger than height fields. Its pattern is repeated to fill a virtual infinite world. The heights are again defined using grayscale images with two applied textures perturbed by noise (two levels of detail for the terrain surface) and a color grid to specify overall color and shadowing.
* Wavy Surfaces
The engine support a particular kind of terrain that simulates the presence of ocean waves. The renderer uses a technique based on FFT to compute the waves in a fast and realistic way.
* Overlay with Multiple Viewports
An overlay is superimposed to the window opened on the main 3D world. The overlay can render texts, sprites and other 2D objects including viewports showing 3D worlds different from the main one.
* Scene Graph
The engine adds all the objects to be rendered to the a scene graph and orders them according to their distance from the camera. The ordering is important to render opaque and transparent objects in a fast and safe way. When a BSP level is loaded, objects are rendered according their position in the BSP tree for optimal performances.
* Hierarchic Objects
The engine includes the possibility to render objects linked to each other. The definition of a hierarchy makes possible the articulation of complex movements. In particular MD3 and Cal3D skeletal models provide support for easy animation.
* Textures Types The engine defines different types of texture, in particular collection of textures, that can be easily animated, and cube maps.
* Materials Management
The engine defines the properties of different materials. You can specify ambient, diffuse, emissive and specular colors, and diffuse (texture for the diffuse color), gloss (texture that specify the reflection properties of the surface), environment (texture that reflects the environment around the mesh) and bump (texture that defines the bumpiness of the surface) mappings. In alternative, more complex programmable materials can be defined through the use of vertex and fragment program or GLSL vertex and fragment shaders.
* Bumped Materials
As a heritage of the past, the engine supports also a basic form of bump mapping called emboss bump mapping. It is not a very realistic technique but it is fast on slower graphics card. The bumpiness is computed taking into account the nearest light source.
* Sprites & Billboards
The engine renders couple of textured triangles is several ways according to their position in front of the camera. There are sprites, that always face the camera, and billboards that always face the camera rotating around a fixed axis. A praticular type of billboard, the tree, adds a streching movement to simulate wind effects.
* Particle System
The engine includes a particle system. The main interpolated parameters of this system are: speed, acceleration, color, transparency and size, plus a circular movement for particular effects. A texture, even animated, the life length and a speed random factor are other parameters that can be specified.
* 3DS and OBJ Models Loader
The engine includes a loader of 3DS and OBJ files and converts them to static meshes.
* MD2 Models Loader and Animator
The engine includes obviously a loader of MD2 files (Quake2 animated models format) and can animate them.
* MD3 Models Loader and Animator
The engine includes also a loader of MD3 files (Quake3 animated models format) and can animate them. Animation can be played even in reverse order.
* Cal3D Models Loader and Animator
The engine supports skeletal animated models in Cal3D format thanks to the Character Animation Library included.
* Planar Shadows
The engine renders planar shadows generated by a directional light shining on meshes and animated models.
* BSP Levels Loader
The engine includes in addition a loader of BSP files (Quake3 levels format). The Quake3 shaders and the animated meshes of the scenes are not supported, but visibility information, light maps, light volumes, transparent textures and the bsp-tree collisions are.
* Particle-Based Physics Simulator
The engine supports a particle based physics engine suitable for the simulation of flags, cloths, articulated, soft or rigid bodies.
* ODE Physics Simulator
The engine supports a more traditional physics engine suitable for the simulation of articulated rigid bodies thanks to the Open Dynamics Engine included.
* Collision Detection
The engine detects collision between meshes thanks to the ColDet collision detection library.
* 3D math
The engine includes basic functions that perform 3D math computations.
* LUA Scripts
The engine supports the LUA language (version 5.0) through an interface that expose all the most important functions of the engine. The LUA interface is the main way to access the engine functionalities, so no recompilation is needed to produce demos, games or 3D applications.
* C Compiler
The engine includes the Tiny C compiler. It performs a very fast compilation of ANSI C sources, so time critical code can be loaded and compiled on the fly for fast execution just like a script is loaded and then more slowly interpreted.
* FASM Support
In the speed of compiled C code or the instructions of the Tiny C inline assembler are not enough, the engine can load ELF object modules written with the flat assembler, a fast assembler with interesting features.
* Scripting Languages
The engine supports also the C Scripting Language (CSL), the AngelScript language and the SMALL language. The latter manages the allocated memory and run step by step the scripts for a fine control of the execution. This features makes the development of Programming Games very easy. In particular, the bots' AI can access the properties of the world in a fair way and matches that involve several teams can be replayed with the same exact results providing only the original seed for random numbers generation.
* Scripts Console
The engine includes a console from which it's very easy to compile, execute and read the output of LUA scripts.
* Path Finding
The MicroPather library is included to provide easy access to path finding using the A* algorithm.
* Steering Behaviors
The OperSpeer library is provided to implement steering and flocking behaviors .
* Finite State Machines
The engine includes a mechanism to define and control Finite State Machines.
* 3D Sound
Thanks to OpenAL, spatialized 3D sound is supported. The engine adds the capability to select the sounds to be played according to their loudness and distance from the listener. OpenAL supports also the functions to perform sound capture.
In alternative, a version of the engine based on FMOD is available on request.
MIDI soundtracks and MP3 playback are supported.
* Compressed Data Management
Thanks to ZLIB, the engine reads data from ZIP files.
* JPG, PNG, TGA Image Loader
Thanks to JPEGlib and PNGlib, the engine reads JPEG, PNG and TGA images from which several kind of textures can be created.
* Completed Projects
Demos apart, a complete game is based on APOCALYX: The GUN-TACTYX Programming Game, a CROBOTS-like game with QUAKE3-style graphics.