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

About this blog

Learn about game development technology

Entries in this blog

Please review the new documentation

I'm asking the community to look over the new documentation system and find any mistakes before I sign off on the project. The tutorials are not completed. The API Reference should be completed, although the main API Reference page is not showing anything right now. https://www.leadwerks.com/learn   Here are my notes to the developer who is working on the docs:   Please review the material and make sure everything meets your satisfaction, and leave your comment below if needed. I figure

Josh

Josh

Voxel Direct Lighting on the GPU

We left off on voxels when I realized the direct lighting needed to be performed on the GPU. So I had to go and implement a new clustered forward renderer before I could do anything else. Well, I did that and now I finally have voxel lighting calculation being performed with the same code that renders lighting. This gives us the data we need to perform cone step tracing for real-time dynamic global illumination. The shadows you see here are calculated using the scene shadowmaps, not b

Josh

Josh

Hardware Upgrades and Minimization

I've had an urge lately to minimize my PC setup. Maybe it's the experience of an interstate move with five computers, but I find myself valuing small size and practicality more lately over quality.   I purchased a Dell Ultra Sharp UZ2715H monitor with built-in speakers. This allows me to eliminate three cords and an extra power adapter from my external speakers. Interestingly, the two-speaker setup was a downgrade from my old speakers+subwoofer system, because I got tired of kicking that bi

Josh

Josh

Widget Progress

I've added a textfield widget script to the beta branch, and a new build, for (Lua interpreter, Windows only, at this time). The textfield widget allows editing of a single line of text. It's actually one of the more difficult widgets to implement due to all the user interaction features. Text is entered from the keyboard and may be selected with arrow keys or by clicking the mouse. A range of text can be selected by clicking and dragging the mouse, or by pressing an arrow key while the shif

Josh

Josh

Voxel ray tracing and motion

So far the new Voxel ray tracing system I am working out is producing amazing results. I expect the end result will look like Minecraft RTX, but without the enormous performance penalty of RTX ray tracing. I spent the last several days getting the voxel update speed fast enough to handle dynamic reflections, but the more I dig into this the more complicated it becomes. Things like a door sliding open are fine, but small objects moving quickly can be a problem. The worst case scenario is whe

Josh

Josh

Basis Universal Texture Support

Last year Google and Binomial LLC partnered to release the Basic Universal library as open-source. This library is the successor to Crunch. Both these libraries are like OGG compression for textures. They compress data very well into small file sizes, but once loaded the data takes the same space in memory as it normally does. The benefit is that it can reduce the size of your game files. Crunch only supports DXT compression, but the newer Basis library supports modern compression formats like B

Josh

Josh

GDC wrap up

