Jump to content
  • entries
    943
  • comments
    5,899
  • views
    922,576

About this blog

Learn about game development technology

Entries in this blog

Beta update available

An update is available on the beta branch. This only updates the editor, only on Windows.   The environment probe entity should now be available to create in the editor, for all users.   When shaders are compiled with the "Debug" button (F5) they will now be run through the GLSlang reference compiler first. This can help to catch errors that more permissive hardware lets slide by (Nvidia). The goal of this is to prevent games from not working on AMD and Intel hardware when they use third-

Josh

Josh

Leadwerks 4.1 Beta

Leadwerks Game Engine 4.1 beta is now available on the beta branch on Steam. This is the final version 4.1, barring any bug fixes that are made before the release later this month. I am going to focus on just resolving bug reports and adding new documentation for the next two weeks.     4.1 adds environment probes, which have been covered previously, and volumetric lighting. Point and spot lights can display a volumetric effect by adjusting the "Volume strength" setting, found under Ligh

Josh

Josh

Banding and Dithering

I came across a very interesting presentation that talks about how to avoid "banding" artifacts in game graphics. The author uses dithering to add noise to an image and break up the visible lines your eye can detect. This even works with audio. When noise is added to the mix, the original tune appears to become more high-fidelity than it actually is:     I was able to use this concept to improve the appearance of banding in shadow acne in a low-resolution spotlight with a large volum

Josh

Josh

Try the new environment probes

Environment probes are now available on the beta branch. To access them, you must set the "UnlockBetaFeatures" setting in the config file to 1, then start the editor. Environment probes are available in the "Effects" object creation category.   Environment probes should be placed with one in each room. Use the object scale to make the probe's volume fill the room. (Like decals, probes will display a bounding box when selected.) You do not have to worry about covering every single space as

Josh

Josh

High Dynamic Range Rendering

First, there's a lot of confusion about what HDR actually is, and I want to clear it up. HDR does not automatically mean "iris adjustment" although the two often go together. HDR, at its simplest, means that colors won't get washed out during the rendering pipeline.   Game graphics inputs are 8-bit (per channel textures). The output is 8-bit (unless you have a 10-bit monitor). So if we only perform one rendering step, it is impossible to lose color resolution. Even if our lighting step br

Josh

Josh

Global Illumination Research Pt 6

