Jump to content
  • entries
    941
  • comments
    5,894
  • views
    869,221

About this blog

Learn about game development technology

Entries in this blog

Dev Stuff

I've been working to upgrade Leadwerks to the latest Newton Dynamics 3.14, and I want to change it so the engine imports Newton as a DLL. This will allow the Newton developer to debug some of my applications when needed.   World Factions has raised an important bug / issue and this the best route to solve it.   I've been tinkering with some improvements to some of the physics stuff with promising results, but it needs more work and I don't want to say anything else about it yet. If I can g

Josh

Josh

Pixmap Class and DDS Saving

Textures in Leadwerks don't actually store any pixel data in system memory. Instead the data is sent straight from the hard drive to the GPU and dumped from memory, because there is no reason to have all that data sitting around in RAM. However, I needed to implement texture saving for our terrain system so I implemented a simple "Pixmap" class for handling image data: class Pixmap : public SharedObject { VkFormat m_format; iVec2 m_size; shared_ptr<Buffer> m_pixels; int

Josh

Josh

Prizes Shipping

If you entered the Winter Games Tournament, I am shipping prizes to you now (late, I know).   You will receive a friend request from the Leadwerks Software Steam account. Please accept this. I will need your mailing address in order to ship your prize.

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

Website Changes

I want to streamline some of this website. We went through a lot of changes since the release on Steam in 2014 and learned what works and what does not. The "Marketplace" is just called the default "Downloads" name now, and that literally is what it is for. It's a place to keep a permanent copy of your files. Paid files are still supported, and any purchased items are still available to download, but I do not have any aspirations of building this up unless it just happens spontaneously. Ins

Josh

Josh in Articles

Reflection Colors

An update is available for Leadwerks 5 beta on Steam that adds a World::SetSkyColor() command. This allows you to set a gradient for PBR reflections when no skybox is in use. I learned with Leadwerks 4 that default settings are important. The vast majority of screenshots people show off are going to use whatever default rendering settings I program in. We need a good balance between quality and performance for the engine to use as defaults. Therefore, the engine will use SSAO and bloom effe

Josh

Josh in Articles

Leadwerks Game Engine 4.2 RC2

A new build is available on the beta branch: Reverted to Visual Studio 2015 for final release. Information on downgrading your 2017 projects can be found here. Added soft particle shader. Added smoke and soft smoke particle prefabs. Added SSR post-effect (by Igor, Shadmar, and myself). Added trigger material and updated doors example map.

Josh

Josh

iHurt

Here's the code: Print("context = "+GetObjectAddress(context)); Print("Graphicsdriver: "+GetObjectAddress(graphicsdriver)); Print("GetGraphicsdriver: "+GetObjectAddress(GetGraphicsDriver())); Print("ActiveGraphicsDriver: "+GetObjectAddress(ActiveGraphicsDriver)); Print("context->graphicsdriver: "+GetObjectAddress(context->graphicsdriver)); Print("context = "+GetObjectAddress(context)); Here's the output, running on an iPhone 4: context = 0x06921400 Graphicsdriver: 0x0694e800 GetG

Josh

Josh

Early access to some 3.3 features

A launch option has been added to Leadwerks on Steam that allows you to launch the Leadwerks Game Player outside of the editor. When you launch Leadwerks Game Engine from Steam, a dialog box appears and lets you choose whether to run the editor or the Leadwerks Game Player. (If you just launch the app from a desktop or start menu shortcut, the editor is run automatically.) You can subscribe to other users' games in the Leadwerks Workshop on Steam, and play them by launching the game player.

Josh

Josh

Ultra App Kit beta updated

A new update is available on Steam for Ultra App Kit. A TEXTFIELD_PASSWORD style flag has been added and is used for the password entry form: A WINDOW_CHILD style flag has been added. I found this was necessary while implementing a Vulkan 3D viewport in a GUI application. You can read more about that here. Pressing the Tab key will now switch the focus between widgets. The "Learn" tab in the project manager has been moved in front of the "Community" tab. The Visual

Josh

Josh in Articles

Beta Update Available

A new update is available on the beta branch. A few months ago, Valve introduced the SteamUGC API to Steamworks SDK. This replaces the original RemoteStorage API, and allows unlimited file sizes and a simpler command set. I also suspect the internals in the Steam client and servers are more reliable, because it is a second-iteration design. The beta build can download Workshop items published with the old legacy API, or with the new one. However, Workshop items published with the beta build

