Jump to content
  • entries
    942
  • comments
    5,896
  • views
    872,930

About this blog

Learn about game development technology

Entries in this blog

Merry Christmas, and another beta update

Merry Christmas! Here's an update on the beta branch. The previous update was mistakingly supplied with the Debug DLL for Windows. This has been fixed. (Good thing we have a branch for testing!) The internals of the Workshop system have been completely rewritten to support Workshop items in any folder. The editor will also no longer download Workshop items at startup, but instead wait until you install them in your project. Workshop items will not be automatically updated, but will dis

Josh

Josh

Full Steam Ahead

The standalone version of Leadwerks is no longer being updated. If you have a license for Leadwerks 3.1+ standalone version, you can exchange your registration key for the Steam version. Please contact support and include your Leadwerks registration key.   The Steam edition of Leadwerks can be run online or in offline mode, and can make games that are published to Steam, or published as standalones without requiring Steam. Leadwerks on Steam also includes access to the Leadwerks Workshop vi

Josh

Josh

The Happenings

The Steamworks SDK has been updated with some new functionality I need to transition Leadwerks Workshop to the SteamUGC system. This will result in unlimited file sizes, more reliable downloads, and other new features. However, the documentation isn't updated yet, so I am going to wait for that before moving forward, and focus on non-coding things this week. Once the Workshop edits are finished and tested, Leadwerks 3.5 will be released.   At the same time, Jorn and I are working on the new

Josh

Josh

SteamUGC Upgrade Complete

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

Josh

Josh

3.6 Release Candidate Available

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.  

Josh

Josh

Project Explorer beta now available for testing

Implementation of the project explorer went really fast. I started it this morning, and I think it's pretty much done now. The project explorer shows up on the left side of the script editor window. It's positioned in an adjustable panel so you can resize and move its position. (Saving the position and orientation has not been implemented yet.) The project explorer shows a tree displaying your "Scripts", "Shaders", and "Source" folder, if you have the Standard Edition. You can double-click

Josh

Josh

Beta update available

A new update is available which should fix terrain rendering issues. The project explorer panel is also shown in the script editor on Linux as well. I am not 100% happy with the layout of this and it may change before the final release.   I am also experimenting with Teragen 3 and think I can create some nice high-def skyboxes for us.  

Josh

Josh

Artwork production

Our all-purpose action figure concept is complete, and he looks fantastic.     I am reminded of the great artwork on the packaging of GI Joe action figures from the 80s.     Rich has had some difficulty modeling a higher-detail pickup truck, inspired by the design of a Dodge Ram. According to him, curved vehicle bodies are much more difficult to get right than more angular designs. So that tells me in the future, we can get a jeep or something done much more easily than a Corvette, f

Josh

Josh

Building the Soldier AI

I recently added a new "SoldierAI" script to handle enemies that can shoot back and coordinate with one another. This was developed for the new Mercenary Action Figure. In this blog I will explain how I designed the behaviors to work.   Just like the MonsterAI script, the soldier AI script includes a "teamid" value. This has three possible values, "good", "bad", and "neutral". Good guys and bad guys will attack each other, but not their own team or neutral characters.     At its simpl

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

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

More Drawing Features

I've added an optional radius for rectangle corners, for use with the DrawRect() command, along with a new gradient mode that uses a second color to draw a linear gradient on primitives. I like the interface for the program Vue, and I am modeling my default widget scripts after this style.     Here it is rendered at 800% scale. This is rendered directly on a window and sub-pixel antialias is used (Microsoft ClearType):     The appearance of the button widget at this point is somethin

Josh

Josh

Slider Widget

The slider widget is used for scrollbars, trackbars, and steppers. It has a lot of style options, so it's really six different widgets packed into one. (In Leadwerks Editor, a slider and textfield widget are combined to make the numerical entries you use to adjust positions and other values.)     To create a new slider you just create a widget and set the slider script: local slider = Widget:Create(230+40,140,20,20,panel) slider:SetScript("Scripts/GUI/Slider.lua")   You can then se

Josh

Josh

Text Area Widget

The text area widget is now available on the beta branch on Steam, for Windows and Lua only at this time.   The text area is a read-only widget at this time. However, the text is all selectable, and in the future will be able to be copied to the clipboard. This widget creates two scroll bars which appear only when needed, for horizontal and vertical scrolling. The multiline text selection and scrolling was pretty difficult to implement, but the results are really nice.     I'm not goin

Josh

Josh

Game Launcher Custom Widget

As described previously, I decided to create a custom widget script to replace the game launcher's HTML panel. The results are already looking awesome! The UI looks really slick. It's great to see this idea come to life in such a striking and attractive manner.   What's really cool is the OS drawing commands are being used, so the games grid uses cleartype subpixel antialiasing, and the UI is completely solid with no flashes or little visual glitches.     Oh, and except for the window

