Carnivores Wiki:Action Forms website/engines/engines.htm


 * This is an archive of, as archived by the Internet Archive Wayback Machine at 

The engine licensing
Action Forms Ltd. gives game developing companies an opportunity to use our newest engine for creating their own titles. Please send your questions to info@action-forms.com for details. You can find basic engine features below.

Engine overview
Our newest engine combines terrain renderer code capable of processing huge outdoor areas, like seen in Carnivores series, with absolutely new indoor renderer. This engine can be used for development of purely 'corridor' style games, terrain based projects as well as fully featured indoor/outdoor titles. The last one is the most important usage of our engine, where vast outdoor areas are combined with huge complex structures that can be placed both upon terrain and underground.

There are no limitations on complexity of structures on the map. In fact, designer can build almost everything he wants both on terrain and below the ground. The only limitation is speed. We worked really hard to make our engine work exceptionally fast. It clips off underground structures when player is on terrain and it also clips off terrain if player is inside the building. The engine renders only visible part of terrain when looking at it through the window for example. It was not an easy task to accomplish, because terrain and corridor engines are absolutely independent. Moreover, in our new engine terrain is not represented as a set of polygons, like in some other games which combine indoor and outdoor environments. Therefore, our latest technology allows you to create interactive world of such size and complexity as no other does.

Renderer
Renderer supports two most popular graphics APIs: OpenGL and Direct3D. This way you will be able to set the fastest or the most compatible API for your 3D hardware.

Here's the list of the most important features: * if 3D hardware supports this feature
 * Unique indoor/outdoor engine
 * Atmospheric effects such as multi-layered sky, water, volumetric and distant fogs, etc.
 * Scripted texture layers (multi-texturing)
 * Scripted GFX objects
 * Skeleton-based models and hierarchical animation system
 * OpenGL, Direct3D support
 * T&L support *
 * 16/32 bit video depth
 * 16/32 bit textures
 * S3TC - texture compression *

Scripting system
The core of all the events (graphics output, sound, AI) is our scripting system.

Game processes such as any geometry animation, particles generators, dynamic lights and sound sources are defined in separate script files. Most of these scripts can be very simply generated in Editor. For example, to animate any part of geometry you just have to click Record tool and then make any deformation (movement, rotation, scaling...) and Editor will generate corresponding script.

Then you can simply use a built-in script editor to set acceleration, delays, link sound files, call GFX objects generators, etc.

Every GFX object in the game is also written as an external script file, which describes how it acts in the game environment and renders onto the screen. This allows designers to create new GFX objects, apply them to any game process without any changes to the engine code. Each GFX object can generate any other object depending on assigned event. Usage examples: to create wave ripples, water drops, explosions, particles systems etc.

Multi-texture technology allows you to script any visual effects in external file and apply it to any part of level geometry.

Network
Internal game structure is based on Client-Server technology. Server always works in multiplayer mode. Single player mode is just the particular case when only one local client is connected to server. Network code uses TCP/IP protocol for connection.

Audio
The audio engine is presented in both software and hardware based renderers.

Software audio driver was created for compatibility with obsolete sound hardware. It represents a simplified version of hardware 3D audio renderer, with minimal features set, like 360 degrees sound positioning and distant fade.

Hardware based renderer includes several external drivers for different 3D-audio hardware APIs: DirectSound3D, Aureal A3D and Creative Labs EAX.

DirectSound3D is a 'hardware' version of software audio mixer. It features hardware 3D sound positioning and distant cueing with real air absorption model.

Creative Labs Environmental Audio eXtensions (EAX) adds more realistic features for sound, like advanced air absorption model and powerful environments reverberation engine. Using EAX we have created realistic environments for our terrain engine, for example mountains, plates and caves have different reverberation parameters.

Aureal A3D is the most powerful hardware based audio renderer, featuring advanced air absorption model, and environment reverberation engine. Plus A3D renderer features Wavetracing™ engine, which allows to create realistic indoor environments by calculating sound waves reflections from level geometry. Both A3D and EAX renderers support sound occlusions.

We have created an advanced audio resource manager, which wisely shares limited hardware resources to virtual audio channels. Other 3D audio technologies (like Sensaura and Qsound) are supported through DirectSound3D, EAX or A3D renderers.

Outdoor engine
The 'outdoor' part of our engine is a very enhanced version of Carnivores 2 terrain code. Let's take a look at its features.

Terrain map
Its area is huge - about 4 square kilometers. More technically, we're using 512*512 cells of grayscale elevation (height) map. Every cell is 4*4 meters, which is twice as big as player's height. It provides great level of terrain detail, allowing us to create realistic and smooth surface. Every cell can be mapped with lifelike seamless tiled texture. Also, to create realistic landscape, the transitive textures were implemented, i.e. the cross-fade from texture A to texture B. Our terrain editing tool - AltEditor has the feature to create necessary transitive textures automatically, according to the parameters set by level designer.

