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

About this blog

Learn about game development technology

Entries in this blog

Visual Studio

I experienced some problems this week when I tried to create an executable with Visual Studio 2008 for deployment. On Windows 7 test machines I would get this error:   I finally tracked the solution down to a Visual Studio project setting. In Project Settings > Configuration Properties > C/C++ > Code Generation there is a property called "Runtime Library". By default it is set to rely on external DLLs. Change these values to non-DLL settings (like MT or MTd) and they will include

Josh

Josh

3.4 Recap and Beyond

I've got a couple days sales data from the 3.4 launch and it went well. Our conversion ratio and all that boring businessey stuff is good, and I know more now than I did last week. I think our intro video could use some updating and a little more professional polish, so I am looking for a video production company to create something new.   I was planning to make a trip back to Caifornia soon. I was going to skip the GDC, but I then got invited to the Valve party. I guess they're hiring the

Josh

Josh

AI-Generated Game Textures and Concept Art

Midjourney is an AI art generator you can interact with on Discord to make content for your game engine. To use it, first join the Discord channel and enter one of the "newbie" rooms. To generate a new image, just type "/imagine" followed by the keywords you want to use. The more descriptive you are, the better. After a few moments four different images will be shown. You can upsample or create new variations of any of the images the algorithm creates. And then the magic begins:

Josh

Josh in Articles

ZombieTime

AI is always a fun programming topic, and it's even more fun when you're mixing a physics-based character controller with dynamic navmesh pathfinding.   We planned on using navmesh pathfinding from the very start of the design of the new engine. Because it was integrated from the very beginning our implementation works really nicely. Pathfinding is completely automatic and dynamic. There are no commands you need to call to make it work. When part of the scene changes, the navigation data f

Josh

Josh

Development

I've been working on water. It's a challenge to get it to work properly with the post-effects stack and lighting, something I never did quite right in Leadwerks 2. However, the results are turning into the best implementation of water I've ever made. Water blends naturally with post-effects stack. Water reflection/refraction equation and behavior is improved over Leadwerks 2. Water ripples don't have an obvious direction of flow and look very realistic, without looking "wrong" when pla

Josh

Josh

Building a Collaborative Content Production Pipeline - Part Two

Previously, I described the goals and philosophy that were guiding my design of our implementation of the Leadwerks Workshop on Steam. To review, the goals were: 1. Frictionless sharing of items within the community. 2. Protection of intellectual property rights. 3. Tracking of the chain-of-authorship and support for derivative works.   In this update I will talk more specifically about how our implementation meets these goals.   Our implementation of the Steam Workshop allows Leadwerks

Josh

Josh

Version 4.4 beta update

Leadwerks Game Engine 4.4 has been updated on the beta branch on Steam. Networking finished and documented. GUI finished. All new physics features finished. The character controller physics and picking up objects has been improved and made smoother.  There is a problem with the player sliding down slopes, as seen in the FPS Character Controller example map.  I will work this out. I also noticed during testing that picking up some objects in the FPS / AI map will f

Josh

Josh

Editor Development Continues

I wanted to take some time to investigate geospatial features and see if it was possible to use GIS systems with Ultra Engine. My investigations were a success and resulted in some beautiful lunar landscapes in a relatively short period of time in the new game engine. I have plans for this, but nothing I can say anything specific about right now, so now I am working on the editor again. Leadwerks had a very well-defined workflow, which made it simple to use but also somewhat limi

Josh

Josh in Articles

Double-buffered shadow maps

I got my idea working with spot lights! You can simply use a shadow mode of 2 to indicate an object or light should be considered "static". A light that has the static mode set will use two shadow maps; one for static objects and one for dynamic objects. In the image below, the walls and room are static, and the oildrum has the regular dynamic shadow mode set. As you can see, redrawing the shadow only requires 650 triangles. Without this feature, the whole room and everything in it would ha

Josh

Josh

Carve, hollow, and cleaning up the scene tree

CSG carving now works very nicely. The hardest part was making it work with the undo system, which was a fairly complicated problem. It gets particularly difficult when brushes are in the scene hierarchy as a parent of something or a child of something else. Carving involves the deletion of the original object and creation of new ones, so it is very hard to describe in a step-wise process for the undo system, especially when all manner of objects can be intermixed with the brush hierarchy.  

Josh

Josh

Relocation

