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

About this blog

Learn about game development technology

Entries in this blog

Voxel Cone Step Tracing - Follow the Camera

Until now, all my experiments with voxel cone step tracing placed the center of the GI data at the world origin (0,0,0). In reality, we want the GI volume to follow the camera around so we can see the effect everywhere, with more detail up close. I feel my productivity has not been very good lately, but I am not being too hard on myself because this is very difficult stuff. The double-blind nature of it (rendering the voxel data and then using that data to render an effect) makes development ver

Josh

Josh in Articles

Package plugins and Quake files now supported

Package plugins are now supported in Ultra Engine 1.0.2. This allows the engine to handle other package formats besides just ZIP. In order to test this out, I created the Quake Loader plugin, which currently supports the following formats used in the original Quake game: PAK WAD BSP (textures) SPR LMP Why Quake? Well, the original Quake game is what got me into game development through modding, but Quake is also great for testing because it's so weird.

Josh

Josh in Articles

December 8, 2009

Rewrote the scripts that needed to be done with the OO single-state system. Just a few things to wrap up now and I will have it available.

Josh

Josh

12-17-2009

Well, the single-state lua update is out and I am ready to start making tutorials again.   Someone in the forum pointed out the game Fuel to me. This is an offroad racing game with a nearly infinite world. The data is streamed off the hard drive, basically like its treating the drive as if it were extended RAM. The game got bad reviews, but I think it's great. I went driving for at least 30 minutes and covered mountains, desert, redwood forests, and ravines. I'm in love with the terrain engin

Josh

Josh

lgui screenshot

I got selection and rendering order working correctly, which is really the problem I wanted to solve with this. Here's a screenshot of the work in progress:  

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

Assets product section now open

We're finally offering our first product in the new assets section of the site. I have wanted for a long time to have a means where assets can be produced and sold in a sustainable manner. I am very interested in working with third-party sites that produce game artwork. Orders are still processed by hand, but we're working on a system to automate things. You can be sure I won't let anything into the product listing unless it is 100% game-ready for Leadwerks Engine.

Josh

Josh

A second look at entity scripts

With Luabind, it turns out we don't even need a table associated with an entity. We can just add values and functions straight to Lua's representation of that entity in the virtual machine! So instead of this: object.health=100 object.entity:SetPosition(1,2,3) You can just do this, which is much nicer!: entity.health=100 entity:SetPosition(1,2,3) So there's no object/actor nonsense, you just work directly with the entity itself.   Entity Keys The Get/SetKey convention from Lea

Josh

Josh

Properties and the editor interface

The properties editor in Leadwerks3D is a live dialog. Your changes are shown instantly in the editor. If multiple objects are selected and their properties do not have the same values, the property interface will show an "indeterminate" state until the value is changed:   When an indeterminate value is changed, the new value is applied to all selected objects. Since they now have a matching value, it is now shown in the dialog. You can use this to move objects along a single axis, witho

Josh

Josh

Where Angels Fear to Thread

Leadwerks Engine 2 is single-threaded. The engine performs one task at a time. The engine updates physics, then performs some other tasks, then renders the scene, waiting until each task if finished before moving onto the next one:   I have experience programming threads in BlitzMax, and it works pretty much the same way in C++. Leadwerks3D is taking full advantage of threads and multicore CPUs, splitting off any expensive tasks that can be run on separate threads.   Multithread program

Josh

Josh

Moving Right Along...

I'm happily starting out on the CSG editor. The first step is to add a grid in the orthographic view modes so that you have a frame of reference. In Leadwerks Engine, the editor used some callbacks to call OpenGL commands to draw the grid. In the new system, Leadwerks3D, I added some per-camera commands to control the grid spacing, resolution, and colors. (You may safely ignore the mysterious black cube in the center.) This way the editor never has to call OpenGL commands directly, making r

Josh

Josh

Snow Day

The last day of the season was today, so I was at North Star. We had a storm for the last three days, so the snow was pretty good, just sticky in some places. Even though it was a Sunday, crowds were not bad. Towards the end of the day, most people were hanging out at the lodge and the runs were completely empty. All in all, it was a pretty awesome day.

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

How to make a prefab

Step 1. Build the object you want to make into a prefab. Here I have staircase I want to make into a reusable object.   Step 2. Drag all the objects onto one, to make it a parent of the others. Prefabs need one top-level entity.   Step 3. Click on the top-most object in the hierarchy and select the "Save as Prefab" menu item. You'll get a file save dialog so you can choose the file to save.   Step 4. Begin using your prefab by dragging it into the scene from the asset browser

