Jump to content
  • entries
    941
  • comments
    5,894
  • views
    870,356

About this blog

Learn about game development technology

Entries in this blog

Terrain Tessellation

Our "dynamic megatexture" terrain system contains a lot of powerful capabilities we haven't yet been able to tap into. One advantage of this approach is that it works extremely well with hardware tessellated terrain. In fact, our terrain system was originally designed with this in mind, which is the main reason we have a slot allocated for a displacement map. This video shows my first-pass implementation of the technique. When a displacement map is assigned to a terrain texture layer, painti

Josh

Josh

Terrain on the new Google Nexus 7

Compatibility testing for the new terrain system ended up taking an entire week. Most of the problems revolved around OpenGL ES and some iOS driver bugs. Once I got it running on iOS, Android was able to run it with only one small change. The quality settings in this video are lowered for mobile, but the new Google Nexus 7 can actually handle quite a lot, at an impressive 1920x1200 resolution! With a price tag of only $200, this is a great choice for an Android tablet.  

Josh

Josh

Terrain Normal Update Multithreading

Multithreading is very useful for processes that can be split into a lot of parallel parts, like image and video processing. I wanted to speed up the normal updating for the new terrain system so I added a new thread creation function that accepts any function as the input, so I can use std::bind with it, the same way I have been easily using this to send instructions in between threads: shared_ptr<Thread> CreateThread(std::function<void()> instruction); The terrain update nor

Josh

Josh

Terrain in Leadwerks 5 Beta Updated

A new update is available for beta testers. This adds a new LOD system to the terrain system, fixes the terrain normals, and adds some new features. The terrain example has been updated ans shows how to apply multiple material layers and save the data. Terrain in LE4 uses a system of tiles. The tiles are rendered at a different resolution based on distance. This works great for medium sized terrains, but problems arise when we have very large view distances. This is why it is okay to

Josh

Josh

Terrain in Leadwerks 5

I wanted to work on something a bit easier before going back into voxel ray tracing, which is another difficult problem. "Something easier" was terrain, and it ended up consuming the entire month of August, but I think you will agree it was worthwhile. In Leadwerks Game Engine, I used clipmaps to pre-render the terrain around the camera to a series of cascading textures. You can read about the implementation here: This worked very well with the hardware we had available at the time, b

Josh

Josh

Terrain Deformation

In games we think of terrain as a flat plane subdivided into patches, but did you know the Earth is actually round? Scientists say that as you travel across the surface of the planet, a gradual slope can be detected, eventually wrapping all the way around to form a spherical shape! At small scales we can afford to ignore the curvature of the Earth but as we start simulating bigger and bigger terrains this must be accounted for. This is a big challenge. How do you turn a flat square shape into a

Josh

Josh

Terrain Compression

I wanted to see if any of the terrain data can be compressed down, mostly to reduce GPU memory usage. I implemented some fast texture compression algorithms for BC1, BC3, BC4, BC5, and BC7 compression. BC6 and BC7 are not terribly useful in this situation because they involve a complex lookup table, so data from different textures can't be mixed and matched. I found two areas where texture compression could be used, in alpha layers and normal maps. I implemented BC3 compression for terrain alpha

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

Tech Update: OpenGL 4 Deferred Renderer

The OpenGL 4 renderer for Leadwerks 3.1 is well underway. I began implementing deferred lighting in earnest last Friday. Previous work included setting up MSAA on deferred buffers, as well as implementation of the Leadwerks Buffer class, which functions as a thin wrapper around OpenGL FBOs (frame buffer objects). The engine already tracks relationships between objects and lights, and this system was able to be used to provide a list of shadow-casting objects for each point and spot light.  

Josh

Josh

TeamSpeak

Being able to communicate with a gaming headset or microphone is an important part of fast-paced multiplayer gaming. Therefore, Leadwerks 4.6 will feature easy to use voice recording features that allow you to talk to your teammates or taunt your opponents, in addition to a new peer-to-peer networking system. The system is largely automated so that you only have to call a single command: Voice::SetRecording(true) Or in Leadwerks 5: SetVoiceRecording(true) In practical usage, y

Josh

Josh

Teaching Leadwerks

