Jump to content
Entries in this blog
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)
Previously, I talked a little bit about shared pointers in C++11. These use automatic reference counting to track how many variables are pointing to an object. When the object is no longer being used, it is automatically deleted. This is similar to garbage collection, but doesn't involve the massive overhead of garbage-collected systems. In fact, shared pointers simply automate something we were already doing with the Release() and AddRef() commands in Leadwerks 4.
A weak pointer is lik
Leadwerks 4.x will see a few more releases, each remaining backwards compatible with previous versions. Leadwerks 5.0 is the point where we will introduce changes that break compatibility with previous versions. The changes will support a faster design that relies more on multi-threading, updates to take advantage of C++11 features, and better support for non-English speaking users worldwide. Changes are limited to code; all asset files including models, maps, shaders, textures, and materials
I have proven beyond a shadow of a doubt that I am very bad at shipping posters. The Winter Game Tournament was completed in January and I have yet to deliver your prizes. If you have a job opening for someone to ship prizes, or to ship anything at all, I am probably the worst candidate you could ever hope to find to fill said position. Seriously.
Part of the problem (although it's still not an excuse) has been that it is actually incredibly difficult to have custom USB keychains made.
C++11 introduces shared pointers, a powerful language feature that provides easy memory management without the overhead of garbage collection. The example below should look familiar to you:
using namespace Leadwerks;
int main(int argc, const char *argv)
shared_ptr<Leadwerks::Window> window = Leadwerks::Window::Create();
shared_ptr<Context> context = Context::Create(window);
shared_ptr<World> world = World::Create();
Leadwerks Software today announced the release of version 4.4 of their topselling game engine on Steam. This version adds a new GUI system, support for inverse kinematics, and enhanced visuals. The free update goes out today to over 20,000 paid users on Steam.
Leadwerks Game Engine 4.4 sees the introduction of Leadwerks GUI, a system for creating resolution-independent in-game menus. Custom GUI elements can be created with Lua script, or an item can be selected from a number of pre-built
Back around February I started working on a website update that included the following:
Responsive design everywhere.
Visual improvement of website.
Updated documentation system.
Tutorials for C++ programming basics.
Update forum software to new major version.
Forum moved to new URL.
All of that is now pretty much done. These changes improve the online Leadwerks experience and are independent from the software itself, so it
After a lot of research and development, Leadwerks GUI is almost ready to release. The goal with this system was to create an in-game GUI that was customizable, extendable, and could also serve as a windowed GUI for application development in the future.
The GUI system is based on the Widget class. Once a GUI is created on a rendering context you can add widgets to it. Each widget is a rectangular container with a padding area. The widgets can be arranged in a hierarchy and
Along with Leadwerks GUI, Leadwerks 4.4 adds an in-game menu that is available with the default Lua scripted game. You can use this to allow your users to adjust settings in the game, or provide a more sophisticated way to quit the game than simply pressing the escape key.
The default window size has been changed to 1280x720 when run from the editor. Your game will now run in fullscreen mode by default when it is launched outside the editor.
All of these changes are contained i
Leadwerks Game Engine 4.4, scheduled for release soon, features some updated and enhanced visual effects. In this blog I will talk about some of the adjustments I made. Having "The Zone" scene that Aggror recreated actually helped a lot to see how shaders could be improved.
Bloom / Iris Adjustment / HDR
The bloom and iris adjustment shaders have been updated to give bloom a wider and softer blur. Iris adjustment is faster and more intense now, which will make the outdoors areas seem
Distance fog is one of the most basic visual effects in 3D graphics, going back to the 1990s. Here is the effect in the Quake 3 Arena map "Fatal Instinct", which was shrouded in a dense orange fog:
Leadwerks Game Engine 2 had this available as a built-in effect, while the more flexible effects system of Leadwerks 3/4 had several Workshop shaders available to use, including one by Klepto and another one more recently added by myself. However, this has not been part of the official SDK
An update is up which saves all menu settings into your game's config file. When your program calls System:SetProperty() the inputted key-value pair is saved in a list of settings. Your game automatically saves these settings to a file when it closes, located in C:\Users\<USERNAME>\AppData\local\<GAMENAME>\<GAMENAME>.cfg.
The contents of the config file will look something like this:
In Leadwerks 4.3 we integrated GameAnalytics.com into our software, both in the editor and in the engine, as a tool developers can use to track their player statistics. A number of events were set up in the editor to fire when certain actions were performed, in order to gain better insight into how people were using Leadwerks. Here are the results.
The most popular primitives
Unsurprisingly, boxes are by far the most popular primitive created in Leadwerks Editor. The community has c
A new easy-to-use networking system is coming soon to Leadwerks Game Engine. Built on the Enet library, Leadwerks networking provides a fast and easy way to quickly set up multiplayer games. Each computer in the game is either a server or a client. The server hosts the game and clients can join and leave the game at will. On the other hand, when the server leaves the game, the game is over!
Creating a Client
You can soon create a client with one command in Leadwerks:
Leadwerks Software has released version 2.5 of their game development software Leadwerks Engine, featuring enhanced graphics and support for the Microsoft .NET application framework. Josh, CEO of Leadwerks said, “.NET support fits in with our goal of making game development simple and more approachable for programmers. We have an energetic community of coders who have been requesting .NET support for some time, and we’re happy to deliver that in Leadwerks Engine 2.5 along with enhancements to ou
An update for version 4.4 beta is now available. The Newton Dynamics library has been updated to the current version. Vehicles are temporarily unavailable, but everything else should work. The Newton DLLs have been moved into external DLLs, which allows the author of Newton to debug his own physics code in Leadwerks from Visual Studio.
You can get the update by opting into the beta branch on Steam.
Leadwerks Game Engine 4.4 beta is now available on the beta branch on Steam. This adds support for virtual reality with the OpenVR library. OpenVR supports both the HTC Vive and the Oculus Rift headsets.
To enable VR mode in your Leadwerks game, simply call the command below. If a VR headset is detected and initialized, this function will return true:
Any cameras not attached to a rendering target will render directly to the headset views. Both eyes will be rend
Visual Studio gives two options for creating C++ applications. Console applications use printed text to communicate with the user, harkening back to the pre-GUI days of DOS. The other option is a windowed application with a GUI interface, simply called "Win32 Project" in the Visual Studio project creation dialog.
A console application will use the regular old main function you know and love:
int main(int argc,const char *argv)
This is cross-platform compatible and runs on an
The Winter Games Tournament is complete, with a long list of fun mini-games made by the community. This tournament saw the release of many new and innovative types of games you want to be sure to try. To claim your prize, go to "My Profile" in the drop-down box that opens when you click your name in the upper-right part of this website:
On your profile page, click the button that says "Edit My Profile" and enter your name, shipping address, and shirt size.
Lone Water: Prologue
At last, it is time for the 2016 Leadwerks Winter Games Tournament! This is going to be a big one, for a few reasons.
We're very likely to reach 100 games in Leadwerks Game Launcher, which means it will be ready to move out of early access mode and be an official release on Steam.
As an experiment, you're getting two extra weeks to polish your games, with an extended deadline lasting until January 15th.
WHEN: The tournament begins Monday, December 5, and ends Sunday, January
With the Summer Games 2016 Tournament completed, it's time to review the entries. This tournament brought a new level of quality, with several small games that could be considered Greenlight-ready, made in just four weeks!
Test your spatial reasoning skills in this unique and challenging game. Navigate with your map and lit up clues to get to the end of the maze.
Now that you've had time to get acquainted with Leadwerks, it's time for the Summer 2016 Game Tournament.
WHEN: The tournament will start Monday, July 25, and end Sunday, August 21th at 11:59 P.M. (Pacific Standard Time).
HOW TO PARTICIPATE: Publish your summer-or-other-themed game to Steam Workshop or upload it to the games database before the deadline. You can work as a team or individually. Use blogs to share your work and get feedback as you build your game. If you need models for
Leadwerks Game Engine 4.1 is now available on Steam. This release cranks up the already legendary Leadwerks visuals to new levels of awesome.
Environment Probes The new environment probe entities can be used to add global illumination and reflections to any scene.
Volumetric Lighting Each light in Leadwerks can now display an adjustable volumetric effect using a ray-marching technique to give your game dramatic visuals.
Enhanced Post-Processing Effects Leadwerks 4.1 includes
Dexsoft Games, producers of game content with a library of thousands of game assets, have released five new material packs in the Workshop Store. All materials and textures are ready to use with Leadwerks, with source image files included in TGA format.
All of these can be purchased now through the links below, or through the Workshop interface in Leadwerks Editor. See the links below for more information and additional preview images.
Sci-Fi Materials 1
Sci-Fi Materials 2
Today we are rolling out three new paid model packs by artist Nova Dimension.
The Urban Interior Pack contains everything you need to populate your decaying urban settings with fixtures, furniture, and survival supplies.
The Morgue Model Pack provides a creepy setting for horror or apocalyptic games. Just imagine how scary this could be with the right lighting and music.
Finally, the Old Furniture Pack provides an extended collection of every type of furniture pr