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

About this blog

Learn about game development technology

Entries in this blog

Rethinking the Workshop

As discussed before, sales in the Workshop Store have been measly compared to what the DLCs regularly do. People just don't want to use it. Without revenue coming in, I can't convince third parties that it is a good idea to sell through this system (it isn't), and no new products will get added. We need a large library of content to be available for use in Leadwerks, but this isn't working. So I am moving on to another approach.   The "Workshop" menu item in the website header has been pla

Josh

Josh

Week 2

People are starting to use Lua, which is good. Initially there was some confusing, but in each case it turned out to be a small misunderstanding. I spent a few hours editing the wiki to add Lua syntax to the commands. I'm going to start working on Lua demos and more high-level stuff, in addition to fixing any bugs that exist. I'm not too interested in adding new features right now. This engine has plenty of features. Tons. It's time to use them to make something.

Josh

Josh

Everything in its place

I've been working a lot on the business side of Leadwerks lately, and although the results aren't yet visible, it's important to ensure our long-term goals are achieved. I wish I could say more right now.   My main machine is back on Windows XP. I don't want to discuss the relative merits of operating systems, but for me Windows XP is more productive. Other people might not work the way I do, so they will have their own preferences, and no one is "wrong". That said, I am surprised with ho

Josh

Josh

More amazing things you can do with Lua in Leadwerks 5

Our implementation of Lua in Leadwerks 5 is shaping up to be a dream come true. Below are some of the great improvements that are being made. Access STL Containers in Lua You can access STL containers directly from Lua: for n = 1, #entity.kids do entity.kids[n]:Move(1,0,0) end while #entity.kids > 0 do entity.kids[1]:SetParent(nil) end In fact, verbose commands like CountChildren() and GetChild() are no longer needed at all. On the C++ side you can use this: for (int

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

Smart Tessellation

I've actually been doing a lot of work to finalize the terrain system, but I got into tessellation, and another rabbit hole opened up. I've been thinking about detailed models in VR. Tessellation is a nice way to easily increase model detail. It does two things: Curved surfaces get smoother (using point-normal triangles or quads) A displacement map can be used to make small geometric detail to a surface. These are really nice features because they don't require a lot of mem

Josh

Josh in Articles

Leadwerks 3.0 Updated with Joint Motors

Leadwerks 3.0 has been updated with bug fixes and new support for joint motors. Hinge and slider joints can have an optional motor enabled that will rotate or move the joint to a specified orientation, at a speed determined by the new Joint::SetMotorSpeed command. This is great for making doors, elevators, as well as complex machinery made possible by the speed and stability of Newton Dynamics, the physics library powering Leadwerks (as well as the Amnesia series).   All joints can also have

Josh

Josh

Using Visual Studio Code with Leadwerks

Microsoft has released a cross-platform code editor called "Visual Studio Code". It's just a lightweight text editor like Notepad++. You can get it here for Windows, Linux, and Mac.   Although the editor is focused on web development it actually does support Lua syntax highlighting. If you are curious to try to use it with Leadwerks, add this text to your launch.json file: { "version": "0.1.0", // List of configurations. Add new configurations or edit existing ones. // ONLY "n

Josh

Josh

Workshop Remixes

Here's an example of something called "derivative works" which is something the Leadwerks Workshop on Steam allows us to do.   Shadmar uploaded a model from Leadwerks 2 and added some special effects to it in the Workshop here: http://steamcommunity.com/sharedfiles/filedetails/?id=312811332   I subscribed to the item, and used the model and sound to make my own Workshop item here: http://steamcommunity.com/sharedfiles/filedetails/?id=312846032   When you load my item up in the editor

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

It's Friday

...and that means one thing here at the lab.     I'm going to fix soooooooo many bugs tonight...  

Josh

Josh

Pieces Form the Whole

A few technologies are converging that form the basis of Leadwerks Game Engine 4 and our extended future.   BlitzMaxNG is a new compiler that turns BMX source code into C++, and includes a 64-bit compile mode. This means we can do a 64-bit build of our editor in the future. It's not super important right now, but it's a nice option to have going forward, and it makes all our code future-proof in the long run.   I've been exploring the direct 2D drawing features in GDI (Windows), Quartz (Ma

Josh

Josh

Shifting to DLCs

As described previously, the open-market model store approach does not work for Leadwerks and I am shifting my focus to providing DLCs made by third-party authors. The first thing I want to do is create more consistent branding that all DLC model packs will use. Here's what I came up with:           I'm also developing terminology to apply consistently to say what the DLC contains. The meaning of "Material Pack" and "Model Pack" is obvious. "Action Figures" will refer to charac

Josh

Josh

Debugging Lua with Visual Studio Code in Leadwerks Game Engine 5 Beta

Leadwerks Game Engine 5 Beta now supports debugging Lua in Visual Studio Code. To get started, install the Lua Debugger extension by DevCat. Open the project folder in VSCode and press F5. Choose the Lua debugger if you are prompted to select an environment. You can set breakpoints and step through Lua code, viewing variables and the callstack. All printed output from your game will be visible in the Debug Console within the VS Code interface. Having first-class support for

Josh

Josh

More Leadwerks.com Improvements

There's a new set of pages for Leadwerks Engine 2 up. I think these do a better job communicating all the features of LE2, and explain why it's unique and awesome. Existing users might even learn something from the material: http://www.leadwerks.com/werkspace/page/Products/le2   This also integrates into the forum skin. The only page left on the site that isn't using the global forum template is the 3D World Studio page, and that will be changed shortly.   The 2.43 evaluation kit will be

Josh

Josh

Current Work

All this month I have been working on a sort of academic paper for a conference I will be speaking at towards the end of the year. This paper covers details of my work for the last three years, and includes benchmarks that demonstrate the performance gains I was able to get as a result of the new design, based on an analysis of modern graphics hardware. I feel like my time spent has not been very efficient. I have not written any code in a while, but it's not like I was working that whole t

Josh

Josh

Steam Launch Recap and Steam Dev Days

On Monday, Leadwerks Game Engine: Indie Edition was finally launched on Steam. Before the Kickstarter campaign there was a Greenlight campaign to put Leadwerks on Steam, which it got through in just 27 days. Based on the success of the Kickstarter campaign, I decided to delay the Steam launch and try to get Linux done in time. However, there was one serious deadline I could not miss, and that was the Steam Dev Days conference next week. I knew we needed to have an actual product on Steam by then

Josh

Josh

A Look Forward to 2018

This is a rough timeline of events I am planning in the new year. It is not complete, and may change, but this is just what I am thinking right now. January 15: Release Leadwerks 5 Alpha Zero subscription February 1: Launch Kickstarter campaign for development of Leadwerks 5 Alpha One February 1: Game Tournament March 3: Kickstarter campaign complete April 1: Leadwerks 4.6 released (vehicles, NAT punch-through) June 30: Summer Games Tournament Jun

Josh

Josh

Oculus Rift vs. HTC Vive: Which is the one true VR headset?

I recently picked up an Oculus Rift (CV1) in order to improve our support for this headset. It was easy to make my changes, but having the actual hardware on hand was invaluable in this process, and our support for the Rift is now much better because of this. I have now tried a total of five different VR headsets: HTC Vive Valve's duct-taped prototype that was the basis of the HTC Vive. Oculus Rift DK1 Oculus Rift DK2 Oculus Rift CV1 At one point Leadwe

Josh

Josh

Leadwerks 3 Gets Projected Shadows

We've got a Leadwerks 3 update coming out this week, with miscellaneous fixes and some new features.   The first are the addition of Import and Export buttons in the Project Manager. You can export an entire project to a zip file. You can import a project from either a Leadwerks project file (*.werk) or a zip file. This makes it easy to share projects and synchronize your work across different computers.   The second new feature is projected shadows. These allow characters and other ob

Josh

Josh

Using analytics in your game

As noted previously, Leadwerks 4.2 now support built-in analytics. To enable this in your game you need to create an account at www.gameanalytics.com and create a new product. You can find your keys on the Game Settings page.     At the beginning of the main lua script, some code has been added to initialize analytics. By default this is commented out: if DEBUG==false then Analytics:SetKeys("GAME_KEY_xxxxxxxxx", "SECRET_KEY_xxxxxxxxx") Analytics:Enable() end   Uncomment this

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

Beta update available

A new build is available on the beta branch on Steam. This updates everything, C++ and Linux included.   A bug where the editor skipped navmesh calculation on brushes is fixed.   We're updated to the latest version of the Steamworks SDK, which may fix some Workshop upload and download issues.   Animation now calculates more than twice as fast as previously. This was achieved by optimizing the animation code, implementing some inline functions, and by changing the way the matrix updating

Josh

Josh

Banding and Dithering

I came across a very interesting presentation that talks about how to avoid "banding" artifacts in game graphics. The author uses dithering to add noise to an image and break up the visible lines your eye can detect. This even works with audio. When noise is added to the mix, the original tune appears to become more high-fidelity than it actually is:     I was able to use this concept to improve the appearance of banding in shadow acne in a low-resolution spotlight with a large volum

Josh

Josh

×
×
  • Create New...