Jump to content
  • entries
    941
  • comments
    5,894
  • views
    866,232

About this blog

Learn about game development technology

Entries in this blog

Leadwerks 4.2 Release Candidate

A full update is available now on the beta branch.   Leadwerks Game Engine 4.2 features: Visual Studio 2017 support Compatible with the latest C++11 / GCC on Linux Refraction and heat haze effects. Analytics through gameanalytics.com New animation commands Spotlight texture: you can add a material to a spotlight and the first texture will be rendered onto the light (for flashlights). New material blend mode can be used to make objects that only appear in editor.   An

Josh

Josh

You Won't Believe what Analytics in Leadwerks Reveal

How do you like that clickbait title?   I implemented analytics into Leadwerks Editor using GameAnalytics.com last month, in order to answer questions I had about user activity. Here's what I have learned.   The number of active users is what I was hoping for. A LOT of people ran Leadwerks in the last month, but people don't usually use it every day, as the number of daily users is lower. The numbers we have are good though.   A lot of people use the Workshop to install models and othe

Josh

Josh

Documentation Revision

The new docs system is mostly working now: https://www.leadwerks.com/learn?page=API-Reference_Object_Entity_SetPosition   Features: Treeview list of all tutorials and API classes and functions. Alphabetical index (generated automatically from the table of contents). Search (with autogenerated search index). Switch back and forth between languages, with cookies to remember your preference. Entire examples are automatically selected when you click on them. Todo: Table of c

Josh

Josh

Multithreaded Rendering

After working out a thread manager class that stores a stack of C++ command buffers, I've got a pretty nice proof of concept working. I can call functions in the game thread and the appropriate actions are pushed onto a command buffer that is then passed to the rendering thread when World::Render is called. The rendering thread is where all the (currently) OpenGL code is executed. When you create a context or load a shader, all it does is create the appropriate structure and send a request over

Josh

Josh

Voxel Madness

After three days of intense work, I am proud to show you this amazing screenshot: What is so special about this image? I am now successfully uploading voxel data to the GPU and writing lighting into another texture, using a texture buffer object to store the voxel positions as unsigned char uvec3s. The gray color is the ambient light term coming from the Blinn-Phong shading used in the GI direct light calculation. The next step is to create a light grid for the clustered forward rende

Josh

Josh

New game engine examples

The new game engine needs to roll out with some top-notch examples showing off what it can do. Here's what I want: First-person shooter Offroad racing game Space shoot-em-up side-scroller. Side-scoller platformer similar to the Contra Playstation game. Now what I can use your help with is finding good example games on YouTube or Steam that I can start designing these samples around. Post your ideas below!

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

A first look at entity scripts

In Leadwerks Engine 3, you can load a script and attach it to any entity. You can attach multiple scripts to any entity, and they will be called in the order they were attached. Right now, I am calling the script-side table "actor" because it is a little more descriptive than "object" but I'm not sure about all the syntax yet. Below is a sample script for a sliding door. When you attach this to a model, the script will control its behavior: ----------------------------- -- Sliding door sc

Josh

Josh

Louie, Lua

Below is raw output from the Lua debugger. It displays all variables, tables, and functions in the Lua script call stack. This will be displayed in a nice treeview interface that looks much better, but I found this terribly exciting.   You'll notice that tables don't get expanded, even though I have the ability to display all the values in a table. The reason they don't get expanded is because tables can contain tables, including tables that might be found elsewhere in the program. This ca

Josh

Josh

Field Trip

I was at a shopping center this afternoon wasting time, and came across a hobby shop. I can't quite articulate what it is about stuff like this that I like, but this is what I want game development with Leadwerks3D to be like. This is why I set up the Leadwerks Asset Store and make the effort to make nice thumbnails with transparency to show off items in 3D. I want more game development to be a process of producing reusable components, and then at the design level, of picking and choosing whi

Josh

Josh

Vegetation Update

An update is available on the beta branch which adds the new vegetation system. You can open the attached map in the editor to see the system in action. Be sure to create a new project, or update your existing one, in order to get the new shaders and models. vegetationsample.zip   To get this update early you must opt in to the beta branch on Steam.   The new vegetation system is special because it does not use persistent objects stored in memory. Rendering and physics are executed accor

Josh

Josh

2016 Plans

Leadwerks is about making games, first and foremost. Therefore, you can expect me to focus on the following in the next year: More and better AAA first-party content. We're working out the process right now. It's a lot harder to produce top-quality content, but the results are worth it. I figure once we get the process down it will be easier to go back and produce more. Easy to use networking will open up a lot more gameplay possibilities and give us some fun games we can jump in and o

Josh

Josh

Building a Steam Purchase Server

One of my main goals in 2016 is to build a built-in store for Leadwerks users to buy and sell 3D models and other items through Steam. It took me a while to understand how this works: The client (Leadwerks Editor) sends a message to the Leadwerks.com server requesting that a purchase be made. The Leadwerks.com server sends a message to the Steam server requesting that a purchase be initialized. Steam displays a dialog to confirm the transaction in Leadwerks Editor. The Steam server r

