Jump to content
  • entries
    941
  • comments
    5,894
  • views
    872,094

About this blog

Learn about game development technology

Entries in this blog

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

Halloween Week is Here!

It's the week of Halloween, and we've got a lot going on! Halloween Game Tournament II The Leadwerks Halloween Game Tournament is nearly here. Rather than a competition, this is a co-opetition. Everyone who publishes an entry to the Workshop or forum gets a Leadwerks sticker. Any entries that are judged to be especially noteworthy get a Leadwerks T-shirt. Prizes are sitting here waiting to be shipped.  Leadwerks 3.3 Leadwerks 3.3 is in beta testing now. Among several new features is

Josh

Josh

Beta Update available

Two new commands are available: System::CountGraphicsModes System::GetGraphicsMode   This allows you to view available graphics resolutions and choose one.   Fullscreen windows now work on Linux.   The "Go To" menu item in the scene browser will also recenter the flowgraph editor, if it is open and the selected object has been added to the map flowgraph.

Josh

Josh

Resizable Viewports on Linux

The beta branch has been updated with experimental support for resizable viewports on Linux, including an option to switch to a single viewport. The object bar buttons have also been fixed to display tool tips properly.     You can try this now by opting into the beta branch on Steam. Let me know what you think.

Josh

Josh

Vegetation Research

The Leadwerks 3 vegetation system is being designed to side-step the bottlenecks that limited the Leadwerks 2 vegetation system. The Leadwerks 2 system involved large collections of 4x4 matrices for each instance, resulting in hundreds of megs of data stored with the map. Eliminating this data results in small map sizes and reduction of memory usage.   Here we have 10,000 trees being rendered (with no billboards), for a total geometry count of 14 million polygons. Memory usage is...zero!  

Josh

Josh

Billboard Generation

With the main culling and rendering algorithm done, I am focusing on the billboard display for the Leadwerks 3.7 vegetation system. My goal is to reduce the popping artifacts the Leadwerks 2 renderer displayed:   I am testing with a non-plant model with the idea that if I can get it to look reasonably well with an oddly sized mechanical object with highly visible lines, then a tree should look very good. Below you can see part of the billboard image drawn on the screen showing the object

Josh

Josh

Billboards Part 2

I tried a different approach for billboards that is giving good results. A single quad rotates around the vertical axis to face the camera. A series of 64 different view angles are rendered in a circle around the billboarded object. A second quad faces straight up and is gradually dissolved in when the angle between the object and the camera becomes vertical enough.   A combination of cross-fading and cross-dissolving is used to smoothly blend in between the different side views. The billb

Josh

Josh

Final details on decals

I'm doing what I think is the final 3.6 build now. I've got the finished decal textures from Rich, and I made some small adjustments to the way these work.   During development, I was not a fan of the "Decal Mode" material setting. It's terribly confusing, and it's unrealistic to expect that everyone is going to adjust all their materials for an obscure setting that isn't intuitive at all.   Basically decals tend to have two kinds: Big decals are used to add detail to the map. Small decal

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

Vegetation Physics

I just had a breakthrough with the physics. There's a lot of optimization work left to do, but I can see at this point the idea works.   Newton Game Dynamics provides a mechanism for a user-defined collision shape. This accepts a bounding box and calls a user-defined callback any time an object intersects the bounding box. The callback builds a mesh dynamically for the area that the other object occupies. Internally, Newton uses this mechanism to process heightmap terrain without having to

Josh

Josh

Vegetation Interaction

This video shows the player interacting with vegetation objects. Vegetation objects are special because they aren't stored in memory at all, but instead are dynamically generated in real-time according to a special algorithm! You can have infinitely dense forests without using any memory.  

Josh

Josh

Workshop Expansion

You've probably noticed a lot of new content and changes in the Workshop this week. Monday I plan to launch "paid items" in the Workshop. This is something I've wanted to do for several years, and it benefits everyone: More content will be available for you, ready to use with Leadwerks. I think content authors will make a lot more sales through Steam than they would through their own websites and even other stores. The top items will even get prime real estate and be shown right on the L

Josh

Josh

Source art files now supported in Workshop

You might not have noticed this, but Workshop items can now include the following file formats: "bmp","jpg","jpeg","png","tga","dds","psd","blend","fbx","obj","3ds","x","dae"   When Leadwerks installs Workshop items, the source art files are unzipped first, then the final files are unzipped, in order to avoid triggering a reconversion of the file. If you import an FBX and makes some changes to it, you can safely include the FBX in your Workshop package and it will install without reconvertin