To add more realism to the outdoor scene, we're using simple distant or location volumetric fog.

Water system
One of the most unique feature of the engine. We're using the natural algorithm for calculation of water transparency. Its based on angle player is looking at the water surface. Add here:
 * Distant fade, when sun loosing its force underwater
 * Flashes from the sun
 * Distant fogging while underwater and you will get the idea how realistic-looking water was achieved.

Objects
Our outdoor engine is capable to process and output the big amount of objects in the view with high framerate. We're talking here mostly about vegetation, as seen in our Carnivores line of games, where you've been able to walk through real forests. Our newest engine will bring "more life" in the world of flora and feature much more interaction: For the better detail and to provide more depth of flora, object placement is extended up to four items in the terrain cell.
 * Player will be able to climb the tree, if its geometry allows to do so
 * Trees and bushes are able to interact with surrounding environment. Stagger in case of wind or collision (with player, animal, and bullet.

Sky system
The most stunning feature of engine is realization of sky system. As in real life, our sky system is made of model of the sphere, which represents color gamma, or spherical gradient of the sky dome. This way we're able to create any time of day or night, beautiful sunset or gloomy weather.

If you'll like to add some extra detail to your horizon or appearance of sky, our engine supports Skybox - left/right/front/back/up/down projections of your favorite environment as seen in Quake 2 or Half-Life. Also, you can save 6 views for custom Skybox right from the engine. The main disadvantage of Skybox is that sometimes it may look ugly in 16-bit video mode due to the lack of color depth, while Skysphere will look great anyway.

Clouds are represented as the layer placed under the sky dome. In general it's 256*256 32 bit TGA seamless texture with alpha-channel to define clouds appearance.

You can place the light source in the sky, for example the sun or the moon. Then, it is possible to define altitude and light power of the source. It will tell the engine how to render shadows from the objects, sectors and terrain. Combining Skysphere gradient, Clouds layer and light source in a natural-looking way, we're able to create beautiful and immense vistas.

Ambient sound
Sound is very important aspect of the game. It takes the great part of creating the atmosphere and perception of the game. Keeping this in mind we've tried to create the most sophisticated environmental sound engine. By using terrain cells, level designer can fill the environment with appropriate base ambient sounds (wind, water) and add 'random sounds' like for example: distant animal calls, insects rattling, trees clicks, etc.

Indoor engine
The indoor part of our engine is the most complex and complicated. Its main core is powerful portal engine. Why portals? You put a portal in your custom-created sector to connect it to other sectors, terrain and sky. Using our level editing tool - Edit, we create logically complete complex structures - 'sectors'; it may be room, hall or cave in the mountain. Then, you connect sectors by portal surfaces. Therefore, engine will determine the visibility of surfaces to be rendered real-time. Level designer can assign various flags to the sectors to tell the renderer what and how it should process.

Of course, our engine is fully featured for up-to-date game development:
 * Powerful portal engine: do not waste your time to render VIS, like in other engines that use BSP
 * Extend portals through portals
 * Clips sectors geometry through portals (renders only what you see)
 * Fast real-time processing of very complex environments
 * Color light sources, static and dynamic
 * Special 'sun' light source to realistically render and shadow-map both indoor and outdoor environments
 * Scripted multitextures (similar to 'shaders' in Quake 3 Arena)
 * Particles generators: create realistic waterfalls, smoke, dust, fire, sparks effects
 * Integrated scripting language: write your own processes, actions, GFX or sound effects. Change everything you want in the game, or create your own!

Models
Models are things that generally are not static by nature, or do not present a part of terrain or sector geometry: The most advanced and complex are character models. Engine uses hierarchical, skeleton - based objects system with enhanced skin techniques.
 * Objects on the terrain (vegetation, rocks)
 * Game characters
 * Game weapons
 * Game power-ups, keys, key-cards, etc.

Engine keeps all the animations in the compressed keyframes format, and then unpack it to the matrix form in real-time. Other features are:
 * Facial animation
 * Multiple levels of detail system
 * Frame-to-frame interpolation and animation cross-fade are supported to provide smooth movement and lifelike acting of in-game characters.

Editing tools
We're using a number of powerful tools in order to bring to life our game worlds.

Here they are:
 * Editor
 * AltEditor
 * Designer
 * Animator

Editor
Editor is the program used to create complex interconnected structures named 'sectors'. If you want to build either city with buildings and streets or underground base, you're using Editor. The program provides you with simple interface and small number of very powerful tools to use. Once adapted to this program you'll find it very flexible, fast and easy to work. Since our indoor engine is portal-based, we're using different principles of building levels as opposite to Unreal or Quake. You do not use simple brushes to assemble more complex level architecture, then wait while engine calculates visibility tree. Instead of this you simply build your level from the scratch with points and surfaces. You can create any geometry you want, and anytime you know the real count of points ant polys in your architecture. This may sound not easy to do, but when you try the program you'll be surprised how easy and intuitive it is. The biggest advantage of portal engine is that geometry you've built is not static, i.e. you may modify it on the fly. No additional rendering or visibility calculation to get the finished look. Create the number of logically completed sectors, interconnect them with 'portal' surfaces and place it on/under the terrain map in AltEditor.

Creating actions, or movement and interaction with sector's geometry is very simple too. You should unite a number of surfaces you need to move, rotate, scale or modify in a number of different ways, into the 'group'. Then place the group in 'starting' location, press the 'record' button; modify it; press the 'stop' button and the action is complete. Bind it to the appropriate 'trigger' group to activate it and use within the game. Since all the actions are stored as 'scripts', you can always create more complicated, compound actions, which include different modifications to create very complex and amazing effects in some nontraditional way.

It's important to add that Editor uses Direct3D API and T&L feature to render all its views to achieve ultrahigh framerate even in very polygon-intense scenes.

AltEditor
The main purpose of AltEditor is working on area's terrain map.

What is the terrain map? In general, it's 512*512 grayscale BMP texture, this way we have the grid of 512 columns in 512 rows of 1-byte data. Therefore, the max height of terrain cell may be 255 units. We count height units in half-meters, so comparing to the real world, the max height of terrain will be 128 meters. As to the terrain grid, every column=row=4 real-world meters. We've got 2*2 kilometers of playable area full of dense forests, lakes and complex structures above and below the earth's surface.

Every cell can be mapped with some tiled texture, representing actual terrain surface: sand, grass, rock, etc. If you want to create realistic landscape, there should be seamless transition from one texture into another. AltEditor has the feature to create necessary transition textures automatically, according to the parameters set by level designer.

AltEditor is the program where you 'assemble' all the components of the game world together. Here is the list of components: The base work, to create, texture the terrain and place the objects, is done in AltEditor up-down 2D view using powerful 'Fill' and 'Fill transitive' tools where you can assign various parameters. Then you may fine-tune specifically areas of the map by hand using 'Paint' tool.
 * Terrain height map
 * Terrain textures
 * Simple objects created in Designer (vegetation)
 * Complex structures (sectors) imported from Editor
 * Water systems (lakes, ponds, waterfalls)
 * Ambient sounds

While 2D view is great to start the map, quickly fill it with necessary objects and look at it in full-size, we're using Direct3D view to edit and finish the most significant to game's progress locations. It's great for adjusting outdoor terrain to indoor architecture, since sometimes it's very handily.

Let's see how we create playable area map step-by-step: Pretty complicated at the first sight, but once we release the first game, all the editing tools and detail manuals you'll see how great is to build not just the bunch of corridors, but your own realistic environment, small digital model of the living world.
 * 1) Create some simple terrain map and load it to AltEdit. There are number of ways to do this:
 * 2) * draw it in your favorite paint program
 * 3) * find it at one of the Internet's Digital Elevation Maps databases
 * 4) * import from the terrain generation program
 * 5) Texture-map the terrain. Get the textures from:
 * 6) * resources of the game using our engine;
 * 7) * Internet free textures resources;
 * 8) * create your own
 * 9) Make some structures in Editor and place them on the map.
 * 10) Fill the map with trees, bushes and other vegetation. Use some from game's resource or make by yourself in Designer.
 * 11) Create lakes and some ponds.
 * 12) Place ambient sounds and volumetric fogs to add to the atmosphere.
 * 13) Use the available sky system or invent something original.
 * 14) Place game-dependent objects: characters, power-ups, keys, etc.
 * 15) Run the engine and play the game!

Designer
Think about Designer as of a very simplified version 3DStudioMax modeler. It gives you several basic tools for creation of simple objects as well as some advanced techniques to modify it. There are Build (create object, vertex, face), Modification (move, rotate, 2D/3D scale) and other usual tools to build the model.

Texturing tools are very advanced:
 * 3D-paint window: paint the model in 3D view.
 * Auto-mapping feature, that places image of the model wireframe upon the texture, which can be substituted by appropriate picture.

Of course, Designer uses Direct3D API to take advantage of your 3D-video card.

Animator
Create tracks of animation for game characters in Animator. It has simple and easy to use basic modifications such as move, rotate and scale. You can set appropriate keys-per-second variable to adjust the quality of the animation up to your needs.