Jump to content
  • entries
    941
  • comments
    5,894
  • views
    868,145

About this blog

Learn about game development technology

Entries in this blog

Clipping and Resizing

In Leadwerks GUI, any widget can be the child of another widget. If the child goes outside of the parent widget's area it will be clipped for both rendering and mouse events. Below you can see the button in the upper-left corner and the progress bar and slider on the right are clipped by the parent tabber.     A parent widget can also have a padding value which indents the area. The tabber uses padding on the top to display the tabs and make sure children don't appear on top of the tabs.

Josh

Josh

Top Sellers in the Leadwerks Workshop Store

These are the top-ten top grossing items in the Leadwerks Workshop Store over the last three months: Nature Model Pack SciFi Materials 1 Modern Sewer Construction Kit Zombie Action Figures Old Furniture Pack SciFi Materials 5 Mercenary Action Figure Morgue Strike Troop The Stalker   First of all, we can see that outdoor vegetation and rocks sells best. This is consistent with what I have seen with our DLCs and with products in the past.   We also see four c

Josh

Josh

Steam Dev Days 2016

I got back last night from Steam Dev Days 2016 in Seattle. This year focused heavily on VR, with Valve mentioning they are working on a new unannounced title built for VR. Valve also announced Steamworks will begin supporting the PS4 controller, with other controller support in the works.     This was also an opportunity for me to meet with a bunch of people on the Steam dev team and chat with other developers. I got a lot done! We're getting our Steam controller integration fixed, as I

Josh

Josh

Hello Mac

Being reasonably confident that my GUI design will work on Windows and Linux, I wanted to make sure it would also work for Mac computers. The first step was to compile Leadwerks Game Engine in Apple's Xcode IDE. Like Visual Studio and Code::Blocks, I was able to create two targets so that the same project can be used to compile both the static library and standalone executable.     At this point the Window class for Mac contains mostly empty functions that don't do anything, but this is a

Josh

Josh

Game Launcher now runs on SteamOS

Leadwerks Game Launcher can now be used on SteamOS. I fixed a bunch of little issues that were preventing this from running. The interface is not optimal right now for controllers, and there is much left to do, but your games do run. It's pretty fun to play your games on a console, when most of them were developed on Windows and never even run on Linux before.   If you have a Steam Machine give it a try!  

Josh

Josh

Beta update available

