Jump to content
  • entries
    941
  • comments
    5,894
  • views
    868,059

About this blog

Learn about game development technology

Entries in this blog

Package Plugins

Many games store 3D models, textures, and other game files in some type of compressed package format. These can be anything from a simple ZIP file to a custom multi-file archive system. This has the benefit of making the install size of the game smaller, and can prevent users from accessing the raw files. Often times undocumented proprietary file formats are used to optimize loading time, although with DDS and glTF this is not such a problem anymore. Leadwerks uses built-in support for encr

Josh

Josh in Articles

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

Forum Update

The forum software has been updated to a major new version.  This completes my effort to give the entire website responsive design, and ensures we continue to receive security updates.  The responsive design part is really for SEO, but it is kind of cool to be able to browse the entire site on your phone without zooming in. Documentation has been switched over to the new system here, which is independent from the forum software: https://www.leadwerks.com/learn The entire site is now us

Josh

Josh

Fresh Blood

Dave Lee has joined the Leadwerks team. His job is to create a AAA game environment in Leadwerks Engine. Check out his work here.   (Influences of Crysis and S.T.A.L.K.E.R., how could I not hire him? )   Simon Benge, the lead artist from FPS Creator X, is also completing some animations for us.

Josh

Josh

Cleaning up physics shapes

Before Leadwerks 3 existed, Leadwerks 2 used a little tool called "Phygen" to generate collision shape files for 3D models:     The user would input the parameters and then save that file with the same name as the model it was to be associated with, with the PHY file extension. This was not a very good system, but the idea of storing a physics shape in a PHY file that was automatically loaded along with the model was a good one.   In Leadwerks 3 we implemented prefabs to make it easier t

Josh

Josh

Almost Android

Leadwerks 3 is compiling for Android. There's presently a problem with the file system that is preventing any 3D rendering, but we'll get that worked out shortly. We're targeting Android 2.2.   In order to compile C++ for Android on Windows, we had to install the following: -Java SDK -Eclipse IDE -Android SDK -Android NDK -CygWin -GDB   We also learned that OpenGL ES 2.0 does not run in the Android simulator. For the time being, we have to run the engine on an actual Android device.

Josh

Josh

Hello, Crawler

This year, Halloween makes an early arrival. Either that, or Josh is working on animation!   Obviously this is wrong, but it's only a few lines of code away from being right, and I'll figure it out.   Skinning in the new game engine is done on the CPU. You don't have to assign a special shader to make an animated model appear, but it is slower than GPU skinning. I can distribute the load across CPU cores, but no matter what we're not going to have free skinning like we do with Leadwerks E

Josh

Josh

How to be a great programmer (or whatever)

I am going to share my tips on how to be a great programmer, or anything else for that matter.   The first thing you need to do every day is eat properly. I recommend the following:   Breakfast 2 pieces of toast (whole wheat bread, the heavier the better). One banana or orange. Finally, eat pure egg whites until you can't eat anything more. They have no cholesterol, no fat, they are pure protein, and they will give you tons of energy. Lunch Get a deli sandwich. Chicken, tur

Josh

Josh

Linux Graphics

Compiling Leadwerks on Linux using the Code::Blocks IDE wasn't very hard. I particularly like the way Code::Blocks handles files in projects. Instead of creating your own "fake" file system in the project explorer, you just add the folder or files you want, and they are organized in a hierarchy that matches the file system.   I found the X windowing system to be extremely easy to work with. I've implemented windowed OpenGL contexts on Windows, OSX, iOS, and Android, and Linux was by far the mo

Josh

Josh

Beta branch update: Tons of art pipeline enhancements

I'm happy to say I nailed the design of the Leadwerks 3 workflow overall, but there are a couple of places where there's still some friction. Because the community is going to soon be moving a lot of content into the Steam Workshop, now is a good time to take a look at those issues. It's also smart to address them before the Blender exporter is written.   A new update has been pushed out to the beta branch on Steam that contains a lot of improvements in this area. However, both the map and

Josh

Josh

What's the Big Idea?

I think of the Leadwerks community as a big loosely affiliated collaborative game studio. I see people working together to add value in different ways. Some are dedicated to a single project, and others bounce around and participate in different projects. I like that everyone can just find what they like doing best and provide value in that way.   Voluntary collaboration, without being too restrictive, allows us to achieve economies of scale, while diversifying risk. Basically that means i

Josh

Josh

Publish your games directly to Steam with the Leadwerks game player