Josh

Josh

Making Leadwerks even more better

The upcoming changes to the Steam curation process may mean we experience greatly reduced visibility in the Steam store, and I am preparing for that possibility. The plan for quite a while has been to double down on the ease of use and learning that differentiates Leadwerks from every other game development system on the market. To that end, I have begun translating the documentation into a format that is easier to view and search. The welcome page has been done away with and will be replac

Josh

Josh

Workshop Store checkout process improved

Valve has delivered on their plan to add a new Steam browser protocol for paid Workshop items. The Leadwerks Game Engine beta branch on Steam has been updated so that Workshop Store purchases go through the Steam client instead of requiring you to log into a web browser. You must also opt into the Steam client beta for this functionality to work. At the moment, this feature is only available on Windows.     This removes the biggest source of friction in the checkout process and makes the

Josh

Josh

Dev Stuff

I've been working to upgrade Leadwerks to the latest Newton Dynamics 3.14, and I want to change it so the engine imports Newton as a DLL. This will allow the Newton developer to debug some of my applications when needed.   World Factions has raised an important bug / issue and this the best route to solve it.   I've been tinkering with some improvements to some of the physics stuff with promising results, but it needs more work and I don't want to say anything else about it yet. If I can g

Josh

Josh

Steam client update for Workshop Store

A Steam client update has gone out which improves the checkout process in the Leadwerks Workshop Store. When the user clicks the "Buy" button in the editor, the item will now be opened in the Steam client for purchase. You do not have to log into the Steam website with a browser to purchase Workshop items anymore.   You must opt into the beta branch of Leadwerks for this behavior to work. This will be the default when 4.2 is released.   More information here: http://store.steampowered.co

Josh

Josh

Promoting your Game

You've learned Leadwerks, built a basic game, and published it to the Game Launcher, perhaps during one of the many Leadwerks game tournaments. Now what? Fortunately, there is a big appetite for work-in-progress indie games. The next step is to create an account on itch.io and GameJolt and upload your standalone game. Put your game out there on these platforms and if it is fun it will gain a lot of players. At the same time, there's a ton of talented YouTubers out there making reviews

Josh

Josh

Ultra Engine Compatibility with Leadwerks Game Engine

As the first release of Ultra Engine approaches, it seems clear that the best way to maximize its usefulness is to make it as compatible as possible with the Leadwerks game engine. To that end, I have implemented the following features. Native Loading of Leadwerks File Formats Ultra Engine loads and saves DDS, glTF, and OBJ files. Other formats are supported by plugins, both first and potentially third-party, for PNG, JPG, BMP, TGA, TIFF, GIF, HDR, KTX2, and other files. Additionally,

Josh

Josh in Articles

Beta update available

An update is available on the beta branch on Steam. Fixed missing fall damage: https://www.leadwerks.com/community/topic/17005-i-dont-get-fall-damage/ Fixed LoadAnimation bug: https://www.leadwerks.com/community/topic/16982-modelviewer-load-animation/ May have fixed VR player script and tracking on Oculus Rift. If you have an Oculus Rift please try creating a new project from the VR template project and tell me your results. If there is still a problem I will go buy

Josh

Josh

Three Massive improvements the new engine will make in your life

As I work with the new engine more and more I keep finding new ways it makes life happy and productive. Smart Pointers I have talked about how great these are at length, but I keep finding new reasons I love them. The behind-the-scenes design has been a lot of fun, and it's so cool to be able to write lines of code like this without any fear of memory leaks: LoadSound("Sound/Music/fully_loaded_60.wav")->Play(); What do you think that code does? It plays a sound, keeps it in m

Josh

Josh

Realistic Penumbras

Shadows with a constant softness along their edges have always bugged me. Real shadows look like this. Notice the shadow becomes softer the further away it gets from the door frame. Here is a mockup of roughly what that shadow looks like with a constant softness around it. It looks so fake! How does this effect happen? There's not really any such thing as a light that all emits from a single point. The closest thing would be a very small bulb, but that still has volume. Bec

Josh

Josh

Voxel Direct Lighting on the GPU

We left off on voxels when I realized the direct lighting needed to be performed on the GPU. So I had to go and implement a new clustered forward renderer before I could do anything else. Well, I did that and now I finally have voxel lighting calculation being performed with the same code that renders lighting. This gives us the data we need to perform cone step tracing for real-time dynamic global illumination. The shadows you see here are calculated using the scene shadowmaps, not b

Josh

Josh

×
×
  • Create New...