Josh

Josh

Project Workflows

It's funny how all of the various features in the new engine are interconnected and development just flows from one to another. I was working on terrain, and I needed to save out some texture data so I implemented Pixmaps, and I wanted to add Basis support and DXT decompression, and then I started converting texture formats, and now I need a way to manage this all. This is an idea I have had for several years and I finally got to try it out. Leadwerks Game Engine 4 has a strictly defined wo

Josh

Josh

GLTF Loader Update

The following changes have been made to the GLTF model loader: Correctly loaded rotations and orientations. Mesh collision caching for faster loading. Supports transforms with negative scale and correct face orientation. Support for adjustable alpha cutoff value. Support for KHR_materials_unlit extension (full bright materials). This model from SketchFab was useful for testing because it uses so many features of the GLTF format: https://sketchfab.com/

Josh

Josh

Three Types of Optimization

In designing the new engine, I have found that there are three distinct types of optimization. Streamlining This is refinement. You make small changes and try to gain a small amount of performance. Typically, this is done as a last step before releasing code. The process can be ongoing, but suffers from diminishing returns after a while. When you eliminate unnecessary math based on guaranteed assumptions you are streamlining code. For example, a 4x4 matrix multiplication can skip the calc

Josh

Josh

Beta update available

An update is available on the beta branch with the following changes: Fixed System::Print() command which was printing char* values as bools. Added optional parameter to the end of Entity::SetInput(). Add optional parameter to the end of Emitter::SetVelocity() Fixed light occlusion culling bug. Fixes a sound source position bug.

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

12-22-9

Working to improve the implementation of the code known as framework. It needs to be able to talk to Lua, with all programming languages. I can't really go on documenting the script until this is finalized, so the time to do it is now.

Josh

Josh

Default branch updated

An update is now available on the default (and beta) branch that will fix the crash when publishing a game, on Windows and Linux.

Josh

Josh

Beta update available

An update is available on the beta branch. This adds the Window::Center style back into the new refactored Window class, and adds a missing header file in the Professional Edition.   If you'd like to try out a basic implementation of the new GUI, download and extract the attached scripts: Scripts.zip   This code will create a GUI on the rendering context. It simply consists of a solid background filling the screen and a textless button. --Initialize Steamworks (optional) Steamworks:Ini

Josh

Josh

2020 Year in Code

2020 was the most intellectually challenging year in my career. Many major advancements were invented, and 2021 will see those items refined, polished, and turned into a usable software product. Here is a partial list of things I created: Streaming hierarchal planet-scale terrain system with user-defined deformation and texture projection. Vulkan post-processing stack and transparency with refraction. Vulkan render-to-texture. Major progress on voxel ray tracing.

Josh

Josh in Articles

3D GUI

Putting all the pieces together, I was able to create a GUI with a sprite layer, attach it to a camera with a texture buffer render target, and render the GUI onto a texture applied to a 3D surface. Then I used the picked UV coords to convert to mouse coordinates and send user events to the GUI. Here is the result: This can be used for GUIs rendered onto surfaces in your game, or for a user interface that can be interacted with in VR. This example will be included in the next beta upd

Josh

Josh

Vulkan on AMD Graphics Cards

I have procrastinated testing of our new 3D engine on AMD hardware for a while. I knew it was not working as-is, but I was not too concerned. One of the promises of Vulkan is better support across-the-board and fewer driver bugs, due to the more explicit nature of the API. So when I finally tried out the engine on an R9 200 series card, what would actually happen? Would the promise of Vulkan be realized, or would developers continue to be plagued by problems on different graphics cards? Read on

Josh

Josh in Articles

The great big beta update

The beta branch on Steam has received an update with some important changes. A new project template called "Tutorial Samples" has been added, which includes the files you need to complete the new tutorials found here. A new script, Main.lua, has been introduced to take over the main entry point of your program. As explained in detail here, this will have no effect on your existing projects. The screenshot publish feature is fixed. Flowgraph arguments no longer require the EnableLegac

Josh

Josh

Leadwerks Game Engine 4.2 RC4

A new build is available on the beta branch: Fixed animation bug found by tumira Multiple animations will now be a bit faster. Fixed probes not rendering bug found by reepblue   If all is good this will go out on the stable branch this Sunday.   The beta testers have done a great job. Thanks for your help!

Josh

Josh

×
×
  • Create New...