I've updated the beta branch with a full build to address the following issues: GI / water bug where everything would get brighter (the blend mode wasn't being reset to "solid"). "Cannot blit backbuffer" bug fixed. VC .usr file added back into template, which contains info on the default working directory. This is why games weren't launching in the right directory. SDK version set to 8.1 since the 10 SDK isn't installing on Windows 7 (what I'm on now).   FYI, I tested on an AM

Josh

Josh

Beta update available

An update is available on the beta branch, which includes the editor and Lua executables, for Windows only. The following issues are resolved: http://www.leadwerks.com/werkspace/topic/14934-materials-go-crazy-when-used-on-a-prefab/ http://www.leadwerks.com/werkspace/topic/15644-latest-43-beta-causes-crawler-to-rotate-at-wrong-direction/ http://www.leadwerks.com/werkspace/topic/15597-wrong-issues-with-z-sort-materials/#entry104462

Josh

Josh

Followup on social media blog

I'm going to focus on directing people to the Leadwerks mailing list and getting people to sign up for Leadwerks accounts. This is much more valuable than social media followers we have no data for, or even Steam users we can't contact directly.   We do need something extra to get the word out to people on the web about Leadwerks, but I don't think Facebook and Twitter are it...

Josh

Josh

Beta update available

An update to 4.3 is available on the beta branch. This fixes it so the editor is not DPI-aware and will be scaled correctly if scaling on Windows is used. This build is also built with a fresh install of Windows 10 and Ubuntu (but it shouldn't make any difference).   This is a full build for Windows and Linux, with C++ libraries included. Game Launcher is also updated on its beta branch.   If there are no problems with this, it will go onto the default branch in a couple days.

Josh

Josh

Beta Update Available

A full update for Windows and Linux is now available on the beta branch which addresses several small problems: http://www.leadwerks.com/werkspace/topic/15772-standalone-build-wont-launch/ http://www.leadwerks.com/werkspace/topic/15761-entity-gets-has-stopped-working-error/ http://www.leadwerks.com/werkspace/topic/15766-crash-anything-since-last-update-object-already-deleted/   The version of the VC redistributable has also been updated in Steam and will fix this problem if you are having t

Josh

Josh

Version 4.5 release plan

Version 4.5 will feature official support for VR (Vive and Oculus) and a new super realistic vehicle system.  These features are more or less already done, but need some work to make them release-ready.  The new vehicle system is so good, and I am so grateful to Julio for his help making this happen, that I think we might do a racing-themed winter tournament.   I am trying to think of a clever pun to call it. At the same time, I have implemented the first build of version 5 in the same sour

Josh

Josh

Creating a VR Teleporter: Part 3

The final step to our VR teleporter mechanic is to make the beam arc. This allows us to climb up to areas above our head. The trick to this is to take our single beam picking mechanic and split it up into a lot of little segments, for both the intersection test and the visual display. I decided to make a kind of simple physics simulation for this, rather than using bezier curves or another method. The basic idea is you have a starting position and a velocity. You move a point along tha

Josh

Josh

4.5 beta update 5

Version 4.5  is updated on the beta branch on Steam. Fixed small projection error in VR mode. Added fog settings in editor and into map file format. Fixed Workshop browser back button not working. Added VR project template. Added VR player script Added friction to hinge joint script. Added ball and slider joint scripts. Joint scripts will now use the entity parent for the other joint connection (if it exists). We've only got about 24

Josh

Josh

A Look Forward to 2018

This is a rough timeline of events I am planning in the new year. It is not complete, and may change, but this is just what I am thinking right now. January 15: Release Leadwerks 5 Alpha Zero subscription February 1: Launch Kickstarter campaign for development of Leadwerks 5 Alpha One February 1: Game Tournament March 3: Kickstarter campaign complete April 1: Leadwerks 4.6 released (vehicles, NAT punch-through) June 30: Summer Games Tournament Jun

Josh

Josh

Peer-to-peer Networking and the Floating Server

I have Steam peer-to-peer networking commands implemented into Leadwerks 4.6. Here are the commands. Note this complex system has been boiled down to just three simple commands: class P2P { public: #ifdef LEADWERKS_5 static bool Send(uint64 steamid, const int messageid, shared_ptr<BankStream> data, const int channel = 0, const int flags = 0); static bool Send(uint64 steamid, const int messageid, shared_ptr<Bank> data, const int channel = 0, const int flags = 0); static shared_

Josh

Josh

Threaded Animation

The animation update routine has been moved into its own thread now where it runs in the background as you perform your game logic. We can see in the screenshot below that animation updates for 1025 characters take about 20 milliseconds on average. (Intel graphics below, otherwise it would be 1000 FPS lol.) In Leadwerks 4 this would automatically mean that your max framerate would be 50 FPS, assuming nothing else in the game loop took any time at all. Because of the asynchronous threa

Josh

Josh

Voxel Cone Tracing Part 3 - Raycasting

I added a raycast function to the voxel tree class and now I can perform raycasts between any two positions. This is perfect for calculating direct lighting. Shadows are calculated by performing a raycast between the voxel position and the light position, as shown in the screenshot below. Fortunately the algorithm seems to work great an there are no gaps or cracks in the shadow: Here is the same scene using a voxel size of 10 centimeters: If we move the light a little lower

Josh

Josh

Voxel Cone Tracing Part 4 - Direct Lighting

Now that we can voxelize models, enter them into a scene voxel tree structure, and perform raycasts we can finally start calculating direct lighting. I implemented support for directional and point lights, and I will come back and add spotlights later. Here we see a shadow cast from a single directional light: And here are two point lights, one red and one green. Notice the distance falloff creates a color gradient across the floor: The idea here is to first calculate direc

Josh

Josh

Clustered Forward Rendering Progress

In order to get the camera frustum space dividing up correctly, I first implemented a tiled forward renderer, which just divides the screen up into a 2D grid. After working out the math with this, I was then able to add the third dimension and make an actual volumetric data structure to hold the lighting information. It took a lot of trial and error, but I finally got it working. This screenshot shows the way the camera frustum is divided up into a cubic grid of 16x16x16 cells. Red an

Josh

Josh

Real Bindless Textures

Previously I talked about array textures acting as "bindless" textures, but there is an actual OpenGL extension that allows a shader to access any texture without the stupid texture binding / slot convention that limits OpenGL 4.0 shaders to a minimum of 16 textures. Implemenation was surprisingly easy, although Mac hardware apparently does not support this extension. When combined with the multi-draw commands in OpenGL 4.3, and some other tricks, it is possible to render multiple sets of object

Josh

Josh

Digital Reorganization

It's nice to have my big monster computer back, and everything is just the same as I left it. I have a triple-boot machine with Windows 10 and both 32 and 64 bit versions of Ubuntu 16.04. This is easier than trying to set up multi-arch compiling on one install of the OS, though I look forward to the day I no longer have to bother with it. I'm running out of hard drive space on my Windows 10 500 GB SSD so I ordered a 1 TB SSD, and I plan to transfer the 500 GB SSD into my laptop to replace t

Josh

Josh

Vulkan Progress

I was going to write about my thoughts on Vulkan, about what I like and don't like, what could be improved, and what ramifications this has for developers and the industry. But it doesn't matter what I think. This is the way things are going, and I have no say in that. I can only respond to these big industry-wide changes and make it work to my advantage. Overall, Vulkan does help us, in both a technical and business sense. That's as much as I feel like explaining. Beta subscribers ca

Josh

Josh

Early Z-Pass in Vulkan

Vulkan is pretty wonderful because I can take all the optimal techniques I worked out in OpenGL and it just makes everything much faster. I've successfully completed the implementation of early Z-pass, which is important for our lighting system. We are using a forward clustered renderer, similar to the technique id Software's new DOOM games use. Because the fragment shader is fairly intensive, a depth pre-pass is rendered to ensure we only process each screen pixel once. This techniqu

Josh

Josh

PBR Lighting in Vulkan

I now have point and spot lights working (without shadows) in the Vulkan renderer. Here are the results, with both "Physically-based rendering" (PBR) and Blinn-Phong shaders: Without the IBL contribution it's not terribly impressive, but this is progress.

Josh

Josh

×
×
  • Create New...