My productivity has not been good lately because I am agonizing over where to live. I don't like where I am right now. Decisions like this were easy in college because I would just go where the best program was for what I was interested in. It's more difficult now to know if I am making the right choice.   I can "go big" and move to San Francisco, which weirdly has become the capitol of tech. I lived there before and know all the craziness to expect. I used to work at 24th and Mission (be

Josh

Josh

Pathfinding

It doesn't happen to me much anymore but when I get stuck on a difficult problem, I get very restless and short-tempered. I guess that's the point where most programmers give up on a project. Since I can't physically wrestle code to the ground and give it a good beating Billy Batts style, the fight or flight response probably is not conducive to sitting in front of a piece of glass and figuring out code. On the other hand, I have a tendency to get difficult things done, no matter how hard the

Josh

Josh

Three's a Crowd

Crowd navigation is built into Leadwerks3D. You just set a destination, and your characters will automatically travel wherever you tell them to go. I think having navigation built into the engine will give us better results than a third party add-on would. We can automatically recalculate sections of the map that change, AI script functions can be called when certain events occur, and the code to control characters is extremely simple.  

Josh

Josh

Expansion

Jorn Theunissen has been hired on a part-time basis to help design a new set of documentation for Leadwerks. We're taking a top-down approach whereby he designs an outline that encompasses everything you need to know, assuming the reader starts with zero knowledge. The goal is to explain everything in one set of information, down to the level of describing what a mipmap actually is.   The organization of the material will be a linear list of lessons, with no nesting or sub-sections. This ma

Josh

Josh

Marble Game Template

Previously, I laid out a pretty complete design of the racing game template I want to build. There's definitely enough there to build out the concept with very little left unanswered.   We are going to have a marble game template, because of its simplicity and ease of learning. However, unless the template really looks like a game people would want to play, it doesn't offer enough "carrot" to inspire people. This idea is less well-defined than the racing game, so I am only in the idea

Josh

Josh

Character Physics Improvements

I update to latest version of Newton and did a lot of work on character physics. All collisions below the step height will now be ignored, regardless of incline. Character collision in general is much more stable and accurate. Terrain collisions now work properly. Character collisions using an adaptive method that will be much faster overall.   Opt into the beta branch on Steam to get the update. If you're using Lua, be sure to update your project to get the latest EXEs.

Josh

Josh

DPI Scaling

I've implemented DPI scaling into Leadwerks GUI (beta branch, Lua on Windows only).   To set the GUI scale you just call gui:SetScale(scalefactor). A scale factor greater than one will make it bigger, a scale factor less than one will make it smaller. There is no limit to the range you can set, but negative numbers are probably not good.   Scaling causes the GUI to be drawn at a different size, but widget dimensions and mouse events are still interpreted as though they were at their origin

Josh

Josh

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

Sunrise, sunset

Day/night cycles are something I have thought about for a long time. There's several possible approaches to simulating these, but it wasn't until today that I decided which is best. Here are some options I considered:   1. Shader-based skies with particle clouds. This is the method Crysis employs. A subsurface scattering shader creates the sky background. The mathematics are pretty complex, but the results for an empty blue sky look great. Particle clouds are used to place sparse clouds

Josh

Josh

Double rainbow all the way across the sky

Here is the amazing first shot of Leadwerks Engine 3. Behold not one, but TWO triangles! It's a dual display of isosceles inspiration.     Believe it or not, this screenshot actually demonstrates a feature that's new for LE3...hardware multisampling. Look carefully at the edges of the triangle:     This isn't the first time I've done multisampling, but until now it hasn't been possible to use with deferred rendering. It's now possible to combine these techniques with OpenGL4. You'

Josh

Josh

Out of OpenGL3Context

I spent a lot of time last weekend making sure resources are correctly shared between rendering contexts. It's surprising how many commercial games make you restart the game to switch graphics resolutions, and I find it annoying. Leadwerks Engine 3 uses a small hidden window with an OpenGL context to create the OpenGL 3.3 contexts, and it just stays open so there is always a persistent context with which resources are shared. Textures, shaders, and vertex buffers can all be shared between Ope

Josh

Josh

Design Confusion

Sometimes I run into situations where I don't really know how to structure things. I don't mind this, because it usually results in some really elegant design once I figure out what to do. I just play with ideas and try not to force anything, and when the right idea arises, I will recognize it.   Explaining a problem to someone else can help facilitate that process. How many times have you solved a difficult problem right after you posted a description of it on a forum somewhere? The proce

Josh

Josh

Game Scripting is Hard

As I finish up the FPS Weapons Pack, I am struck by just how much work it takes to build a game, beyond the engine programming. I wrote Leadwerks, and it still took me several days to script the behavior of these weapons. I also had the advantage of being able to add new entity classes, as I needed two new entity types to complete the task: LensFlares and Sprites.   I like the flexibility of Leadwerks to make any type of game, and I think having an abstract 3D command set to do anything is r

Josh

Josh

Vegetation Demo

I'm really happy to see all the great and scary games coming out for the Halloween Game Tournament. I have something of my own to share with you.   The Leadwerks 3 vegetation system is a groundbreaking new technology. All vegetation instances are procedural and dynamically placed, so that physics and rendering of any amount of instances can occur with zero memory usage. This demo proves that the idea actually works!   This demo shows the new Leadwerks Game Engine 3 vegetation system in ac

Josh

Josh

×
×
  • Create New...