Josh

Josh

Ambient Light Research Pt 2

After a resolving a few odd and ends I was able to create a proof of concept of the deferred environment probe idea I talked about earlier. The environment probe is basically the same as a point light. They have a range and affect a finite area. The color property can be used to adjust the intensity of the ambient lighting / reflections. Basically, you want to cover your indoor environments with these, but it's okay if you miss some spots. The environment probes fade out gradually so you do

Josh

Josh

Global Illumination Research Pt 3

The environment probe feature is coming along nicely, spawning a whole new system I am tentatively calling "Deferred Image-Based Lighting". This adds image-based lighting to your scenes that accentuates the existing deferred renderer and makes for higher quality screenshots with lots of next-gen detail. The probes handle both image-based ambient lighting and reflections.   Shadmar helped by implementing parallax cubemap correction. This provides an approximate volume the cubemap is rendered

Josh

Josh

Global Illumination Research Pt 5

I was able to work out the shader fixes and now I can show you a good schematic of how the new lighting system works. Instead of a single light source, we now have three types of lighting that are combined for the final render. Direct lighting is the standard deferred lighting model you know and love from Leadwerks. This looks great, but shadowed areas have always looked pretty flat.   The second component is the new GI ambient lighting. This is a view-independent lookup on the local cube

Josh

Josh

Leadwerks GUI

Leadwerks GUI is now functioning, on the beta branch, Windows only, Lua interpreter only.     GUI Class static GUI* Create(Context* context) Creates a new GUI   Widget Class static Widget* Create(const int x, const int y, const int width, const int height, Widget* parent, const int style=0) Creates a new Widget. Widgets can be made into buttons, dropdown boxes, or anything else by attaching a script.   virtual bool SetScript(const std::string& path, const bool start = true) Se

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

Leadwerks MaxGUI Driver

MaxGUI is an abstracted GUI system for the BlitzMax programming language. This allows Windows, Mac, and Linux native UIs to be created using the same code. The LeadwerksMaxGUIDriver module integrates Leadwerks GUI so that existing programs can be recompiled using our new UI system. Here's the first shot of it working in an actual existing program:  

Josh

Josh

Subwindows!

When the new Window::Embedded style is used in the window creation function, the window will appear as a panel, as part of the parent window. The black region here is an embedded window parented to the main window. (The tabber and other panels and controls are all just Leadwerks objects; Windows doesn't recognize them or know they're there, as they are just created by Leadwerks structures and drawing commands.)     Why is this special?   The embedded child window uses single-buffer draw

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

Offroad Racing Game Template

I'm putting together ideas for a racing game template to add to Leadwerks. We already support vehicles. The challenge is to put together that looks and feels slick and professional, like a real game people want to play. The finished demo will be submitted to Greenlight, GameJolt, IndieDB, itch.io, etc.   Gameplay First, I wanted to think about what style of racing I want this to be. I don't want street racing because it's kind of boring, and the level design is more involved. I don't wan

Josh

Josh

Preparing for the release of version 4.4

I am going to try something different this time and use the Thunderclap tool to promote the release of Leadwerks 4.4, which I have scheduled for April 3: https://www.thunderclap.it/projects/52943-leadwerks-game-engine-4-4   Please sign up to help with the launch if you would like to promote it.   Also, there is still time to help the launch of A Demon's Game: https://www.thunderclap.it/projects/52763-a-demon-s-game-crowdfunding

Josh

Josh

Website Design

With the upcoming uncertainty that Steam Direct introduces to Steam sellers, I am putting more effort into our website, because it may be the primary channel through which new users discover Leadwerks in the future. Although the functionality of our site is awesome, the visual design is rather outdated and it's time for an actual designer to take over. I've got a rough idea of what I want the site to look like, but beyond that I am happy to let someone else figure it out.     I plan o

Josh

Josh

EuroTrip II

I am now in possession of the official Leadwerks USB drives.  Weighing in at 16 GB, they look fantastic. These will be shipped out shortly, along with the posters from the last game tournament.  I've been working behind the scenes on some big things that took my attention, but I am not yet ready to reveal any of this.  Because of the timing on this, we are going to do a Leadwerks Fall Games Festival starting in September. I am going to spend the rest of the summer in Europe, where

Josh

Josh

×
×
  • Create New...