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

About this blog

Learn about game development technology

Entries in this blog

A fresh new look...or a blast from the past?

You may notice the website header looks a little different. Sleeker, cooler, more 2013ish. Well, it's actually a lot more classic Leadwerks than you might realize. Here's what Leadwerks.com looked like in 2005:

Josh

Josh

Building maps with modular props

The beta branch on Steam is updated with a new build. Fixes and Enhancements The camera movement options have been made more sane. The range of possible values is a little more practical now. A mouse smoothing option has been added that makes the camera motion in the perspective viewport feel a lot more smooth and natural. I also found a bug that caused the camera move speed to change when a map was loaded. It was an annoyance that was almost unnoticeable but it feels much better now.  T

Josh

Josh

Animation Pipeline Improvements

I've been doing some work with animated models lately, and encountered some of the difficulties people have mentioned with model animations. It's not really hard to do, but there are things we can do to make the process faster when dealing with lots of animations. This video explains some of the changes I made to make it easier to get animated models into Leadwerks.   These include: Animation name in extraction dialog. Animation tab with all sequences displayed at once. Import animat

Josh

Josh

Game Launcher taking shape

Aesthetics are important in a consumer-facing product like this. Your games should have the best possible presentation to the end user. With that in mind, I've revised the Game Launcher interface to be more content-focused. The same interface will be available on our site, and launching a game works exactly the same either way.   The program log has been hidden away since it is a "developer" thing most users don't need to mess with. It can be brought up by pressing F10.  

Josh

Josh

Further refinement of physics shapes

I added more options in the model editor for single convex hulls, polymesh, and no collision. Also changed the physics render mode to wireframe so it's easier to see the physics and visual geometry together:     This makes it easier than ever to enable collision on a model, and it works better with the navmesh system:     A new "shrink wrap" method has been added to generate low-poly convex hulls.   Exact convex hull:   Shrink wrap method:   This really saves a huge amount o

Josh

Josh

Some backwards-compatible changes to the main script

The design of the App table in Lua was originally created to work with mobile, which has a more restricted program flow. The application calls App:Start() once to initialize it, and then will continually call App:Loop() until the function returns false. These two functions are found in the file "Scripts\App.lua".   Since we are focused on the PC now, it does not make sense to keep this structure. It also makes it more confusing to teach scripting. A conventional program layout with one mai

Josh

Josh

Leadwerks 3.6 Roadmap

I've got a pretty good idea of what features I want to pack into Leadwerks Game Engine 3.6, and I'm ready to share them with you now.   Just about all the simple easy features I think I can implement are already built into Leadwerks, but there are some bigger more involved things I want the engine to support. Instead of doing these one at a time, I am doing research on them all, and changing my focus when I get stuck. I've got a big block of research done that all revolves around creating ne

Josh

Josh

Beta Update Available

An update is available on the beta branch which makes changes to the way DLCs are installed. The SciFi Interior Pack has been added as a paid Workshop item. You can obtain this item by either purchasing it through the Workshop Store interface, or buying the DLC on our Steam Store page. At the time of this writing, the other model pack DLCs have not been added yet.   To install the SciFi Interior Pack DLC you simply browse to it in the Workshop interface. If you own the DLC the "Buy" button

Josh

Josh

GUI drawn directly on a window

This code creates a GUI directly on a window, with no OpenGL rendering context created at all. The same scripts can be used for widgets created on a window, a rendering context, or a texture: --Initialize Steamworks (optional) Steamworks:Initialize() --Set the application title title="$PROJECT_TITLE" --Create a window local windowstyle = window.Titlebar + window.Resizable + window.Hidden if System:GetProperty("fullscreen")=="1" then windowstyle=windowstyle+window.FullScreen end window=Wind

Josh

Josh

Clearing up Baggage

In this non-technical blog I will give you more of Josh's useful tips on how to live. In this blog I am talking about baggage, in the form of data physical possessions.   Archive and Delete The first thing you need to do is organize. If you have all your files in dozens of different folders all over your computer, it will be very difficult to track them all down. This is why Leadwerks and most other programs store files in your Documents folder on your computer. Leadwerks projects, along

Josh

Josh

Visual Studio 2017 Support

The beta branch of the professional version is upgraded to use Visual Studio 2017. You can download the release candidate for free here: https://www.visualstudio.com/vs/visual-studio-2017-rc/   Your existing projects should work with VS 2017 with no changes, but you might want to hold off while we test if you are in the middle of a project. New projects you create should open with VS 2017 by default.  

Josh

Josh

Anatomy of a Bug

