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

About this blog

Learn about game development technology

Entries in this blog

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

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

Beefing up the Script Editor

Along with vegetation, Leadwerks 3.7 is planned to include new features that turn the script editor into a powerful IDE. Auto-completion makes it easier to remember the command you are looking for and greatly enhances coding productivity. A built-in project explorer is also being added to make it easy to quickly navigate to and open any script or shader file in your project.     These and other planned enhancements provide a powerful coding environment built seamlessly into Leadwerks Edit

Josh

Josh

Game Launcher Custom Widget

As described previously, I decided to create a custom widget script to replace the game launcher's HTML panel. The results are already looking awesome! The UI looks really slick. It's great to see this idea come to life in such a striking and attractive manner.   What's really cool is the OS drawing commands are being used, so the games grid uses cleartype subpixel antialiasing, and the UI is completely solid with no flashes or little visual glitches.     Oh, and except for the window

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

Import Model Scaling

I got tired of rescaling some models every time I created a new instance of them in the Leadwerks 3 editor, so I added an option to resize the model file itself to the proper dimensions. Double-click the model thumbnail in the asset browser to open it in the model editor. Then select the Tools > Resize menu item. The Resize Model dialog will appear with options to scale by a percentage, or fit to a specific size. For convenience, you can choose the units to use, including centimeters, met

Josh

Josh

The Asset Loader Class

In Turbo (Leadwerks 5) all asset types have a list of asset loader objects for loading different file formats. There are a number of built-in loaders for different file formats, but you can add your own by deriving the AssetLoader class or creating a script-based loader. Another new feature is that any scripts in the "Scripts/Start" folder get run when your game starts. Put those together, and you can add support for a new model or texture file format just by dropping a script in your project.

Josh

Josh

Building a recursive file system watcher for Linux

Following my previous update about correcting file path cases, I am now able to load all our maps in Leadwerks. The power of this tool running natively on Linux is starting to show:     The next step is to implement a file system watcher to detect file changes. Leadwerks automatically monitors the current project directory, and will reload assets whenever the file changes. This allows you to keep an image open in an image editor like GIMP, and any time you save your changes will be refle

Josh

Josh

Summer Events

This blog is going to actually be about business rather than technology. Here's what's going to happen this summer:   First, we need to get this ATI driver bug fixed ASAP. Nothing else can happen until that gets fixed: http://www.leadwerks.com/werkspace/tracker/issue-165-terrain-textures-bug-radeon-hd-5850   The official documentation is coming along well, and I am really pleased with how this has turned out. (Thanks, Aggror!)   An updated evaluation kit with some limited programming w

Josh

Josh

Say Goodbye to Hitboxes

The limiting step on getting animated characters into Leadwerks is the creation of "hitboxes". Since vertex sknning is done entirely on the GPU, static boxes are attached to bones to approximate the shape of each limb. This works well and is efficient, but very tedious to set up. The zombie character pack, for example, would have been released much sooner if not for this task.   This morning I began with the intention of adding an option in the Model Editor to automatically calculate hit bo

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

Beta update available

An update is available on the beta branch for Windows, editor and Lua executables only. This fixes a problem in the new light update system: http://www.leadwerks.com/werkspace/topic/15713-shadow-update-editor-issues/ http://www.leadwerks.com/werkspace/topic/15716-43-child-entities-do-not-cast-shadows/   The animation shaders are also modified and they will appear better: http://www.leadwerks.com/werkspace/topic/15710-all-animated-shaders-have-wrongstatic-normals/

Josh

Josh

Leadwerks GUI for Linux

It took most of the weekend, but I've got Leadwerks GUI running on Linux, rendering directly to an X11 window. This is the fastest possible rendering method on Linux, and I think you'll agree the results are worth it. You can try a demo here: http://www.leadwerks.com/werkspace/topic/14867-gui-demo/#entry100912     Just like the Windows implementation, I found it necessary to implement double-buffering. In X11 this is accomplished with the use of an extension called "xdbe". The document

Josh

Josh

Even Deeper

