Jump to content
  • entries
    941
  • comments
    5,894
  • views
    870,249

About this blog

Learn about game development technology

Entries in this blog

HTML Renderer for Linux

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.      

Josh

Josh

Thinking

Here are some of the things from my childhood that I still find weirdly fascinating. Bringing that same feeling into Leadwerks is something I have long driven towards. More on that later.

Josh

Josh

Let's get this vegetation party started

An update is now available on the beta branch which fixes the alt+tab problem. This works by skipping rendering when a window is minimized, since the Win32 command GetClientRect() returns a size of zero when windows are minimized.   Now I am on to the highly anticipated Leadwerks 3 vegetation system. I previously wrote about some research I was performing here: http://www.leadwerks.com/werkspace/blog/1/entry-1499-vegetation-research/ http://www.leadwerks.com/werkspace/blog/1/entry-1500-veg

Josh

Josh

Calling on the Leadwerks Community

Christmas is the season for giving, and it also happens to be my biggest sales time of the year. The Steam Winter Sale just kicked off and I need help getting us up on the first page of top sellers: http://store.steampowered.com/tag/en/Game%20Development/#p=0&tab=TopSellers   How do we do that? We drive web traffic to the Leadwerks Steam Store page. Here's a simple way to do it. If you could "Share" this Facebook post with your Facebook account, I would appreciate it: https://www.fac

Josh

Josh

Slight Rebrand

Leadwerks Game Engine: Indie Edition on Steam is now just "Leadwerks Game Engine".   Leadwerks Game Engine: Standard Edition on Steam is now "Leadwerks Game Engine: Professional Edition".   When I first put Leadwerks on Steam, it was just an experiment. Separating out the Lua version was something I had not done before. In fact originally, Leadwerks was a C++ library only, and Lua support was added later. After the last two years on Steam, it makes sense to consider the Lua version our ma

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

Idea Fell Apart

At 100% scaling this image appears correctly:   At 200% scaling it falls apart. The line points are in fact scaled correctly, but they are not surrounding the shape as intended:   So I think instead of converting the coordinate system back and forth between scaled and non-scaled coordinates, the creation function needs to multiply the coordinates by the scaling factor. That means if you create a 70x30 pixel widget and the GUI is using a 200% scaling factor, it will actually create a 14

Josh

Josh

New Animation Commands

I've built a modified version of ReepBlue's C++ animation manager class (based off my Lua script) into the engine. This adds a new command and eliminates the need for the animation manager script.   void Entity::PlayAnimation(const std::string& sequence, const float speed=1.0f, const int blendtime=500, const int mode=0, const std::string endhook="") void Entity::PlayAnimation(const int index, const float speed = 1.0f, const int blendtime = 500, const int mode = 0, const std::string end

Josh

Josh

Website Concepts

Here are some concepts I came up with for the site redesign.         The bold no-bull**** interface of itch.io inspired this design:     I think what will work best is if the designer takes my rough sketches, turns it into a clean design, and implements it with clean code.   I don't think we can change the whole site over at once without me losing control of the creative process and having runaway costs. I want to focus on the pages I have shown here and establish a foundation

Josh

Josh

Umbra Sucks. Check out our Easy No-Bake Occlusion Culling

With the help of @martyj I was able to test out occlusion culling in the new engine. This was a great chance to revisit an existing feature and see how it can be improved. The first thing I found is that determining visibility based on whether a single pixel is visible isn't necessarily a good idea. If small cracks are present in the scene one single pixel peeking through can cause a lot of unnecessary drawing without improving the visual quality. I changed the occlusion culling more to record t

Josh

Josh

Leadwerks Game Engine 4.6 Beta Update

A new update is available on the beta branch on Steam. This adds numerous bug fixes. The Linux build of the editor is compiled with Ubuntu 16.04 and the engine libraries and executables are compiled with Ubuntu 18.04. Linux users, please let me know how this works for you.

Josh

Josh

Leadwerks Game Engine 4.6 Release Candidate

An update is available on the beta branch on Steam with a few bug fixes. I'm going to release 4.6 with the current features because a lot of bugs have been fixed since 4.5 and we're overdue for an official release. 4.7 will add a new vehicle system, character crouching physics, and some other things, and will be out later this year.

Josh

Josh

Turbo Game Engine Design Document

Subscribers can now download my current revision of the Turbo Game Engine design document in the private forum here: Here are a few excerpts: The document is still evolving so expect changes and updates.

Josh

Josh

Getting Started with Vulkan

The latest design of my OpenGL renderer using bindless textures has some problems, and although these can be resolved, I think I have hit the limit on how useful an initial OpenGL implementation will be for the new engine. I decided it was time to dive into the Vulkan API. This is sort of scary, because I feel like it sets me back quite a lot, but at the same time the work I do with this will carry forward much better. A Vulkan-based renderer can run on Windows, Linux, Mac, iOS, Android, PS4, an

Josh

Josh

Light Strips in Vulkan Renderer

It's always fun when I can do something completely new that people have never seen in a game engine. I've had the idea for a while to create a new light type for light strips, and I got to implement this today. The new engine has taken a tremendous amount of effort to get working over two years, but as development continues I think I will become much more responsive to your suggestions since we have a very strong foundation to build on now. Using this test scene provided by @reepblue you ca

Josh

Josh

Turbo Game Engine (Leadwerks 5) beta updated with Vulkan renderer

The beta of our new game engine has been updated with a new renderer built with the Vulkan graphics API, and all OpenGL code has been removed. Vulkan provides us with low-overhead rendering that delivers a massive increase in rendering performance. Early benchmarks indicate as much as a 10x improvement in speed over the Leadwerks 4 renderer. The new engine features an streamlined API with modern C++ features and an improved binding library for Lua. Here's a simple C++ program in Turbo:

Josh

Josh

Direct Lighting with Sparse Voxel Octrees

Previously I described how I was able to save the voxel data into a sparse octree and correctly lookup the right voxel in a shader. This shot shows that each triangle is being rasterized separately, i.e. the triangle bounding box is being correctly trimmed to avoid a lot of overlapping voxels: Calculating direct lighting using the sparse octree was very difficult, and took me several days of debugging. I'm not 100% sure what the problem was, other than it seems GLSL code is not quite

Josh

Josh in Articles

Leadwerks 5 Beta Update Available with Faster Raytracing

A new beta update is available. The raytracing implementation has been sped up significantly. The same limitations of the current implementation still apply, but the performance will be around 10x faster, as the most expensive part of the raytrace shader has been precomputed and cached. The Material::SetRefraction method has also been exposed to Lua. The Camera::SetRefraction method is now called "SetRefractionMode". The results are so good, I don't have any plans to use any kind of sc

Josh

Josh

Lua Debugging

Until now, we haven't really had proper debugging info when a crash occurs during execution of a Lua script. Thanks to some previous work TylerH did with Lua, a conversation with him revealed how to easily add debugging info into the editor and script interpreter. (Incidentally, the Lua integration was Tyler's idea to begin with!) Here's a shot of the Script Editor catching an engine crash and displaying the script line the error occurs at. This is a crash that occurred in the engine, not a

