APOCALYX
Events
Subscribe:  iCal  |  Google Calendar
Vancouver CA   12, Aug — 17, Aug
London XE   17, Aug — 20, Aug
Cologne DE   19, Aug — 21, Aug
Cologne DE   22, Aug — 26, Aug
Seattle US   28, Aug — 30, Aug
Latest comments
by Clinton Crumpler
7 hours ago

very nice!

by Remingthon
10 hours ago

Very impressive work dude!

by Remzi
13 hours ago

daşşağına gurban

APOCALYX
Content
Tools
0 followers
1 posts
0 questions answered
APOCALYX is a 3D engine based on OpenGL, OpenAL and other free libraries suitable in particular for the development of Programming Games, the genre of games like GUN-TACTYX or JROBOTS, where the player programs the AI of his own team of bots to make it fight against teams written by other players.

OpenGL Support

scr2_01

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 though none of them are 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 rather than my code.

GLSL Support

The OpenGL Shading language (GLSL) is fully supported. Almost every kind of object that appears 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 Star Fields are available. Several backgrounds may be attached to the world at the same time specifying the required blending and orientation.

Stellarium

zeke19 (1)

When it’s necessary to simulate the real night sky, it’s possible to use the functions of the Stellarium library. This planetarium applies astronomic algorithms to compute the position os stars and planets, improving the realism of scenes where an orientation based on real star positions is required.
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 no 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. Two textures are applied: One that specifies the overall color of the complete surface, including shadows, and a detailed one that is tiled throughout. 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

zeke01

The engine even includes a kind of terrain larger than height fields. Its pattern is repeated to fill a virtually 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.

Tiled Terrains

The engine includes also a flat terrain that can be tiled with seamless textures. The pattern may be designed to repeat and fill a virtually infinite world.

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

zeke02

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.

Graphical User Interface

The engine includes three GUIs:

  • “AntTweakBar” is a library that renders simple widgets useful to tweak variables and personalize several aspects of the scene;
  • “GLGooey” is a library that implements a complete in-game graphical user interface;
  • “IUP” is a library that implements a complete native graphical user interface.

Scene Graph

The engine adds all the objects to be rendered to 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 to their position in the BSP tree for optimal performances.

Hierarchic Objects

zeke13

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 MD2, MD3, MDL, Cal3D, and MS3D models provide support for easy animation.

Textures Types

The engine defines different types of textures, in particular collection of textures, that can be easily animated, cube maps and 3D textures.

Procedural Textures

Textures can be created procedurally applying a set of algorithms based on perlin noise.

Scene, AVI and Graphics Render to Texture

modd06

Textures can also be created from 3D scenes, AVI movies or even from scratch thanks to graphic primitives drawing functions. Textures built using these methods are not static but may be modified frame by frame or efficiently frozen to show a specific frame.

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

owd_1

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 particular type of billboard, the tree, adds a streching movement to simulate wind effects.

Particle Systems

The engine includes two particle systems.
The simpler can interpolate, according to the life of a particle, parameters like: 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.
Then, also the more complex Particle library is included in the engine. It provides a wide range of parameters, effects and several ways to render the particles.

3DS and OBJ Models Loader

The engine includes a loader for 3DS and OBJ files and converts them to static meshes.

MD2 Models Loader and Animator

glgooey01

The engine includes a loader for MD2 files (Quake2 animated models format) and can animate them.

MD3 Models Loader and Animator

The engine includes also a loader for 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.

MDL Models Loader and Animator

dp3_05 (1)

The engine includes a loader for MDL files (Half-Life 1 animated models format) and can animate them. Animation can be played also in reverse order.

MS3D Models Loader and Animator

Also skeletal animated models in MS3D format are supported.

Planar Shadows

The engine renders planar shadows generated by a directional light shining on meshes and animated models.

BSP Levels Loader

scr06

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

zeke14

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.1) 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

tut002
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

modd07

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

bspd09

The engine includes a mechanism to define and control Finite State Machines.

Networking

Networking functions are available through WinSock2, LuaSocket or Etwork.

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.

Music

bspd07

MIDI or OggVorbis soundtracks and MP3 playback are supported.

Speech Synthesizer

Thanks to eSpeak, text to speech is supported.

Simple DirectMedia Layer

The interface to SDL permits the access to CD-Rom drives (for audio CD playback) and joysticks.

Compressed Data Management

yacs3

Thanks to ZLIB, the engine reads data from compressed archives and creates 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.

Unicode True Type Fonts

Thanks to OGLFT and FTGL, the engine renders True Type fonts and the text may be specified also in unicode format.

Completed Projects

gtg012

Demos apart, a complete game is based on APOCALYX: The GUN-TACTYX Programming Game, a CROBOTS-like game with QUAKE3-style graphics.

Articles
Questions
Still have questions?
A little introduction into the magical world of sound production for video games.

16 February, 2016

1598 views