A few years ago, some folks at NASA asked for my help with some VR projects they were working on. They had switched to Leadwerks and were getting better performance with that, but it still wasn't fast enough for what they were trying to do. I flew from California out to Goddard Space Flight Center to meet with them. When I saw what NASA was doing with my software, my jaw hit the floor.
Goddard Space Flight Center
Rendering performance in VR is critical because if the framerate dr
Built to power a new generation of game development tools, Ultra App Kit provides an easy-to-use C++ programming SDK for creating desktop GUI applications.
Unlike other alternatives like Dear ImGui, the Ultra App Kit GUI renders in retained mode rather than immediate mode, and is specifically designed for desktop GUI applications. This makes applications snappy and responsive when resizing or refreshing a window.
DPI scaling is baked into the design for resolution-independent
The foundation of our new game development tools is here, with a close-to-the-metal framework for building desktop applications.
Close-to-the-Metal Framework for Desktop Applications
We're approaching the end of a loooooooooong cycle of research and development...several years, in fact, have been spent building the fastest game engine in the world. A great game engine needs a great user interface, and Ultra App Kit provides exactly what we need. This will provide the backbone of o
Developer @Ghost has released his excellent Leadwerks-powered game Concealment.
Your life is in your hands
Go to an abandoned village to find your missing brother. Explore the objects that come in your way. Solve the terrible mystery of this mysterious place.
Concealment is a first-person psychological horror game. A game in which you need to solve the mystery of an abandoned ancient village.
You receive a strange letter from your brother. He asks that you ur
The GMF2 file format provides the fastest possible load times for 3D models. A preliminary specification and SDK for loading and saving files in the GMF2 file format is now available on GitHub here:
A Quake 3 MD3 model loader is included as an example.
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
TLDR: I made a long-term bet on VR and it's paying off. I haven't been able to talk much about the details until now.
Here's what happened:
Leadwerks 3.0 was released during GDC 2013. I gave a talk on graphics optimization and also had a booth at the expo. Something else significant happened that week. After the expo closed I walked over to the Oculus booth and they let me try out the first Rift prototype.
This was a pivotal time both for us and for the entire game industry. Mobi
Leadwerks Game Engine 5 will be backwards-compatible with asset file formats used in version 4. In addition, we are adding support for glTF 2.0 (GL Transmission Format), a new open-spec model format from Khronos with support for skinned animation and PBR materials. glTF will be our main 3D model format, for both development and final published models.
What's so great about the glTF file format?
Documented and Human-Readable
Unlike the "black box" FBX file format, which can only be re
The Turbo Game Engine beta is updated! This will allow you to load your own maps in the new engine and see the speed difference the new renderer makes.
LoadScene() has replaced the LoadMap() function, but it still loads your existing map files.
To create a PBR material, insert a line into the material file that says "lightingmodel=1". Blinn-Phong is the default lighting model.
The red and green channels on texture unit 2 represent metalness and roughness.
The Leadwerks 2 terrain system was expansive and very fast, which allowed rendering of huge landscapes. However, it had some limitations. Texture splatting was done in real-time in the pixel shader. Because of the limitations of hardware texture units, only four texture units per terrain were supported. This limited the ability of the artist to make terrains with a lot of variation. The landscapes were beautiful, but somewhat monotonous.
With the Leadwerks 3 terrain system, I wanted to reta
Leadwerks Game Engine 4.6 is now available on Steam! This free update adds Steam peer-to-peer networking, lobbies, voice chat, and more. A new multiplayer game template makes it easy to get started with your own multiplayer games, adding new depth and interactivity to the fun.
We've also added over 100 bug fixes, making this the most stable release ever to build your game on!
New parameters for bet
A new update is available for Leadwerks Game Engine 4.6 beta. This fixes many bugs.
Slow kinematic joint rotation
Heightmap import flipped
Map switching crashes in VR
Project Manager cancel button bug
The Zone DLC map failing to load
Ball joints not working
Take a look at the bug reports forum to see all the recent fixes in the engine and documentation.
This is a full update, with new builds for Windows and Linux, for C++ and Lua games. You
The beta branch on Steam is now updated. Version 4.6 introduces peer-to-peer multiplayer capabilities with a new multiplayer game template. Check out the new features in the documentation:
The physics library is updated to the latest version of Newton.
The editor has some enhancements as well:
Model editor view range is calculated from model extents, so if you load a model that is huge it won't be invisible.
Model editor displays n
Here's a look at the new vehicle system that is being developed. The API has been simplified so you simply create a vehicle, add as many tires as you want, and start using it. The AddTire() command now accepts a model and the dimensions of the tire are calculated from the bounds of the mesh.
int AddTire(Model* model, bool steering=false, const float spring=500.0f, const float springrelaxation = 0.1f, const float springdamping = 10.0f);
void SetGas(const float accel);
I'm wrapping up the new multiplayer capabilities for Leadwerks 4.6, and I am very excited about what this offers developers.
We saw previously how the lobby system is used to create or join games, and how to retrieve Steam IDs for messaging. Once we have joined a game we can start sending messages with the P2P::Send command, which includes a few overloads:
static bool P2P::Send(uint64 steamid, const int messageid, const int channel = 0, const int flags = 0);
static bool P2P::Send(uint64
The next update will include a new networking system with built-in voice chat for multiplayer games.
Voice communication is built into your game and can be enabled simply by turning it on when a specific key is pressed:
You can selectively filter out users so your voice only gets sent to your own team or to a specific player:
void Voice::SetFilter(const uint64 steamid, const bool state)
When another player sends their voice
The new Lobby system in Leadwerks 4.6 allows you to create a public listing of your multiplayer game for others to join. This uses the Steamworks library. You can tap into the Steamworks lib by piggybacking on the default "SpaceWar" example game, which uses the Steam app ID 480. This is set up by default when you create a new Leadwerks project.
Now you might think of a lobby as a place where people hang out and chat before the game starts. You can treat it like this, but it's best to keep t
A new build is available on the beta branch. This changes the model picking system to use a different raycasting implementation under-the-hood. Sphere picking (using a radius) will also now correctly return the first hit triangle. You will also notice much faster loading times when you load up a detailed model in the editor!
Additional parameters have been added to the Joint::SetSpring command:
void Joint::SetSpring(const float spring, const float relaxation = 1.0f, const float damper =
This tutorial demonstrates how to create a high-quality skybox for Leadwerks Game Engine using Vue.
Cloudy Blue Skies.zip
Required Third-Party Programs
Loading the Example
Run Vue and select the File > Open menu item. Extract the zip file above and open the file "Cloudy Blue Skies.vue".
Atmosphere and Clouds
You can modify the appearance of the sky with the Atmosphere Edito
An update is available for the new Turbo Game Engine beta.
Fixed compiling errors with latest Visual Studio version
Fixed compatibility problems with AMD hardware
Process is now DPI-aware
Added high-resolution depth buffer (additional parameter on CreateContext()).
Subscribers can download the new version here.
A small update has been published to the default branch of Leadwerks Game Engine on Steam. This updates the FBX converter so that the scene units (meters, feet, etc.) are read from the file and used to convert the model at the proper size. Previously, the raw numbers for position, scale, and vertex positions were read in as meters. The new importer also supports both smooth groups and per-vertex normals, so models can be imported more reliably without having to recalculate normals.
Leadwerks Game Engine 4.4 features an upgrade to the latest version of Newton Dynamics, along with a bunch of new features to enhance physics.
The new kinematic controller is a joint that lets you specify a position, rotation (Euler or quaternion), or a 4x4 matrix to orient the body to. You can set the maximum linear and angular force the joint may use to orient the entity. This allows you to create a kinematic controller that only affects position, only affects rot
The beta branch has been updated. The following changes have been made:
Rolled beta branch back to release version, with changes below.
Added new FBX converter.
Fixed Visual Studio project template debug directory.
Fixed Visual Studio project template Windows Platform SDK version problem.
If everything is okay with this then it will go out on the default branch soon.
Here are the results of the Summer Games Tournament. Make sure you update your mailing address, because posters are being sent out immediately!
The arcade classic "Space Invaders" has been re-imagined with modern graphics and cute 3D aliens!
Constant is an abstract game about capturing cubes. Make sure you read the instructions!
Procedurally generated levels and a lot of interesting rooms make this FPS worth trying. Watch out for traps
Summer is here, and you know what that means! Yes, it is time for another LEGENDARY game tournament. This year the theme is "Retro Gaming". Create a modern take on an arcade game hearkening back to the days of NES, Neo Geo, Sega, or just make anything you want. Either way, you get this totally radical poster as a prize!
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 mont