Leadwerks Engine

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Leadwerks Engine
Developer(s) Leadwerks Software
Stable release Version 2.40 / May 10, 2010
Operating system Windows XP, Windows Vista, Windows 7
Type Game engine
License Proprietary, see LE-EULA
Website http://www.leadwerks.com/

The Leadwerks Engine is a 3D game engine powered by OpenGL 2.1. It was designed by Leadwerks Software. Leadwerks Engine 2.0 made its debut in The Game Creators May Newsletter[1] on May 1, 2008. The engine makes use of the Newton Game Dynamics SDK 2.0 (Newton Archimedes) for physics, and OpenAL and EAX for sound and 3D sound effects. The engine is based on a deferred renderer as of Leadwerks 2.1 and a unified lighting system that allows for dynamic lighting and soft shadowing without the use of lightmaps or any pre-compilation. Occlusion culling is performed on the GPU to remove the need for binary space partitioning or portal zones. The engine was developed by Leadwerks Software, and was written in BlitzMax.

Modules have been made by members of the community to allow the use of the engine in languages such as Java, C#, VB.NET, and Python, but C/C++, BlitzMax and Lua are its originally targeted and officially supported languages. The engine is unofficially supported in any language that can load a DLL.[2]

Contents

History [edit]

Leadwerks Engine first began as a 2D render/physics engine for the Blitz Basic programming language. After the development of the BlitzMax programming language, the 2D engine plan was discontinued, and work on a 3D, OpenGL-powered engine began.

At first, Leadwerks Engine 1.0 consisted mainly of basic rendering capabilities offered from OpenGL. After expanding to include physics and sound, Leadwerks Engine was released to the public.[3]

By version 2.0 of the engine in 2008, Leadwerks had implemented OpenGL 2.1, and now required a Shader Model 3.0 graphics card as a minimum, with Shader Model 4.0 recommended to get the best quality and speed. The engine used a forward renderer for lighting. Because of this, it suffered from large overhead and a hardware limit of 8 lights total.[4]

From version 2.1 on, Leadwerks switched to a deferred renderer[5] which moved lighting to a post processing step that requires input from color, depth, and normal buffers. This switch increased speeds by up to 50% in some places, removed the hardcoded lighting limit, and opened up a flexible shader framework for others to build on.

Version 2.3, released in November 2009 (11/23) added support for Lua scripting (per-entity and/or main program) and introduced an improved editor, now called Leadwerks Editor, replacing the Leadwerks Sandbox world building program. As of this upgrade, the price was raised from $150 to the current license cost of $200 ($199.95). Existing users could upgrade for the difference ($50), however towards the end of 2010 and in January 2011 all existing users who hadn't bought the upgrade were given it for free.

Features [edit]

See here [6] for a more complete overview of the engine's features.

Screen-Space Ambient Occlusion (real-time ambient maps) [edit]

Screen Space Ambient Occlusion is a technique used to simulate real-time global illumination. This technique has been used by Crytek in Crysis and has since been developed and added to the Leadwerks Engine. Leadwerks Engine also features real-time ambient maps. Soft shadows and lights are calculated dynamically with no pre-calculations or lightmaps. This allows level designers to place lights and geometry and see results instantly.

One major drawback of this technique is that it is performed on the full size of the buffer, and hence can cause slow down. The speed of the technique can be improved by performing SSAO on a half size or smaller buffer.

GPU skinning [edit]

Leadwerks performs animation or character skinning directly on the GPU, as opposed to CPU-Skinning. This increases speed and supports up to 256 bones per mesh.[7]

Licensing [edit]

The base license for the Leadwerks Engine is a commercial license allowing the creation of any type of game/simulation/visualization application with the exception of a game engine or overly modifiable game that will allow the end user to 'create something outside of the intended scope of the original product'.

A license costs $200 per user. A full source code license could be purchased previously for an undisclosed amount but is no longer available.

Evaluation [edit]

As of version 2.12, an evaluation of Leadwerks Engine had been released that featured 2 demos, an outdoor Island scene, and an Underground tunnel, as well as the Leadwerks Sandbox Map Editor, Material Editor, Model Viewer, and various content conversion tools.

The demo was published on the Download.com,[8] TechRepublic,[9] ZDNet,[10] and OpenGL[11] websites.

Another evaluation kit for the current major version of the engine, Ledwerks Engine 2.3, has been released in November 2009.[12]

Compatibility [edit]

Leadwerks Engine is supported on Windows XP and newer versions of the Windows operating system. Future support for Mac OS has been proposed as well as support for Xbox 360 via the Microsoft XNA platform.

Documentation [edit]

Documentation has been provided in the past in both CHM help files, PDF files, and HTML documents. Leadwerks Engine 2.x has a Wiki dedicated to documentation. It offers tutorials, documentation, an API of the SDK, and examples of different applications you can make and techniques you can use.

Criticism [edit]

The engine is written primarily in BlitzMax not C/C++. This is a barrier for console support, limiting access to a much larger customer base.

Another constant point of criticism is about the built-in terrain system. Although this allows to have a terrain of 4096² gridpoints in size (heightmap resolution), it supports only 5 texture layers due to hardware limitations and speed concerns. There may also be only one terrain at a time, making it impossible to implement a paging system for unlimited sized worlds.[13]

Furthermore, the SDK's API commands can not be called in a multithreaded manner, complicating the implementation of streamed media loading.

See also [edit]

References [edit]

External links [edit]