One of the coolest things I'm seeing in Leadwerks 3 is a lot of minigames being made. These are finished products, without super high expectations, but they are complete, don't take long to make, and some are quite fun. Seeing these gave me an idea for a feature that's been in development in the background for some time, and when you see what it does, it will explain some of the design decisions I've made over the last few months.   The next build on the beta branch on Steam will support Lua

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

Workshop Browser Preview

The implementation of the Leadwerks Workshop has always been planned in two steps: Initial implementation using the Steam interface. Implementation of built-in interface in editor.   I've been working on the second part for a couple days, and the results are pretty awesome so far. A built-in browser lets you view all items in the Workshop, search, and sort by rating or date uploaded.     When you click on an item, you can view its detail view. Pressing the "Install" button wil

Josh

Josh

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

More Widgets

The combobox and listbox widget scripts are now updated. The combobox is presently using a more game-like style that jus shows the currently selected item. You can change the selection by clicking on the widget with the mouse, pressing keyboard keys, or scrolling the mouse wheel.   The listbox includes a slider that automatically appears when needed. In order to make rendering faster, the draw function calculates the first and last visible items, and only iterates through those items while

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

Website Updated

Our website has been updated with a new look and responsive design. Here are a few highlights.   Landing page:   Product pages:   Screenshots used in the site from games will display the title and author when you hover the mouse over them.   Responsive layout scaled for phones:   Clearer writing that says exactly what Leadwerks does and who it is for:   Dark gallery and video pages:   Sleek screenshot pages:   I left the Workshop pages as-is for now. The forum softw

Josh

Josh

Two ideas I have

Leadwerks Game Engine 4.6 will feature a new peer-to-peer networking system that solves the NAT punch-through problem and provides an easy way to create a public list of game servers. Together with this and Leadwerks GUI which was released last year, we will soon have the tools to make a great deal of new types of games. Previously we have been focused on single-player games but the ability to create multiplayer games with fast reliable networking opens up a lot of new and fun possibilities.

Josh

Josh

Turbo Game Engine Beta Update

A big update for the beta of the upcoming Turbo Game Engine is now available, adding support for VR and Lua script! VR Rendering Turbo Game Engine now supports VR rendering, with support for true single-pass stereoscopic rendering on Nvidia GPUs. Other hardware will use a double-rendering path that is still faster than Leadwerks. To turn VR on simply call EnableVR(). Controllers are not yet supported, just rendering. Lua Scripting Lua script is now supported in Turb

Josh

Josh

2D Drawing in Leadwerks 5 beta

Previously I described how multiple cameras can be combined in the new renderer to create an unlimited depth buffer. That discussion lead into multi-world rendering and 2D drawing. Surprisingly, there is a lot of overlap in these features, and it makes sense to solve all of it at one time. Old 2D rendering systems are designed around the idea of storing a hierarchy of state changes. The renderer would crawl through the hierarchy and perform commands as it went along, rendering all 2D elemen

Josh

Josh

Some Changes...

Leadwerks 3 / 4 was aimed at beginners who were completely new to game development. Since we were the first game engine on Steam, this made a lot of sense at the time, and the decision resulted in a successful outcome. However, in the next engine we are taking a different approach. (This is a direct result of Steam Direct.) Enterprise is a new market I am pursuing, and we have a lot of interest from aerospace and defense VR developers. The fact that I am American also helps here. There are

Josh

Josh

Game Analytics API Plugin

Analytics is a feature I have long thought was a good candidate to be moved into a plugin. It is an optional features that only some users care about. It imports some pretty big third-party libraries into the engine. It requires an extra DLL be distributed with your game. It's a totally self-contained features that is easy to separate out from the rest of the engine. I have uploaded my code for Analytics in Leadwerks here as a new empty Visual Studio project:

Josh

Josh

Ultra Engine Player Input Features

There are three new features in the upcoming Ultra Engine (Leadwerks 5) that will make game input better than ever before. High Precision Mouse Input Raw mouse input measures the actual movement of the mouse device, and has nothing to do with a cursor on the screen. Windows provides an interface to capture the raw mouse input so your game can use mouse movement with greater precision than the screen pixels. The code to implement this is rather complicated, but in the end it just boils

Josh

Josh in Articles

Linux, You Changed Man

I recently fired up an install of Ubuntu 20.04 to see what the state of development on Linux is now, and it looks like things have improved dramatically since I first started working with Linux in 2013. Visual Studio Code looks and works great on Linux, and I was able to load the Ultra Engine source code and start compiling, although there is still much work to do. The debugger is fantastic, especially after using the Code::Blocks debugger on Linux, which was absolutely sadistic. (They're both u

Josh

Josh in Articles

×
×
  • Create New...