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

About this blog

Learn about game development technology

Entries in this blog

Building a Collaborative Content Production Pipeline - Part One

As the maker of a game engine primarily aimed at Indie game developers, I have the opportunity to observe behavior of many individuals working together. This allows me to observe interactions from a perspective the individual participants in the system sometimes can't see.   There are many steps in game development, that can be performed by people with different skill sets. The workflow for Leadwerks is designed on this premise. At its simplest, Leadwerks can be used as a visual design tool

Josh

Josh

Build a Killer Linux Gaming Machine for $430

Several people have asked me for my hardware recommendations for a new Linux gaming machine. I get rather frustrated by PC manufacturers who load computers up with expensive Intel CPUs and extra RAM you don't need, and then forget to include a graphics card. Or they proclaim PC gaming is not dead and proudly announce their "gaming machine" with a shoddy GPU, that costs more than my first car. I've been building my own PCs since high school, and I know you can build a PC with superior performa

Josh

Josh

Bug-fix week begins!

There were numerous small issues related to the 2.32 release, but I am chipping away at them: http://leadwerks.com/werkspace/index.php?app=tracker&showproject=1&catfilter=2   I'm not going to add any new features until every bug is fixed.   Remember that the more complete and easy to reproduce a report is, the faster it will be to fix. Thanks for the feedback!

Josh

Josh

Bug fix update

A new update is available on the beta branch which fixes two bugs.   Undo not working correctly with copied objects: http://www.leadwerks.com/werkspace/topic/11888-undo-after-ctrl-duplicate-is-messed-up/   Water plane movement and culling problem: http://www.leadwerks.com/werkspace/topic/11895-water-plane-doesnt-cover-all-terrain/

Josh

Josh

Bug fix patch for 3.0

An update has been posted with the following fixes: http://www.leadwerks.com/werkspace/topic/7847-undo-does-not-refresh-gizmos/ http://www.leadwerks.com/werkspace/topic/7842-bsp-mesh-export/

Josh

Josh

Buffers in Vulkan

I've now got the Vulkan renderer drawing multiple different models in one single pass. This is done by merging all mesh geometry into one single vertex and indice buffer and using indirect drawing. I implemented this originally in OpenGL and was able to translate the technique over to Vulkan. This can allow an entire scene to be drawn in just one or a few draw calls. This will make a tremendous improvement in performance in complex scenes like The Zone. In that scene in Leadwerks the slow step i

Josh

Josh

Brushing Up on CSG

I feel like I've resolved the design challenges I was facing in my last blog. A menu item is always checked, specifying what the current object is that will be created when the user clicks on a viewport. There are two types of objects that can be created, brushes and entities. Brushes are constructive solid geometry objects that can be sketched out to quickly design a building. Entities are created at a point in space, and include lights, sounds, and particle emitters. As I have described i

Josh

Josh

Bonus update is now available!

Wow, two updates in two days! This one adds new features and bug fixes.   Fixes http://www.leadwerks.com/werkspace/topic/10019-directional-lights-dont-cast-shadows/ http://www.leadwerks.com/werkspace/topic/10030-values-in-appearance-tab-ignored/ http://www.leadwerks.com/werkspace/topic/10020-values-in-entities-general-tab-stuck/ http://www.leadwerks.com/werkspace/topic/8138-pointlight-viewrange-bug http://www.leadwerks.com/werkspace/topic/9919-wobbly-fbx-imports/   New Features Globa

Josh

Josh

Bone Attachments

In Leadwerks Game Engine 4, bones are a type of entity. This is nice because all the regular entity commands work just the same on them, and there is not much to think about. However, for ultimate performance in Leadwerks 5 we treat bones differently. Each model can have a skeleton made up of bones. Skeletons can be unique for each model, or shared between models. Animation occurs on a skeleton, not a model. When a skeleton is animated, every model that uses that skeleton will display the same m

Josh

Josh

Blog Bug Fixed

This should be working now. Looks like Y2K struck ten years late.

Josh

Josh

Bindless Textures

The clustered forward renderer in Leadwerks 5 / Turbo Game Engine required me to implement a texture array to store all shadow maps in. Since all shadow maps are packed into a single 3D texture, the shader can access all required textures outside of the number of available texture units, which only gives 16 guaranteed slots. I realized I could use this same technique to pack all scene textures into a few arrays and completely eliminate the overhead of binding different textures. In order to

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

Billboard Generation

With the main culling and rendering algorithm done, I am focusing on the billboard display for the Leadwerks 3.7 vegetation system. My goal is to reduce the popping artifacts the Leadwerks 2 renderer displayed:   I am testing with a non-plant model with the idea that if I can get it to look reasonably well with an oddly sized mechanical object with highly visible lines, then a tree should look very good. Below you can see part of the billboard image drawn on the screen showing the object

Josh

Josh

Better Voxelization