The model editor animation bug was the second-worst bug to hit Leadwerks Game Engine in all its history. Reported multiple times, this would cause animated models to discard triangles only in the model editor, only on Linux. http://www.leadwerks.com/werkspace/topic/10856-model-editor-freaks-out/ http://www.leadwerks.com/werkspace/topic/12678-model-animation-vs-flashing-bodyparts/ Since our animation commands have worked solidly for years, I was at my wits' end trying to figure th

Josh

Josh

OGG Loader Update

I've updated the OGG loader with some code from Roberto14 and my own implementation of the ov_open_callbacks() function: http://www.leadwerks.com/werkspace/topic/15538-corrupt-or-missing-data-in-bitstream-continuing/   Both Robero14's and MartyJ's code was extremely useful in figuring this out.   This version may load a greater variety of OGG files successfully. Let me know if you find any problems.   Update is for Lua executables, for Windows only at this time.

Josh

Josh

Version 4.3 Release Candidate

I've uploaded a release candidate of version 4.3 on the beta branch. This is a full build, for Windows and Linux. The Game Launcher beta branch is also updated.   If all is well this will go onto the stable branch in a few days.

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

Animation in Leadwerks 5

The design of Leadwerks 4 was meant to be flexible and easy to use. In Leadwerks 5, our foremost design goals are speed and scalability. In practical terms that means that some options are going to go away in order to give you bigger games that run faster. I'm working out the new animation system. There are a few different ways to approach this. In situations like this I find it is best to start by deciding the desired outcome and then figuring out how to achieve that. So what do we want?

Josh

Josh

How to Expose C++ Classes to Lua in Ultra Engine

I'm using the excellent sol2 library to interface C++ and Lua in the upcoming Turbo Game Engine. I've decided not to create an automatic header parser like I did for tolua++ in Leadwerks 4, for the following reasons: There are a lot of different options and special cases that would probably make a header parser a very involved task with me continually discovering new cases I have to account for. sol2 is really easy to use. Each class I want available to Lua will have a stat

Josh

Josh

Terrain in Leadwerks 5

I wanted to work on something a bit easier before going back into voxel ray tracing, which is another difficult problem. "Something easier" was terrain, and it ended up consuming the entire month of August, but I think you will agree it was worthwhile. In Leadwerks Game Engine, I used clipmaps to pre-render the terrain around the camera to a series of cascading textures. You can read about the implementation here: This worked very well with the hardware we had available at the time, b

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

Animation speed in Vulkan vs. OpenGL

I created a test of 1000 animated crawler models to see how the performance of Vulkan stacks up against our older OpenGL renderer. Here it is in OpenGL running at 37 FPS, which is pretty respectable considering how many animations are playing (and about 4 million polygons). With Vulkan the same test yields a framerate of 66 FPS, 78% faster than the OpenGL version. Here is a video of the characters animating. Each skeleton is its own unique animation system, there are no sha

Josh

Josh

Leadwerks 5 Beta Update

A new update is available for beta testers. This update focuses on the GUI capabilities, mostly for interfaces created directly on a window, rather than 3D interfaces. We are moving from a Lua-driven GUI system to one coded more explicitly in C++. This will provide us with better documented behavior, easier portability, and a more responsive interface. Changes: GUI widgets no longer use Lua scripts. Each widget type has a C++ class, a creation command, and style constants. A

Josh

Josh in Articles

Last Call for API Modifications

I'm finalizing the Ultra App Kit API, which is going to be the basis of the new engine's API. Naming commands themselves is always a bit of an art unto itself. Some things are named a certain way because it is common convention, like Stream::Seek() instead of Stream::SetPosition() and ACos() instead of ArcCosine(). Other times we have holdovers from old APIs or BASIC syntax like Stream::EOF() or String::Mid(). Should a class that has no SetSize() method use GetSize() or Size() for a me

Josh

Josh in Articles

glTF Export

The glTF importer took a very long time to develop, but it much easier to write a glTF save routine. In one day I got an exporter working with support for everything except skinning and animation. To save a model in glTF format, just call Model::Save("mymodel.gltf") and it will work! Entire scenes can also be saved in glTF format.Here is a model that was loaded from Leadwerks MDL, MAT, and TEX files and saved as glTF. The textures are converted to PNG files. (Microsoft has an official extension

Josh

Josh in Articles

Editor Scripting API

The Ultra Engine editor is designed to be expandable and modifiable.  Lua script is integrated into the editor and can be used to write editor extensions and even modify the scene or the editor itself in real-time.  We can create a scene object entirely in code and make it appear in the scene browser tree: box = CreateBox(editor.world) box.name = "box01" o = CreateSceneObject(box) --make editor recognize the entity and add it to the scene browser o:SetSelected(true) We can even

Josh

Josh in Articles

×
×
  • Create New...