About a week ago we sent a survey out to Leadwerks 3 customers to get their feedback and plan our next leg of development. According to the results, the number one most important issue Leadwerkers care about is tutorials.   We've taken the following steps to build resources for Leadwerks user to learn from: The Leadwerks 3 tutorials database is available here. Anyone can submit a new article, but all articles must be approved by the staff before they appear visible. Without a process of a

Josh

Josh

Taking Care of Business

This is about financial stuff, and it's not really your job to care about that, but I still think this is cool and wanted to share it with you. People are buying stuff on our website, and although the level of sales is much lower than Steam it has been growing. Unlike Steam, sales through our website are not dependent on a third party and cannot be endangered by flooded marketplaces, strange decisions, and other random events. Every customer I checked who used a credit card has kept it

Josh

Josh

System Hooks Are Your Friend

Here's an example of how setting a debug hook in Leadwerks3D from a BlitzMax program saved me a lot of time stepping through code to figure out where something went wrong. When the engine encounters a fatal error, the hook is called, giving control back to the main program.   I can even step through the BlitzMax debugger and see which call to Leadwerks3D produced the error:   And it works with all supported languages. Little things like this make programming with Leadwerks3D very enjoy

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

Summer props now available

To help with your games in the Summer Games Tournament, Rich DiGiovanni has created a fun set of summer-themed models, including a beautiful sandy terrain texture for laxing out at the beach.     You can install this pack free from the Leadwerks Workshop: http://www.leadwerks.com/werkspace/page/viewitem?fileid=464751401   If you need any custom models made, check out Ancient Idol Studio for quality work at reasonable rates.

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

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

Streaming Terrain in Leadwerks Game Engine 5

The terrain system in Leadwerks Game Engine 4 allows terrains up to 64 square kilometers in size. This is big enough for any game where you walk and most driving games, but is not sufficient for flight simulators or space simulations. For truly massive terrain, we need to be able to dynamically stream data in and out of memory, at multiple resolutions, so we can support terrains bigger than what would otherwise fit in memory all at once. The next update of Leadwerks Game Engine 5 beta suppo

Josh

Josh

Streaming Terrain Data Preparation

Being able to support huge worlds is great, but how do you fill them up with content? Loading an entire planet into memory all at once isn't possible, so we need a system that allows us to stream terrain data in and out of memory dynamically. I wanted a system that could load data from any source, including local files on the hard drive or online GIS sources. Fortunately, I developed most of this system last spring and I am ready to finish it up now. Preparing Terrain Data The first st

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

SteamUGC Upgrade Complete

A new update is now available on the beta branch. This completes our migration to the newer SteamUGC system for Workshop content. Downloads should be working reliably now, but please let me know if you experience any trouble.   Steam protocol calls are now supported on Linux. Most notably, the Steam interface will open the Workshop now, instead of it opening in a web page.   An extra color option for the perspective viewport has been added, as well as several new color schemes. Select th

Josh

Josh

Steam Ratings

Our ranking on Steam is 185 ratings with 75% positive, which Steam categorizes as "Mostly positive". This is great. Over the last couple of years the reviews have gotten more positive as more features and better documentation has been added. So at this point, the more reviews we get the higher our rating goes, since our average rating today is better than when we started on Steam.   From what I gather looking at other products on Steam, we're only 5% away from a "Very positive" rating at 80

Josh

Josh

Steam Machines are Here

I went into GameStop and purchased a new Alienware Steam Machine for testing. They had a nice display showing all the new Steam stuff you can buy in stores.  

Josh

Josh

Steam Launch Recap and Steam Dev Days

On Monday, Leadwerks Game Engine: Indie Edition was finally launched on Steam. Before the Kickstarter campaign there was a Greenlight campaign to put Leadwerks on Steam, which it got through in just 27 days. Based on the success of the Kickstarter campaign, I decided to delay the Steam launch and try to get Linux done in time. However, there was one serious deadline I could not miss, and that was the Steam Dev Days conference next week. I knew we needed to have an actual product on Steam by then

Josh

Josh

Steam Hardware Survey Results

New Steam hardware survey results are available: http://store.steampowered.com/hwsurvey   As of October 2009, 80.79% machines surveyed can run Leadwerks Engine.

Josh

Josh

×
×
  • Create New...