Lua's debug hooks are a little funny, because they don't appear to allow line-by-line calling of your own function. The description here is pretty vague: http://pgl.yoyo.org/luai/i/lua_sethook   The line and count hooks look like they might be what I wanted, but the docs have one big caveat: This makes me wonder what the point of these hooks even is. The way I have it set up now, "Step" continues to either the next Debug:Stop() call, or to the next point where a Lua function is called. N

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

Command Buffer Synchronization in Vulkan

The Vulkan graphics API is unbelievably complex. To create a render context, you must create a series of images for the front and back buffers (you can create three for triple-buffering). This is called a swap chain. Now, Vulkan operates on the principle of command buffers, which are a list of commands that get sent to the GPU. Guess what? The target image is part of the command buffer! So for each image in your swap chain, you need to maintain a separate command buffer  If anything changes in y

Josh

Josh

30% goal reached in less than 48 hours

I'm writing this as we're a few dollars away from the mythic 30% target that has been claimed to be a "tipping point" past which Kickstarter campaigns reach critical mass. I'm not going to go into any detail about that because I don't want to jinx it, but so far I am blown away by the response. We put this up Sunday in advance of contacting bloggers, so nobody really knew about it the first day. It's Tuesday morning and we're presently at 29%.   I've heard a number of people point out that

Josh

Josh

The Ancient Forbidden Knowledge of X11

The most interesting thing about the development of Leadwerks is digging into low-level X11 libraries that no one really understands. If the stock answers of "use GTK" or "use QT" were sufficient, this project would not be necessary. No one really knows how X11 works anymore, so it's like we are exploring an archaeological ruin and discovering ancient forbidden knowledge.     Here's me looking at the X11 documentation.     X11 doesn't really have a concept of non-embedded child wind

Josh

Josh

Initial Thoughts on VR

So I've been using Valve's VR technology quite a while before the HTC Vive was released, but I only recently picked up the final consumer version. Here are my thoughts on VR games.   First, VR games are completely different from non-VR games. Motion in the virtual world should never contradict motion in the real world. All the early Oculus demos are examples of what not to do.   "The Lab" by Valve really shows the depth of interaction VR opens up. You interactions with the virtual world

Josh

Josh

More Physics Phun

Physics works great with scaled entities:   For joints in the new engine, I am considering something fairly radical. In Leadwerks Engine 2, joints were just a class that wasn't an extension of the entity class. I was going to make a new Joint class that extends the Entity class. The problem is you would end up inserting a ton of intermediary joint entities into your model hierarchy, which would hurt the editor's ability to reload models on the fly.   What if joints were just a feature

Josh

Josh

Lua Interpreter on OSX

I've got the editor and Lua interpreter communicating on OSX, but am having trouble creating a window...some weird Objective C problem. I've got to go get my local Xcode expert.

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

Workshop Design

The Workshop system is a great way to share content, but I've come across some limitations. Most of these have to do with the use a "virtual" file system (using Workshop package IDs). Scripts and shaders can't be debugged because these systems expect a file path. With Workshop files, there is a file name and an ID number. This makes Shadmar's cool effects difficult to access, among other things. Interdependent files are very difficult to work with, because when you upload them to the Wor

Josh

Josh

Weapon switching logic

I'm working to add weapon switching to the player script. A weapon in the map consists of two important parts. First, you need a pickup weapon that tells the player they have a certain item. Second, you need the visual weapon that is displayed onscreen, along with the various settings that make that weapon unique.   It's a simple thing to program, but I'm trying to make it as easy as possible for the user to manage, so people can add new weapons and have them work with no tinkering and adju

Josh

Josh

Calling on the Leadwerks Community

Christmas is the season for giving, and it also happens to be my biggest sales time of the year. The Steam Winter Sale just kicked off and I need help getting us up on the first page of top sellers: http://store.steampowered.com/tag/en/Game%20Development/#p=0&tab=TopSellers   How do we do that? We drive web traffic to the Leadwerks Steam Store page. Here's a simple way to do it. If you could "Share" this Facebook post with your Facebook account, I would appreciate it: https://www.fac

Josh

Josh

×
×
  • Create New...