Jump to content
  • entries
    941
  • comments
    5,894
  • views
    871,779

About this blog

Learn about game development technology

Entries in this blog

Vegetation Research

The Leadwerks 3 vegetation system is being designed to side-step the bottlenecks that limited the Leadwerks 2 vegetation system. The Leadwerks 2 system involved large collections of 4x4 matrices for each instance, resulting in hundreds of megs of data stored with the map. Eliminating this data results in small map sizes and reduction of memory usage.   Here we have 10,000 trees being rendered (with no billboards), for a total geometry count of 14 million polygons. Memory usage is...zero!  

Josh

Josh

Game Launcher thoughts

I'm very excited about Leadwerks Game Launcher. I think it's going to be very beneficial. I noticed a change as soon as I showed people the store page for it. Connecting game developers with an audience solves a very big problem. My goal is to bring you 10,000 players for your games and create a sort of "incubator" for your ideas.     Over the last year, our community have gotten a lot more focused on releasing titles, with help from the game tournaments that Aggror started. Combined w

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

Odds and Ends

I implemented direct WAV file loading, and will add OGG as well. The MP3 file format has licensing issues, and we are not going to support it. However, if you use a third-party MP3 converter, the editor will detect whatever converters you add and use them (see more below). We're using OpenAL for sound, but have a more in-depth implementation than in the past. Sound source management is important because you only get so many sound channels on most cards, and this is handled automatically, bas

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

Physically-based Rendering

An online implementation of physically-based rendering in the Khronos Github was pointed out to me by @IgorBgz90 and @shadmar. This is very useful because it's an official implementation of PBR that removes a lot of guesswork. Here is my first attempt, which is not using any cubemap reflections: And here it is with cubemap reflections added: I plan to use the real-time global illumination system to generate the reflection data, instead of using environment probes. T

Josh

Josh

Website Updates

I've successfully pulled every website page out of the Invision Power Board CMS that I can: http://www.leadwerks.com http://www.leadwerks.com/graphics http://www.leadwerks.com/editor http://www.leadwerks.com/programming http://www.leadwerks.com/features http://www.leadwerks.com/steamos http://www.leadwerks.com/gamelauncher http://www.leadwerks.com/workshop http://www.leadwerks.com/gallery http://www.leadwerks.com/videos http://www.leadwerks.com/games http://www.leadwerks.com/company

Josh

Josh

Model Editor hierarchy editing

You can drag entities around in the model editor to rearrange the hierarchy. Now I just need to add an option to collapse a hierarchy, and the basic art pipeline will be done.   I had a difficult bug that was causing model hierarchies to be duplicated. At first I thought I was saving files wrong, but it turned out my entity copy routine was duplicating the hierarchy twice! Oh well, problem solved.

Josh

Josh

Advanced Terrain Building in Leadwerks Game Engine 5

In Leadwerks Game Engine 4, terrain was a static object that could only be modified in the editor. Developers requested access to the terrain API but it was so complex I felt it was not a good idea to expose it. The new terrain system is better thought out and more flexible, but still fairly complicated because you can do so much with it. This article is a deep dive into the inner workings of the new terrain system. Creating Terrain Terrain can be treated as an editable object, which i

Josh

Josh

24 Hours with the Rift DK2

I ordered my Oculus Rift DK2 in the middle of August and it finally arrived two days ago. Here are my quick impressions. Unboxing and Setup The box comes with a convenient carrying handle, so it makes a nice case. Upon opening it, the parts were pretty straightforward with no assembly required. There's an extra pair of lenses to extend the focal length or something like that, but I didn't use them.  Setup was pretty difficult. There's an excessive number of cords. A USB and HDMI cable p

Josh

Josh

Leadwerks MaxGUI Driver

MaxGUI is an abstracted GUI system for the BlitzMax programming language. This allows Windows, Mac, and Linux native UIs to be created using the same code. The LeadwerksMaxGUIDriver module integrates Leadwerks GUI so that existing programs can be recompiled using our new UI system. Here's the first shot of it working in an actual existing program:  

Josh

Josh

Alles Gute

The Leadwerks.com server started acting up earlier today, and I had no idea why. Database errors were occurring, and I had not made any changes to the site. I called our server site in Chicago. First they restored the full site from a backup from 2 A.M. yesterday morning. The matter was still not solved, though. A couple hours later, they determined that an automatic CPanel upgrade had caused PHP extensions to be loaded multiple times. This was fixed, and now we are back to normal. If you

Josh

Josh

Continued Development

At this point I would like to share some plans with you on continued development over the next several months. I generally avoid detailed roadmaps for two reasons: It's more fun to announce something with a short notice than to say "we're going to do X, Y, and Z, by these dates...". If people know too far in advanced they sort of take it for granted, and it doesn't have as big an impact. Plans change. When they do, people often consider cancelled plans to be "promised features". I like

