Jump to content
  • entries
    941
  • comments
    5,894
  • views
    867,959

About this blog

Learn about game development technology

Entries in this blog

Textfield Widget

It took a few hours to add scrolling to the textfield widget. Now when the caret moves beyond the bounds of the box, text will slide over to keep the caret visible. This really isn't much different from a full text editor. The script is available now on the beta branch on Steam and presently weights in at 381 lines of Lua code.     The Draw function is pretty short and easy to understand. I think most people will customize the appearance of these widgets more than the behavior: f

Josh

Josh

Making game launcher work offline

I've got the Steamworks HTML renderer working with Leadwerks GUI now. The current build on Steam uses the Windows HTML renderer, which is part of IE. This isn't cross-platform, which is one reason why game launcher isn't available for Linux right now. The Chromium-based Steamworks HTML renderer is cross-platform but there are some issues.   The HTML renderer works by rendering a web page into a memory buffer and then uploading that buffer to a texture and drawing it onscreen. The visible r

Josh

Josh

Workshop Store picking up steam

Over the recent months the Leadwerks Workshop Store has experienced a noticeable increase in sales, correlating to an increased number of products offered. Although Workshop Store sales are quite a bit lower than DLC sales, the Workshop Store is more scaleable because it allows third parties to submit a greater variety of products.   We're also able to send out payments to Russia and other regions that other stores and websites may have trouble sending payments to, because our transaction sys

Josh

Josh

Writing the Treeview Widget

I've begun a Lua script for a Treeview widget. This is arguably one of the most complex widgets to implement, but after having done this in another language I have a design that I think is pretty simple. The script sorts all tree view nodes into a linear list-like table so that they can be drawn quickly. Like other widgets, the script will calculate where the starting point in the list is to display just the visible nodes. This is very important because it prevents the program from slowing d

Josh

Josh

Thoughts on the last game tournament

Most of the prizes are now shipped, and I am just cleaning up a few pieces of missing information for shipping. In order to ship posters, I need a full name, which I have requested from onaid, MDGunn, Evayr, and Graham. I also am missing a shirt size for Garlic Waffle and MDGunn. I have not received any shipping info from MartyJ, or else I missed it.   I found some mailing tubes from ULine to send posters in, at about $0.75 each. If you are receiving a sticker it will be included in the tu

Josh

Josh

Beta update available

An update is available which fixes compatibility with newer versions of GCC with the fix discussed here. Thanks to aiaf for finding the solution.

Josh

Josh

C++11 for Linux

The beta branch now contains an update that adds C++11 support for GCC on Linux. To use this you must enable C++11 support in the compiler settings in Code::Blocks. Select the Settings > Compiler and Debugger... menu item and then check the box indicated below.     All new projects created from the Leadwerks templates will work correctly out-of-the-box.   Your existing projects need a couple of new libraries added to them. The easiest way to do this is to open the CBP project file i

Josh

Josh

Workshop Store Updates

The Workshop Store interface has been updated. These changes will go out to the in-editor store interface soon.     Clicking on the "Buy" button now opens the item directly in the Steam client, so you no longer have to log into the Steam website. No credit card is needed if you already have one on file in your Steam account.  

Josh

Josh

Automate your social media accounts with the Steam web API

Keeping your social media accounts active with screenshots, videos, and updates is important, but as an indie developer you probably don't have time to post on there every day. In this blog I will show you how to easily automate your social media accounts so that a constant stream of new content is going out to your fans.   First, you will need to create a free account with dlvr.it. Connect your social media accounts to it. Facebook, Twitter, and Google+ are the important ones.   Now you

Josh

Josh

Update available

A small update is out, on all branches, that fixes the vehicle wheels not being positioned correctly: http://www.leadwerks.com/werkspace/topic/15405-problembug-with-vehicles-cars-wheels-dont-move-since-update-4-2

Josh

Josh

Beta update available

I've updated the editor and Lua executables on Windows with the following fixes: http://www.leadwerks.com/werkspace/topic/15399-rc4-editor-hints-get-built-in-probe-reflections/ http://www.leadwerks.com/werkspace/topic/15646-prefabs-child-entity-scripts-start-function-not-called/ http://www.leadwerks.com/werkspace/topic/15644-latest-43-beta-causes-crawler-to-rotate-at-wrong-direction/ http://www.leadwerks.com/werkspace/topic/15593-releasecleanup-vehicle-error/   The game launcher beta branc

Josh

Josh

Creating a VR Teleporter