I skipped the GDC for a couple of years, because I just wanted to focus on developing our technology. This was my first year back since our engine came to be. I was surprised how many people were familiar with our engine, and I got to talk to a few users (who probably aren't active on the forum). I also got to chat briefly with Tom Spilman, David Helgason, and Mike Wuetherick. It's really fun to see what everyone is up to, and how far they have come since a few years ago.   We met new frie

Josh

Josh

How to use gmax

Not a lot of people know about this, but back in 2001 Discreet (before the company was purchased by Autodesk) released a free version of 3ds max for modding games. Back then game file formats and tools were much more highly specialized than today, so each game required a "game pack" to customize the gmax interface to support that game. I think the idea was to charge the game developer money to add support for their game. Gmax supported several titles including Quake 3 Arena and Microsoft Flight

Josh

Josh in Articles

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

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

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

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

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

Building Character

My goal with Leadwerks 3 has always been to give the people what they need to make playable games. What they really need. Creative projects are interesting because it's easy to get derailed. You can lose interest in an idea, or you might avoid a critical problem you don't know how to solve, and instead spend time doing fun little things that make you feel like you're making progress when you're not. For example, let's say I am making a dungeon crawler. I have some basic gameplay but I can't

Josh

Josh

Launch Day

Well, starting with leaving my iMac's power cord at home, this has been a chaotic day, but we're getting it under control. Leadwerks 3 is a much bigger step beyond Leadwerks 2. We're no longer confined strictly to the PC platform, we've now got a C++ code base that can be used in many ways, and our new tools are really nice to use, if I do say so myself. It's also nice to sort of reconnect with our origins in the CSG editing tools. The feedback on this has been very positive, and I think it

Josh

Josh

No SOPA

As the founder of Leadwerks Software, software piracy is an issue that has directly affected my income. We solved the piracy problem by turning our product into a service. Only paid customers can access our community website and get full use of our product. Piracy rates dropped to virtually zero after that. I consider our piracy problem totally solved. The marketplace changed, we adapted to provide a better service, and overall both the customers and company are better off than before.   Netf

Josh

Josh

Totally Tubular

Today I implemented the last two compound primitives. Tubes are the same as in 3D World Studio, with parameters for the number of segments and thickness. Since the Leadwerks3D editor supports smooth groups, another new compound primitive has been added. A torus is a "donut" shape. These can be used to make curved pipes and other things. Here are the two compound primitives, side by side:   Smooth groups and new primitives in Leadwerks3D allow you to create new kinds of geometry which we

Josh

Josh

Madness? THIS - IS - MOBILE!!!

I apologize preemptively for the title.   So I picked up a Samsung Galaxy Tab today, for testing...yeah, that's it, "testing"...   I installed the USB driver for Windows, restarted my computer, and was able to start debugging Leadwerks3D on it with no trouble at all. However, the rendering showed black objects that ought not be black.   At this point in the game, having such a basic issue is very scary to me. I tracked the problem down to the lighting uniforms being passed to the sha

Josh

Josh

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

4.3 beta update available

A new update is available on the beta branch on Steam. I've merged the OpenGL2 and OpenGL4 graphics driver classes into a new class called simply "OpenGLGraphicsDriver". Everything should work, but let me know if you find any behavior changes between 4.2 and this new beta.   OGG support has also been added, thanks to MartyJ's help. The following header search paths must be added to C++ projects: ..\..\Source\Libraries\libogg\include ..\..\Source\Libraries\\libvorbis\include ..\..

Josh

Josh

2-17-2010

I dabbled in a lot of little things recently, like GUI code and networking, just to make sure things would work the way I want in the long run. The lighting optimizations weren't planned to come out yet, but were moved to the front due to one user who is finishing up a commercial game. I've also been helping Pure3D a little bit, but I can't say anything about that right now. Of course, our website is still in progress, and that will hopefully come together by the end of the month.   We'll h

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

Streaming Terrain Data Fetching

Previously, I showed how to create a terrain data set from a single 32768x32768 heightmap. The files have been uploaded to our Github account here. We will load data directly from the Github repository with our load-from-URL feature because this makes it very easy to share code examples. Also, even if you fly around the terrain for a long time, you are unlikely to ever need to download the complete data set. Think about Google Earth. How long would it take you to view the entire planet at full r

Josh

Josh

On the Naming of Things

The design of the Leadwerks website involves organizing a lot of different kinds of data that are continually growing, including forum posts, blog entries, gallery images, videos, and downloadable files.   All this information was organized in categories, and sub-categories, and in some cases, sub-sub-categories. The depth of categorization made it impossible to follow all the information that was flowing through the site, and users frequently posted in the wrong place. We recently underwent

Josh

Josh

Environment Probes

Note: this is highly experiment and subject to cancellation, change, revision, etc. Now on with the blog...   Shadmar and Reepblue have paved the way for this research, and I am experimenting with some of these ideas in Leadwerks.   Environment probes in Leadwerks are an experimental entity that creates a vantage point from which a cubemap is generated. The cubemap provides a 360 degree view of the surrounding environment in a single texture. This texture can then be used in the deferred

Josh

Josh

×
×
  • Create New...