Josh

Josh

Moving Right Along...

I'm happily starting out on the CSG editor. The first step is to add a grid in the orthographic view modes so that you have a frame of reference. In Leadwerks Engine, the editor used some callbacks to call OpenGL commands to draw the grid. In the new system, Leadwerks3D, I added some per-camera commands to control the grid spacing, resolution, and colors. (You may safely ignore the mysterious black cube in the center.) This way the editor never has to call OpenGL commands directly, making r

Josh

Josh

Debugging Lua Apps

Scripting support is very important in the new engine. The script implementation in the old engine was great for quickly adding animation and simple behavior to objects, but wasn't capable of supporting advanced gameplay. I've put a lot of work into our implementation of Lua script to bring it to a new level.   In the old engine, if a script error occurred the program would simply crash. The new engine supports detailed error handling and will automatically open files and show you where an

Josh

Josh

Vegetation Physics

I just had a breakthrough with the physics. There's a lot of optimization work left to do, but I can see at this point the idea works.   Newton Game Dynamics provides a mechanism for a user-defined collision shape. This accepts a bounding box and calls a user-defined callback any time an object intersects the bounding box. The callback builds a mesh dynamically for the area that the other object occupies. Internally, Newton uses this mechanism to process heightmap terrain without having to

Josh

Josh

A Story of IT

I generally categorize every aspect of Leadwerks as either "absolutely required" or not necessary. If it's categorized as the latter, I don't bother with it, and if it's categorized as the first, I pursue it with a dogged determination until it is done. This has served us well in many ways, like our vegetation rendering system and character controller.   However, this assumes I have full control and mastery over the product, or at least have someone working for me who does. This is almost a

Josh

Josh

Not So Fast

In my previous blog I talked about the Android file system and APK package system. The end result was I copied all the project assets into the res/raw folder. However, I learned two additional things that changed my plan a little: Android files can only be lower-case. Any folders in the res/raw folder will not get copied...it just packs in the files in that directory, with no sub-directories! That's a big problem if we want Leadwerks to be able to load files the same on each operati

Josh

Josh

Billboards Part 2

I tried a different approach for billboards that is giving good results. A single quad rotates around the vertical axis to face the camera. A series of 64 different view angles are rendered in a circle around the billboarded object. A second quad faces straight up and is gradually dissolved in when the angle between the object and the camera becomes vertical enough.   A combination of cross-fading and cross-dissolving is used to smoothly blend in between the different side views. The billb

Josh

Josh

Leadwerks 4.7 Beta Available

A new build is available on the beta branch on Steam. Updated to Visual Studio 2019. Updated to latest version of OpenVR and Steamworks SDK. Fixed object tracking with seated VR mode. Note that the way seated VR works now is a little different, you need to use the VR orientation instead of just positioning the camera (see below). Added VR:SetRotation() so you can rotate the world around in VR. The VRPlayer script has rotation added to the left controller. Pres

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

Three technology products you should be using in 2021

Note: This article contains some referral links for affiliate systems that I added after writing it. My purpose for including them is so that I can learn how these systems work by participating in them, because I am interested in possibly implementing one of our own in the future. The article was written because these are all things I am using and recommend and I am very bored with the same old things. Except for VR, the last decade of technology has been pretty yawn-inducing. I think Silic

Josh

Josh in Articles

VXRT Progress

This is an update on my progress of our voxel raytracing system. VXRT is designed to provide all the reflection information that PBR materials use. If a picture is worth a thousand words, then this counts as a 5000 word article. Direct lighting: Global illumination: Specular reflection: Skybox component: Final combined image:

Josh

Josh in Articles

Small Victories

Two issues in the art pipeline were giving me some doubt. I stopped working on them a couple weeks ago, and I'm glad I did because the solutions became clear to me.   Shader Files First, there is the matter of shaders. A shader can actually consist of half a dozen files:bumpmapped.opengl3.vert bumpmapped.opengl3.frag bumpmapped.opengl4.vert bumpmapped.opengl4.vert bumpmapped.opengles.vert bumpmapped.opengles.vert   I originally thought the .shd extension would be good for shaders, i

Josh

Josh

More interface stuff

I implemented resizable viewports this morning. This is so much more fun than fiddling around with compiler settings.   You can grab the bars between viewports, or the very center space, and drag it around to resize the four viewports. I usually prefer a smaller perspective view, and like to devote most of my space to the 2D views when doing serious editing:   You can also drag the views around to make a single big viewport, or just have two viewports visible:   In 3D World Studio, w

Josh

Josh

×
×
  • Create New...