Josh

Josh

Navigation Win

I fixed our AI navigation problems and got pathfinding to work using navmeshes. Now you can easily make a horde of zombies chase after the player without setting up any waypoints. Which is the whole point of this, of course.   The problem had to do with a polygon filter, and I am still not sure what is going on, so I disabled it for now.  

Josh

Josh

Artificial Stupidity

I'm testing the Leadwerks3D AI navigation and getting some interesting results. I'm not sure why it's acting this way, but we'll get it figured out soon. It seems like the navigation gets "stuck" on corners, fails to enter some tiles, and likes to take the scenic route to some destinations. B)  

Josh

Josh

Over the Hump

All difficult technical challenges for the completion of Leadwerks3D are solved. This includes navmesh pathfinding, cross-platform support, Lua and C# integration, OpenGLES rendering, the abstract driver model, etc., etc., etc. Basically, all the scary stuff is done, and the only thing that remains is hard work. I'll be turning my attention back to the editor shortly, but first I wanted to address a different kind of challenge: Documentation and the website.   The present appearance of the

Josh

Josh

Model Tools

I've never coded much polygonal modeling routines, instead focusing on constructive solid geometry. I wanted to include some tools for modifying surface normals and texture coordinates. I came up with a normal calculation routine that actually uses four different algorithms, depending on the settings specified.   One thing I learned right away is you want to do away with n*n routines. That is, NEVER do this: for (i=0; i<surface->CountVertices(); i++) { for (n=0; n<surface->

Josh

Josh

Justify My Love (of Constructive Solid Geometry Modeling)

One thing I love about constructive solid geometry modeling is that texture mapping is sooooo much simpler than 3ds Max. Most of the time the automatic texture mapping works fine, and when you do need to adjust texture mapping by hand, CSG texture mapping tools are still much easier. The justify buttons line a texture up along a face, or a group of faces.   Although using these tools is fun and easy, programming them is another matter. I dreaded the implementation of the texture justify but

Josh

Josh

Leadwerks 3 on Windows 8

I picked up an Intel SSD for fairly cheap and installed the Windows 8 Release Preview on it. With this configuration boots up in about 5 seconds. I actually spend a lot longer waiting for BIOS to finish than for Windows to start, which is fantastic.   Anyways, it makes sense to me to take screenshots for the docs from the newest version of Windows 8 since Windows is still the dominant operating system. I couldn't find a driver for my ATI 3850, so I swapped it out for a GEForce 480. Here's

Josh

Josh

×
×
  • Create New...