I'm building the VR project template for Leadwerks 4.5.  Although you can enable VR in any project, this template is specifically designed to provide some of your most common room-scale VR features: Teleportation movement, which prevents motion sickness. Picking up and throwing objects. (It's actually really fun!) To start with I am creating the art assets for the teleport effect. This is basically what I want: Your controller shoots a beam which ends in an indicato

Josh

Josh

Uniform Buffers in Vulkan

Following this tutorial, I have managed to add uniform buffers into my Vulkan graphics pipeline. Since each image in the swapchain has a different graphics pipeline object, and uniform buffers are tied to a pipeline, you end up uploading all the data three times every time it changes. OpenGL might be doing something like this under the hood, but I am not sure this is a good approach. There are three ways to get data to a shader in Vulkan. Push constants are synonymous with GLSL uniforms, althoug

Josh

Josh

Starting with Shadowmaps on Vulkan

Now that we have lights working in our clustered forward Vulkan renderer (same great technique the latest DOOM games are using) I am starting to implement shadow maps. The first issue that came up was managing render-to-texture when the texture might still be in use rendering the previous frame. At first I thought multiple shadowmaps would be needed per light, like a double-buffering system, but that would double the number of shadow textures and video memory. Instead, I created a simple object

Josh

Josh

Leadwerks 5 Beta Update

A new beta is uploaded with lots of new features and improvements. Things are really taking shape! Animation is now supported and it's really fast. Two examples are included. Package loader plugins now supported, VPK package loader for Source Engine games included with example. Added localization example. Shaders folder very neatly organized, now contains shader family files. Config folder eliminated. Engine headers cleaned up and organized. Lots

Josh

Josh

Voxel GI: Colors and Fast Downsampling

The polygon voxelization process for our voxel GI system now takes vertex, material, and base texture colors into account. The voxel algorithm does not yet support a second color channel for emission, but I am building the whole system with that in mind. When I visualize the results of the voxel building the images are pretty remarkable! Of course the goal is to use this data for fast global illumination calculations but maybe they could be used to make a whole new style of game graphics.

Josh

Josh

Leadwerks 5 beta update adds post-processing effects system

A new update is available that adds post-processing effects in Leadwerks 5 beta. To use a post-processing effect, you load it from a JSON file and apply it to a camera like so: auto fx = LoadPostEffect("Shaders/PostEffects/SSAO.json"); camera->AddPostEffect(fx); You can add as many effects as you want, and they will be executed in sequence. The JSON structure looks like this for a simple effect: { "postEffect": { "subpasses": [ {

Josh

Josh

Transparency and Refraction in Vulkan

One of the downsides of deferred rendering is it isn't very good at handling transparent surfaces. Since we have moved to a new forward renderer, one of my goals in Leadwerks 5 is to have easy hassle-free transparency with lighting and refraction that just works. Pre-multiplied alpha provides a better blending equation than traditional alpha blending. I'm not going to go into the details here, but it makes it so the transparent surface can be brighter than the underlying surface, as you can

Josh

Josh

GUI Work

The terrain streaming / planet rendering stuff was the last of the feature creep. That finishes out the features I have planned for the first release of the new engine. My approach for development has been to go very broad so I could get a handle on how all the features work together, solve the hard problems, and then fill in the details when convenient. The hard problems are all solved so now it's just a matter of finishing things, Consequently, I don't think my blogs are going to make any

Josh

Josh in Articles

Ultra App Kit Beta Updated

An update is available for the Ultra App Kit beta on Steam. Menu open / close behavior is finished and is now working bug-free. Fixed problem where list boxes were only showing the first item. A submenu item is demonstrated in the example program. A progress bar widget is added in the example program. A label widget is added in the example program. A second radio button is added in the example program. Still to do: Work out some scaling i

Josh

Josh in Articles

Sparse Voxel Octree Reflections

I've now got basic specular reflections working with the sparse voxel octree system. This uses much less memory than a voxel grid or even a compressed volume texture. It also supports faster optimized ray tests, for higher quality reflections and higher resolution. Some of the images in this article were not possible to produce in my initial implementation that used volume textures. This shot shows the reflection of just the diffuse color. Notice the red column is visible in three reflectio

Josh

Josh in Articles

Real-time Global Illumination: Background Updating

Previously I wrote about introducing latency to the voxel cone step tracing realtime global illumination system. The idea here is to improve performance and quality, at the cost of a small delay when the GI calculation gets updated. The diffuse GI lighting gets cached so the final scene render is very fast. Here's what a gradual GI update does. Of course, this will be running unseen in the background for the final version, but this shows what is actually happening: My new video pro

Josh

Josh in Articles

×
×
  • Create New...