The 3.6 Release Candidate is now available on the beta branch. Since the last update, this adds camera render targets. You can set a texture to a camera's render target in the editor camera properties, and with the new command Camera::SetRenderTarget(Texture* texture). Render targets work both in the editor and in-game.
A terrain offset map has been implemented in the physics system, but it is not yet integrated into the engine.
Miniaturization has been a big trend over the last five years, but it isn't limited to mobile. It's impacted other areas of technology that I find much more interesting than cell phones. Previously, I wrote about the changing PC form factor, and how my current rig is a no-compromises full-size PC packed into a form factor about the size of a bread box.
I happen to have my hands on a few pieces of technology that are brand new, unreleased, or things I myself am creating. All these technolo
We're going to release a version 3.6 early with decals and the other enhancements I've recently made. This is scheduled for Monday, August 17th. At the same time we will be releasing Leadwerks Game Launcher as a free early preview title. So you've got exactly two weeks to prepare any other games you want to show off. I'm happy with the lineup we have of 25 games, and am looking forward to the launch so we can show your werk off to the world!
My market positioning with this product is goi
An HTML renderer for Linux has been implemented. This adds the welcome window and full Workshop inteface for Linux. This will be available soon for testing on the beta branch.
An update is now available on the beta branch.
A new decal entity type is available. Decals are used to project an image into surrounding geometry. A decal requires a material using a decal shader, located in the "Shaders\Decals" folder. The FPSGun.lua script has been updated to add bullet marks and gunshot wounds to objects a bullet hits. You can also place a decal in a map for adding large details to walls, terrain, or anything else.
Decals are rendered similarly to the way a
I've got a pretty good idea of what features I want to pack into Leadwerks Game Engine 3.6, and I'm ready to share them with you now.
Just about all the simple easy features I think I can implement are already built into Leadwerks, but there are some bigger more involved things I want the engine to support. Instead of doing these one at a time, I am doing research on them all, and changing my focus when I get stuck. I've got a big block of research done that all revolves around creating ne
Things are very good on the business side of Leadwerks, so I wanted to take some time right now for some research and development so I can give you guys some new and shiny features. It's very interesting to me how the design of Leadwerks 3 has laid a foundation that allows us to do lots of new things that have never been done, and now I am getting to dig into some of those areas and explore.
I've decided the area I want to focus on is all under the banner of "outdoor rendering". The vegeta
A new build is available on the beta branch with the following changes:
Fixed sidepanel tab switching bug.
Improved compatibility with intel graphics.
Fixes instance rendering bug with instance count over 256.
Added terrain hardware tessellation.
To enable hardware tessellation, select the Tools > Options menu item, select the Video tab, and set the tessellation value. Terrain layers much have a displacement map to display displacement mapping. Each terrain layer has an
Our "dynamic megatexture" terrain system contains a lot of powerful capabilities we haven't yet been able to tap into. One advantage of this approach is that it works extremely well with hardware tessellated terrain. In fact, our terrain system was originally designed with this in mind, which is the main reason we have a slot allocated for a displacement map. This video shows my first-pass implementation of the technique. When a displacement map is assigned to a terrain texture layer, painti
There's basically two kinds of vegetation, trees and grass.
Grass is plentiful, ubiquitous, dense, but can only be seen at a near distance. Its placement is haphazard and unimportant. It typically does not have any collision. ("Grass" includes any small plants, bushes, rocks, and other debris.)
Trees are fewer in number, larger, and can be seen from a great distance. Placement of groups of trees and individual instances is a little bit more important. Because these tend to be larger
The Leadwerks 3 vegetation system is being designed to side-step the bottlenecks that limited the Leadwerks 2 vegetation system. The Leadwerks 2 system involved large collections of 4x4 matrices for each instance, resulting in hundreds of megs of data stored with the map. Eliminating this data results in small map sizes and reduction of memory usage.
Here we have 10,000 trees being rendered (with no billboards), for a total geometry count of 14 million polygons. Memory usage is...zero!
PC towers have been about the same since they became popular in the 1990's, replacing the previous horizontal form factor:
Cases have gone from beige to black, but very little else has changed.
PC towers tend to be designed for the old ATX style motherboards, which were first introduced in 1995:
PC cases are still designed primarily for this form factor, ignoring the fact that many internal components have changed.
The sound and ethernet card are now typically built into
It's been an eventful first half of 2015, and the second half promises to be just as exciting. I'm happy to say the Steam summer sale was a big success. I haven't done the calculation yet, but this year's sale did a lot more than last year, and we keep adding more and more new users. So that makes me feel very good about the future.
I've begun researching a way to create our own built-in store based on Workshop and Steam microtransactions. This is the same system that TF2 uses for in-app
An update is available on the beta branch with the following changes:
Implemented "CollisionMesh"-named limbs in models.
Added "Strip vertex colors" option in model editor.
Workshop items can now be submitted as free or curated paid items, although no mechanism is in place yet to actually purchase items.
Curated items appear in the Workshop and can be voted for, but cannot be downloaded.
You can enter your bank information for receiving payments, and you can even c
The beta branch has been updated with experimental support for resizable viewports on Linux, including an option to switch to a single viewport. The object bar buttons have also been fixed to display tool tips properly.
You can try this now by opting into the beta branch on Steam. Let me know what you think.
I've set the release date for Leadwerks Game Launcher to Tuesday, July 21, right after the Summer Games Tournament ends. Your games will have the highest visibility during the first week the application is launched.
This is a great chance to demo your best ideas. Remember, you don't need a full finished game, just a simple playable concept. The goal is to make something fun!
Leadwerks Game Launcher is a unique application on Steam. The closest thing to it is the built-in game pl
I've recruited a professional designer to create a new icon set for the Leadwerks UI. This will provide us with a more consistent visual interface, with a similar look on all supported platforms.
My first instructions were to go bright and multi-colored, with colors similar to Lego pieces. We also included Windows 10 style icons as an influence. These looked good, but when plugged into the program the interface lost its visual consistency.
We next experimented with some grayscale
Last week I tried implementing a new method of controlling entity script fields. I was not satisfied with the current drag and drop from the scene tree method. I tried a system that was based on the entity name, which is how we used to do things in Quake mods.
Several people pointed out that this had a negative effect on their workflow, due to the difficult of copying and pasting groups of linked objects. So I began implementing a system that would create unique names when needed.
I s
A new update is now available on the beta branch. This is a refinement of the new entity script fields, which rely on the object name, rather than the awkward drag and drop motion that was originally implemented. I've modified the code so that when a map is loaded, any targeted objects will be renamed with a name that is unique in the scene. For example, if two objects named "WaypointA" exist in the scene, and one of them is linked to from another object, the object will be renamed "WaypointA
The creation of our complete tutorial series, written with the help of Aggror, has had a really good effect because it gives us a specification saying "this is how to use Leadwerks". Instead of having different approaches and opinions scattered around, we can all discuss the user experience and be on the same page. This has led to improved user feedback, as we are able to more easily identify any small hangups or inefficiencies in the workflow. I'd especially like to thank the user Malachi fo
In the next beta update, the way entity fields work in the script properties will be a little different. Instead of dragging an object from the scene tree onto the field, you will type in the name of the object (or copy and paste the name from the object's name field). This is being done to make the behavior more intuitive. After working with both approaches, I find the new way much easier to use.
This does however mean that an object that is used in this manner must have a unique na
Here's what's next for Leadwerks Game Engine.
Game Launcher
Leadwerks Game Launcher will be released in early preview mode when 50 games are reached. Right now we have 13. Filling the content up is a high priority, and the Summer Game Tournament will bring us closer to that goal.
I am mentioning this first because I want to emphasize that the number of games posted is my measure of how well I'm doing. Every action should be considered in terms of how it helps you guys publish more ga
The design of the App table in Lua was originally created to work with mobile, which has a more restricted program flow. The application calls App:Start() once to initialize it, and then will continually call App:Loop() until the function returns false. These two functions are found in the file "Scripts\App.lua".
Since we are focused on the PC now, it does not make sense to keep this structure. It also makes it more confusing to teach scripting. A conventional program layout with one mai
I'm working to move our Workshop implementation over to the newer SteamUGC API. There were recently some things updated, and that is still being sorted out. I'm also finishing up the game player.
The first incarnation of Leadwerks Game Launcher was pretty utilitarian (and ugly):
I realized this was pretty drab for a product aimed at consumers, so I designed a more outlandish colorful interface that was purely web-based:
This one looks nice, but you can tell it will start to fee
A new update is now available on the beta branch. This completes our migration to the newer SteamUGC system for Workshop content. Downloads should be working reliably now, but please let me know if you experience any trouble.
Steam protocol calls are now supported on Linux. Most notably, the Steam interface will open the Workshop now, instead of it opening in a web page.
An extra color option for the perspective viewport has been added, as well as several new color schemes. Select th