Internally, Leadwerks Editor uses an EventHandler class for every interface in the program. The material editor is a class extended from the EventHandler. So is the little window that has all the controls to calculate normals. So is every viewport.
The event handler class has one important function:
Every EventHandler has access to events as they occur. This is how all program actions are handled in the editor.
The plugin system will work by hooking int
The latest game tournament brought in a small number of games, but they more than made up for it in quality. Each title that was submitted was pretty fantastic. The tournament was held during an odd month and there was no banner across the forum to remind people about it, so that is something that can be improved in the future. Each entry will receive an 11"x17" poster in the mail. Please make sure your name, address, and phone number (for customs) are correct and up to date in your Leadwerks ac
We've added a new website feature called Projects to help teams collaborate on their games. A project can be created with several privacy features so you can use this for public open-source games everyone can participate in, or for your team's secret project. I myself have started a project I intend to develop to demonstrate Leadwerks multiplayer capabilities:
You can add a forum, blog, and downloads section to your project and use it to host files, carry out discussions, and post updates
An update is available on the beta branch on Steam that adds support for multiplayer games with the following features:
NAT punch-through with relay server fallback.
Connectionless peer-to-peer UDP messages with multiple channels and optional reliable flag.
Public server list of available games to play.
Voice-over-IP for in-game chat (and taunts).
The new multiplayer system will open up a new range of game types that can be easily created with Leadwerks Game E
An update for Leadwerks Game Engine 4.5 has been pushed out on Steam. The following fixes have been made:
View projection for Oculus Rift VR headset is fixed.
Added VR.AButton, VR.BButton, VR.GripAxis for improved compatibility with Oculus Touch controllers.
Fixed terrain collision bug.
Added missing Workshop toolbar icons on Linux.
Fixed script editor not opening on Linux.
Fixed LoadAnimation bug.
Fixed missing fall damage on player controller.
Ladies and gentlemen, come one, come all, to feast your eyes on wondrous sights and behold amazing feats! It's "Cirque des Jeux", the next Leadwerks Game Tournament!
How does it work? For one month, the Leadwerks community builds small playable games. Some people work alone and some team up with others. At the end of the month we release our projects to the public and play each other's games. The point is to release something short and sweet with a constrained timeline, which h
I'm happy to announce the very first alpha release of Leadwerks 5 is now available.
String commands now accept a unicode overload. Add "L" in front of a string to create a wide string in C++.
Now using smart pointers. Simply set a variable to nullptr to delete an object. There is no Release() or AddRef() function.
Global states are gone. There is no "current" world or context. Instead, the object you want is passed into any function
Explore our reimagining of the Chernobyl nuclear exclusion zone with The Zone asset pack. This package contains over three gigabytes of high-quality game assets prepared to take advantage of the latest Leadwerks features. Use our ready-made map (included) to start your game or create your own post-apocalyptic environment.
Get it now on Steam with a discount during launch week.
"The Zone" DLC includes the following assets:
24 terrain textures
11 buildings (plu
Today we are pleased to announce the release of Leadwerks Game Engine 4.5.
Version 4.5 introduces support for VR headsets including the HTC Vive, Oculus Rift, and all OSVR-based hardware, allowing developers to create both room-scale and seated VR experiences. The Leadwerks virtual reality command set is robust yet incredibly simple allowing you to easily convert your existing 3D games into VR titles. To help get you started the source code for our Asteroids3D game has been updated for VR a
Three years ago I realized we could safely distribute Lua script-based games on Steam Workshop without the need for a binary executable. At the time this was quite extraordinary. http://www.develop-online.net/news/update-leadwerks-workshop-suggests-devs-can-circumvent-greenlight-and-publish-games-straight-to-steam/0194370
Leadwerks Game Launcher was born. My idea was that we could get increased exposure for your games by putting free demos and works in progress on Steam. At the same time
Leadwerks has historically had a small group of customers outside of the game industry who use our software for simulations, training, and visualization. Customers using our software products include NASA, Lockheed Martin, Northrop Grumman, and the British Royal Navy. Today I am happy to announce that in response to overwhelming demand we are now offering our services to build custom VR applications with Leadwerks.
This puts us in head-to-head competition with othe
A beta build of version 4.5 is now available on the beta branch on Steam. This updates the engine to the latest Newton 3.14. Versions 4.5 and 5 beta are now compiling side-by-side with the same source code. Because of major engine changes in version 5, some bugs may need to be resolved before the final release. Some preliminary information on updating C++ projects can be found in this thread.
Version 4.5 is planned to include official support for VR (both Vive and Oculus) and a new impr
Our most recent game tournament was a smashing success. We had fewer entries this time, but they more than made up for it with the great quality of this round of games. Without further ado I am happy to present the entries...
Behind Enemy Lines
Wow! This game by burgelkat features a variety of missions from blowing up drug manufacturing facilities to sabatoging a plane. Although the same mechanic is usually used, the action never gets old and you will keep playing just to find out
Today we are pleased to announce the release of Leadwerks Game Engine: Enterprise Edition, a standalone version of our popular 3D development software. The Enterprise Edition allows business users to install and use Leadwerks without the need for the Steam client. The new product joins the existing Standard Edition with Lua scripting and the Professional Edition with C++ and Visual Studio support, both sold on Steam.
The Enterprise Edition has already been approved for sale through N
Our website stores a lot of user generated content in the forum of images and attachments. Before Leadwerks Game Engine was on Steam the demands were even higher, since we had our own downloads and gallery sections that stored data on our server. Since the implementation of Steam screenshots and Workshop a lot of that has been offloaded onto the Steam servers, relieving our server from some of the data storage and transfer costs. (If you're interested, all our old content is archived on Googl
Fall is in the air. The leaves are changing colors, people are bundling up, and game developers are itching to try their hand at another community game tournament. How does it work? For 30 days, the Leadwerks community builds small playable games. Some people work alone and some team up with others. At the end of the month, on Halloween day, we release our projects to the public and play each other's games. The point is to release something short and sweet with a constrained timeline, whic
Leadwerks 5 is going to be developed alongside 4.5 with an extended period of beta testing and feedback. My goal is to build the world's most advanced game design software, tailored to the needs of our community and clients. Development will first focus on a new programming API updated for C++11 and then a completely new editor using Leadwerks GUI and based on the workflow developed with our current editor.
The first beta will support the following features right away:
I've begun implementing unicode in Leadwerks Game Engine 5. It's not quite as simple as "switch all string variables to another data type".
First, I will give you a simple explanation of what unicode is. I am not an expert so feel free to make any corrections in the comments below.
When computers first started drawing text we used a single byte for each character. One byte can describe 256 different values and the English language only has 26 letters, 10 numbers, and a few other cha
I have implemented C++11 shared pointers into Leadwerks Game Engine 5 and the following program now works. When you press the space key the box variable is set to NULL and the visible box on the screen disappears:
using namespace Leadwerks;
int main(int argc, const char *argv)
auto window = CreateWindow();
auto context = CreateContext(window);
auto world = CreateWorld();
auto camera = CreateCamera(world);
All classes in Leadwerks are derived from a base Object class. In Leadwerks 5 we separate simple and complex objects with the new SharedObject class.
Simple objects like a Vec3 ( a three-dimensional vector), an AABB (axis-aligned bounding box), and other items are all derived from the Object class. Simple objects are created with constructors. When we make one object equal to another the value is copied from one variable to another, but the two variables are still separate objects. Belo
Leadwerks Game Engine 5 moves Leadwerks forward into the future with massive performance increases and more advanced features, it also makes game development easier than ever before with three great new programming features.
I could write a whole article about the benefits of shared pointers. Shared pointers are basically a simple form of garbage collection that relieves you from the need to manually delete objects, but doesn't suffer from the slow speed of full garbag
Today I am excited to announce plans for the release of the first Leadwerks 5 beta version. Leadwerks 5 will roll out sooner rather than later, employing an extended beta period during which versions 4 and 5 will live side-by-side, using the same code base, with preprocessor definitions to compile each version. This allows me to fix small problems without forking the code, while I can implement new changes in version 5. The first features implemented will be the use of smart pointers for all
Leadwerks Game Engine 5 is being designed to make use of shared pointers. This eliminates manual reference counting, which has probably been the most difficult part of programming games with Leadwerks. Here are three concepts you must understand before you start using smart pointers in Leadwerks 5,
Don't Create Multiple Shared Pointers from One Object
When a shared pointer goes out of scope, it deletes the object it references. If another smart pointer was created separately that re
This shows the fundamental difference between shared pointers and manual reference counting.
void Material::SetTexture(Texture* texture, const int index)
if (this->texture[index] != texture)
if (this->texture[index]) this->texture[index]->Release();
this->texture[index] = texture;
if (this->texture[index]) this->texture[index]->AddRef();
void Material::SetTexture(shared_ptr<Texture> texture, const int index)