A "roughness" property has been added in the material editor. This is a simple slider with a value from zero to one. (The default material roughness value is 0.5, so all your existing materials won't turn into mirrors when the update comes). Changing the roughness value will have no visible effect unless an environment probe is visible in the scene, although I could modify the lighting shaders to make this control gloss in the specular calculation:     Two new commands have also been add

Josh

Josh

Global Illumination Research Pt 5

I was able to work out the shader fixes and now I can show you a good schematic of how the new lighting system works. Instead of a single light source, we now have three types of lighting that are combined for the final render. Direct lighting is the standard deferred lighting model you know and love from Leadwerks. This looks great, but shadowed areas have always looked pretty flat.   The second component is the new GI ambient lighting. This is a view-independent lookup on the local cube

Josh

Josh

Global Illumination Research Pt 4

I've been puzzling over a problem that exhibits itself on flat surfaces. Cubemap reflections appear "jittery" as if they are been rounded off to a lower-precision float. At first I thought this might mean that our best-fit normals routine using 8 bits per channel might lack the precision needed for cubemap reflections. However, when I changed the normal texture in the gbuffer to a 32-bit floating.point RGBA texture, the problem remained. This error is also visible in Igor's SSLR shader.  

Josh

Josh

Ambient Light Research Pt 2

After a resolving a few odd and ends I was able to create a proof of concept of the deferred environment probe idea I talked about earlier. The environment probe is basically the same as a point light. They have a range and affect a finite area. The color property can be used to adjust the intensity of the ambient lighting / reflections. Basically, you want to cover your indoor environments with these, but it's okay if you miss some spots. The environment probes fade out gradually so you do

Josh

Josh

Global Illumination Research Pt 3

The environment probe feature is coming along nicely, spawning a whole new system I am tentatively calling "Deferred Image-Based Lighting". This adds image-based lighting to your scenes that accentuates the existing deferred renderer and makes for higher quality screenshots with lots of next-gen detail. The probes handle both image-based ambient lighting and reflections.   Shadmar helped by implementing parallax cubemap correction. This provides an approximate volume the cubemap is rendered

Josh

Josh

Ambient Lighting Research

Previously I talked about the idea of implementing a new "Ambient Point Light" into the engine. This would work by rendering the surrounding environment to a cubemap, just like a regular point light does. However, this type of light would render to a color buffer instead of just a depth buffer.   The light could then be rendered to display ambient reflections and soft lighting on the surrounding environment. While it would not provide perfect real-time reflections, it would give an extra bo

Josh

Josh

Shifting to DLCs

As described previously, the open-market model store approach does not work for Leadwerks and I am shifting my focus to providing DLCs made by third-party authors. The first thing I want to do is create more consistent branding that all DLC model packs will use. Here's what I came up with:           I'm also developing terminology to apply consistently to say what the DLC contains. The meaning of "Material Pack" and "Model Pack" is obvious. "Action Figures" will refer to charac

Josh

Josh

Mercenary Action Figure released as DLC

The Leadwerks Mercenary Action Figure has been released as a DLC. Previously, I talked about how the Workshop Store was not selling much content, and that we need game-ready content to be available to use in Leadwerks. At the same time, DLC sales are quite good, which seems contradictory.   To date, this item has total sales of $299 since release and cost $2000 to produce. (Additional characters will be a bit cheaper if we reuse animations.) After Steam's cut, I've lost $1800 on this proje

Josh

Josh

Beta update available

An update is available on the beta branch with the following changes: Fixed System::Print() command which was printing char* values as bools. Added optional parameter to the end of Entity::SetInput(). Add optional parameter to the end of Emitter::SetVelocity() Fixed light occlusion culling bug. Fixes a sound source position bug.

Josh

Josh

Rethinking the Workshop

As discussed before, sales in the Workshop Store have been measly compared to what the DLCs regularly do. People just don't want to use it. Without revenue coming in, I can't convince third parties that it is a good idea to sell through this system (it isn't), and no new products will get added. We need a large library of content to be available for use in Leadwerks, but this isn't working. So I am moving on to another approach.   The "Workshop" menu item in the website header has been pla

Josh

Josh

Beta Update Available

An update is available on the beta branch which makes changes to the way DLCs are installed. The SciFi Interior Pack has been added as a paid Workshop item. You can obtain this item by either purchasing it through the Workshop Store interface, or buying the DLC on our Steam Store page. At the time of this writing, the other model pack DLCs have not been added yet.   To install the SciFi Interior Pack DLC you simply browse to it in the Workshop interface. If you own the DLC the "Buy" button

Josh

Josh

Designing the Leadwerks Hoodie

I sent my mockups off to the designer to create our very own hoodie as a super tournament prize. This garment will come with not one, not two, but three separate printed graphics on a high-quality American Apparel hooded fleece. Here's roughly what it will look like:     And here is a t-shirt design for a future production run:  

Josh

Josh

Prizes Shipping

If you entered the Winter Games Tournament, I am shipping prizes to you now (late, I know).   You will receive a friend request from the Leadwerks Software Steam account. Please accept this. I will need your mailing address in order to ship your prize.

Josh

Josh

The Financials of Custom Content

The Leadwerks Merc character, who I think will go down in history over the next few years second only to the infamous "Crawler", is an experiment. First of all, I wanted a completely custom-made character to developer AI with. This ensured that I was able to get the model made exactly to my specs so that we would have a template for other characters to follow. Fortunately, the script I wrote can easily be used with other models like Arteria's Strike Troop.   The quality of this model is rea

Josh

Josh

Very Low-Level Advancements

There are three low-level advancements I would like to make to Leadwerks Game Engine in the future: Move Leadwerks over to the new Vulkan graphics API. Replace Windows API and GTK with our own custom UI. This will closely resemble the Windows GUI but allow new UI features that are presently impossible, and give us more independence from each operating system. Compile the editor with BlitzMaxNG. This is a BMX-to-C++ translator that allows compilation with GCC (or VS, I suppose). This w

Josh

Josh

Update Available [beta]

An update is available on the beta branch which resolves the AMD rendering issues on Windows 10 with 1x MSAA setting enabled: http://www.leadwerks.com/werkspace/topic/13273-graphical-glitch/   The following components have changed: Lighting shaders adjusted to handle regular 2D textures (MSAA level 0) Editor updated, for Windows. Lua interpreter and debug interpreter updated, for Windows.   The C++ library has not been updated yet.

Josh

Josh

TGIF

Happy Friday.     One thing I will point out is that success is much more about creative experimentation than it is about sheer willpower. You have a little control over willpower, but not a ton. It's much better to keep the same amount of effort and just be smarter about what you do, than to try really really hard. That means taking a lot of risks and experiencing a lot of small low-cost failures to find what works.

Josh

Josh

Environment Probes

Note: this is highly experiment and subject to cancellation, change, revision, etc. Now on with the blog...   Shadmar and Reepblue have paved the way for this research, and I am experimenting with some of these ideas in Leadwerks.   Environment probes in Leadwerks are an experimental entity that creates a vantage point from which a cubemap is generated. The cubemap provides a 360 degree view of the surrounding environment in a single texture. This texture can then be used in the deferred

Josh

Josh

Relocation

My productivity has not been good lately because I am agonizing over where to live. I don't like where I am right now. Decisions like this were easy in college because I would just go where the best program was for what I was interested in. It's more difficult now to know if I am making the right choice.   I can "go big" and move to San Francisco, which weirdly has become the capitol of tech. I lived there before and know all the craziness to expect. I used to work at 24th and Mission (be

Josh

Josh

Scripted Behavior

The stock scripts that come with Leadwerks form a continually expanding game framework that can be used in many different ways. The reuse we get out of the door, switch, trigger, and AI scripts is really great. Every time I add a new script I can count on it being used in many different ways.   Sometimes this requires a custom model in order to develop and demonstrate usage of the script. It's best for me to have one model made exactly to my specs, and then make everything else conform to t

Josh

Josh

×
×
  • Create New...