Josh

Josh

Building Deployable Projects

It's quite a challenge to get something semi-deployable to work on four platforms. I never intended to become an expert on the subject, but here are some of the interesting things I have picked up recently.   Code generation mode in Visual Studio By default, Visual Studio builds programs in debug mode that won't run on consumer's machines. Fix it by changing the code generation mode: http://www.leadwerks...grams-cant-run/   Static Libraries in Xcode Xcode has no "exclude from build" opt

Josh

Josh

From concept to final product

I'm working on project creation, management, and publishing right now. This is necessary because it automates some steps that would otherwise be very time-consuming.   When you create a project, you can choose the language and the platforms you want it to run on:   You can switch between projects to reload all assets and change the working directory:   You can export a project into a zip file, give it to someone else, and they can easily import it back from the zip, and have it availa

Josh

Josh

Merry Christmas, and a look at our new headquarters

I hope everyone is having an awesome Christmas week. I'm taking a break from coding to show you our new office we moved into in November at the Sacramento Hacker Lab.   All decked out for Christmas:   Chris is pretending to work, but he's not fooling me:   So we changed the arrangement to make a reverse mullet. (Party in the front, business in the back):   The kitchen provides energy, both in the form of food and alcohol:   The common area:   The room-temperature beer flo

Josh

Josh

30% goal reached in less than 48 hours

I'm writing this as we're a few dollars away from the mythic 30% target that has been claimed to be a "tipping point" past which Kickstarter campaigns reach critical mass. I'm not going to go into any detail about that because I don't want to jinx it, but so far I am blown away by the response. We put this up Sunday in advance of contacting bloggers, so nobody really knew about it the first day. It's Tuesday morning and we're presently at 29%.   I've heard a number of people point out that

Josh

Josh

Marketing begins before you write a line of code

The lean startup methodology posits that life is to short to build a product no one wants. The old way of doing business involved a limited number of companies with very high barriers to entry adopting a "push" strategy. Sears could effectively create demand for a product by choosing what they wanted to feature prominently in their mail-order catalog. Television advertisers could craft a promotional strategy that would reliably result in a certain response. Those days are over, fortunately,

Josh

Josh

Leadwerks 3.3 Beta now available on beta branch

The beta of Leadwerks 3.3 is now available on the beta branch on Steam.   Two new entity classes that extend the model class are present. Sprites are a quad that can face the camera, a specific direction, or can rotate around one axis. These are useful for lighting effects and the axis rotation is great for making laser beams or tracer rounds.   The Lensflare class extends the sprite class and adds a simple glow effect for lighting.   The editor now support shift-drag to select in the ma

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

Dev Blog

Documentation is being organized into a built-in help browser. Documentation simply falls into two categories, "Tutorials" and "Commands". Tutorials are laid out in a linear sequence of lessons divided into subchapters. "Commands" displays the command reference, which remains pretty much the same as it is now, with the exception of additional function syntax declarations for Lua. Search and index will be added, but right now I want to focus on content.   The sequence of tutorials is meant

Josh

Josh

Leadwerks Game Player enters beta

Leadwerks Game Player is now in beta. If you recently posted a game on our site or entered one of the recent game tournaments, you were sent a pre-release Steam key to access the application.     Leadwerks Game Player provides you with a route to self-publish your games to Steam Workshop. Because it is a free application, the entire Steam userbase of 125 million people can access your game. Your Lua game is run in sandboxed mode using an interpreter application we provide, so that Steam

Josh

Josh

Game Launcher and SteamUGC

I'm working to move our Workshop implementation over to the newer SteamUGC API. There were recently some things updated, and that is still being sorted out. I'm also finishing up the game player.   The first incarnation of Leadwerks Game Launcher was pretty utilitarian (and ugly):   I realized this was pretty drab for a product aimed at consumers, so I designed a more outlandish colorful interface that was purely web-based:   This one looks nice, but you can tell it will start to fee

Josh

Josh

Icon Design

I've recruited a professional designer to create a new icon set for the Leadwerks UI. This will provide us with a more consistent visual interface, with a similar look on all supported platforms.   My first instructions were to go bright and multi-colored, with colors similar to Lego pieces. We also included Windows 10 style icons as an influence. These looked good, but when plugged into the program the interface lost its visual consistency.     We next experimented with some grayscale

Josh

Josh

×
×
  • Create New...