My initial implementation of mesh voxelization for ray tracing used this code. It was good for testing, but has some problems: It's slow, using an unnecessary and expensive x * y * z loop No support for per-voxel color based on a texture lookup There are mathematical mistakes that cause inaccuracy, and the math has to be perfect My solution addresses these problems and only uses an x * y loop to generate the voxels. It does this by identifying the major (largest magn

Josh

Josh in Articles

Better Intellisense in Ultra Engine

Ultra Engine makes much better use of class encapsulation with strict public / private / protected members. This makes it so you can only access parts of the API you are meant to use, and prevents confusion about what is and isn't supported. I've also moved all internal engine commands into separate namespaces so you don't have to worry about what a RenderMesh or PhysicsNode does. These classes won't appear in the intellisense suggestions unless you were to add "using namespace UltraRender" to y

Josh

Josh in Articles

Beta update: Submitting curated Workshop items

An update is available on the beta branch with the following changes: Implemented "CollisionMesh"-named limbs in models. Added "Strip vertex colors" option in model editor. Workshop items can now be submitted as free or curated paid items, although no mechanism is in place yet to actually purchase items.     Curated items appear in the Workshop and can be voted for, but cannot be downloaded.     You can enter your bank information for receiving payments, and you can even c

Josh

Josh

Beta update available with deferred decals

An update is now available on the beta branch.   A new decal entity type is available. Decals are used to project an image into surrounding geometry. A decal requires a material using a decal shader, located in the "Shaders\Decals" folder. The FPSGun.lua script has been updated to add bullet marks and gunshot wounds to objects a bullet hits. You can also place a decal in a map for adding large details to walls, terrain, or anything else.     Decals are rendered similarly to the way a

Josh

Josh

Beta update available

Directional lights now allocate shadowmap stages in a different pattern. At medium and high lighting quality, a 4096x4096 texture will be used. I have no evidence for this, but I suspect this will be more reliable than creating a 8192x2048 texture. The directional light shader has been modified to read shadowmaps in this new pattern.   The Texture::RG format has been added to the supported texture formats. This uses 2 bytes to store red and green channels.   Terrains use a large amount o

Josh

Josh

Beta update available

A new update is available on the beta branch.   The FPS player script has been fixed to allow throwing of objects when he is not holding a weapon.   The script flowgraph system's behavior with prefabs has been changed. Script connections between prefabs will no longer be locked in the prefab file, and can be made in the map itself. The map version has been incremented, and maps saved with the new format will not load until you update or recompile your game. The changes in this system may

Josh

Josh

Beta Update available

A new update is available on the beta branch. This adds automatically generated hitboxes for animated characters, and a new tool to calculate physics shapes using convex decomposition.   Existing C++ projects require a small modification due to the addition of the VHACD library. The VHACD includes directory must be added to the project header search paths.   Visual Studio: $(LeadwerksHeaderPath)\Libraries\VHACD\src\VHACD_Lib\inc   Code::Blocks: $(LeadwerksPath)/Include/Libraries/

Josh

Josh

Beta Update available

A new update is available on the beta branch on Steam.   Changes Temporary slowdown from last beta is fixed. Bone picking behavior now matches default branch's original behavior (for compatibility with existing code). All recently locked bug reports fixed.   Please see this note about updating C++ projects to accommodate the addition of the VHACD library.

Josh

Josh

Beta Update available

Two new commands are available: System::CountGraphicsModes System::GetGraphicsMode   This allows you to view available graphics resolutions and choose one.   Fullscreen windows now work on Linux.   The "Go To" menu item in the scene browser will also recenter the flowgraph editor, if it is open and the selected object has been added to the map flowgraph.

Josh

Josh

Beta update available

A new update is available on the beta branch. My goal is to get a stable build and move that over to the default branch before adding any new features.   A bad bug in water rendering has been fixed.   Memory usage in the editor is reduced.   Additional checks have been added for potential rendering problems. These are for situations that should not happen, but It is possible these could raise errors when running in debug mode.   Thank you for testing, I will continue to resolve any bug

Josh

Josh

Beta update available

A new update is available. This will cause the problem when the editor would crash on auto-loading a map with water on Linux at startup, and also fixes the problem where Lens flares weren't being hidden when you got close to them.   Right now I am working towards a stable build that can go onto the default branch and am not adding new features before then. If you have opted into the beta branch, thank you for the feedback you're providing.

Josh

Josh

Beta update available

A new update is available on the beta branch.   Fixed CSG texture / texture mapping bugs: http://www.leadwerks.com/werkspace/topic/10401-leadwerks-texturing-bugs/#entry85790 http://www.leadwerks.com/werkspace/topic/10433-csg-prefabs-cannot-be-retextured-using-drag-and-drop/   Fixed a long-standing script properties bug: http://www.leadwerks.com/werkspace/topic/11672-script-editor-incorrect-parameter-fields/   Fixed script editor recent files list: http://www.leadwerks.com/werkspace/top

Josh

Josh

×
×
  • Create New...