Josh

Josh

Workshop Spam

It appears that items that were released within a certain time period, right when the Workshop was made public, received a lot of "spam" comments like below, from people who don't even own Leadwerks:     I have nothing against TJHeldna's cola can, but I don't believe it is the top-rated item in the Workshop through genuine votes: http://steamcommunity.com/workshop/browse/?appid=251810&browsesort=toprated&section=readytouseitems&actualsort=toprated&p=1   It's very obvious

Josh

Josh

Evolution

This is a good time to write about some very broad changes I expect to come about over the next year in our community as our new engine "Turbo" arrives. Turbo Game Engine, as the name suggests, offers really fast performance using a groundbreaking Vulkan-based renderer, which is relevant to everyone but particularly beneficial for VR developers who struggle to keep their framerates up using conventional game engines. I want to help get you onboard with some of the ideas that I myself am processi

Josh

Josh

Terrain Building API in Leadwerks 5 Beta

An often-requested feature for terrain building commands in Leadwerks 5 is being implemented. Here is my script to create a terrain. This creates a 256 x 256 terrain with one terrain point every meter, and a maximum height of +/- 50 meters: --Create terrain local terrain = CreateTerrain(world,256,256) terrain:SetScale(256,100,256) Here is what it looks like: A single material layer is then added to the terrain. --Add a material layer local mtl = LoadMaterial("Materials/Dirt

Josh

Josh

Multiple Light Bounces

I have more than one light bounce working now, and it looks a lot nicer than single-bounce GI. The ambient light here is pure black. All light is coming off from the direct light, and bouncing off surfaces. It will take some time to get the details worked out, and more bounces will require more memory. I'm actually kind of shocked how good looking it is. This is just a single 128x128x128 volume texture at 0.25 meters per voxel. Light leaks seem to be not a problem, even at that low re

Josh

Josh in Articles

Vegetation nation

I got my hands on the GDC showcase scene by Michael Betke, and it's much more beautiful than I thought. I used this scene to rewrite and test the vegetation rendering code. Collision isn't working yet, but it's built into the routine. The results speak for themselves.   Fortunately, Pure3D is soon offering a set of game-ready vegetation models, so you can create gorgeous landscapes like this.

Josh

Josh

Improvements for 2.32

Version 2.32 will feature some internal improvements that ensures your games run their best when conditions get demanding. I've totally rewritten the vegetation rendering routines with a highly specialized quad tree algorithm. There's a lot more to it than that, and I could write ten pages about the technique, but the bottom line is its fast and dynamic. Rendering with many vegetation layers is much faster, and since the visibility determination routine is so optimized, the engine can perform

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

Some hints of 3.0

This is a quick blog to fill you in on some of the features planned for Leadwerks Engine 3.0.   -Any entity can be a physics body. The body command set will become general entity commands, i.e. Entity.SetVelocity(). You can make an entity physically interactive with Entity.SetShape( shape ).   -Any entity can have any number of scripts attached to it. The basic model script functions will be supported for all entities, plus specialized script functions for certain entities. For example,

Josh

Josh

Picking Up St(r)eam...

I'm making good progress on LE3 now. First I had to write basic functionality for things like strings and file access. It was tedious, but now that it's done I've got a nice library of functions that make programming all that much easier. The string commands include Trim(), Split(), ExtractExt(), StripDir(), etc. I know the Boost library has some functionality like this, but I'd like to avoid relying on third party libs whenever possible. I've also got the file system working, with a FileFa

Josh

Josh

Leadwerks3D on Android

After some initial difficulty, Leadwerks3D is now running on Android, with the exact same code that runs on iPhone, iPad, Windows, and Mac. A big thanks for Aria for all his help and expertise with the Android platform. This means Leadwerks3D is now running on all platforms we intend to support at launch, and it can be easily extended to support new ones.     To celebrate, here's another cartoon I drew:

Josh

Josh

Model Editor

When you double-click a model file in the asset browser, it's opened up in the model editor window within Leadwerks3D. You can drag materials onto a model to assign them, then just save the model and close the window. You can also drag textures straight onto the model, and Leadwerks3D will do a pretty good job of guessing what material to use. If no material exists, it will create one, and take a good guess at what textures should be added to it, then apply the newly created material to the m

Josh

Josh

Project Manager

The Project Manager lets you manage multiple Leadwerks projects. A project includes assets, scripts, code, code projects for Visual Studio, Xcode, and Eclipse, along with your game's executable. The Project Manager lets you view and switch between your different projects.   Projects can be exported into a .zip file for easy sharing and archiving. You can even have Leadwerks3D scan all source code files and only include the asset files that your game actually uses. (I'm still adding the p

Josh

Josh

×
×
  • Create New...