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

About this blog

Learn about game development technology

Entries in this blog

Cone Step Tracing

Now that we have our voxel light data in a 3D texture we can generate mipmaps and perform cone step tracing. The basic idea is to cast a ray out from each side of each voxel and use a lower-resolution mipmap for each ray step. We start with mipmap 1 at a distance that is 1.5 texels away from the position we are testing, and then double the distance with each steo of the ray. Because we are using linear filtering we don't have to make the sample coordinates line up exactly to a texel center, and

Josh

Josh

The Zone video (take 1)

I recorded some clips from Dave's latest version of his scene he is working on. Somehow he managed to get more detail and faster speed. The octree optimizations in version 2.32 help a lot here. The renderer is really good at dealing with lots of small objects strewn across a scene, even if it did take some trouble before we got it working completely right. So here's a short video we'll be using to showcase the capabilities of Leadwerks Engine:   Please share this on Facebook, Twitter, YouT

Josh

Josh

Week 2

What an interesting first week. I compiled a C++ program for Android, made a programming language, learned about iPhone development, and figured out a lot of C++ stuff I did not know.   It's nice to see that a port to Android will work pretty much like I was hoping. I just write an abstract driver for every system, and have specific drivers that extends that class: class GraphicsDriver {} class GL4GraphicsDriver : public GraphicsDriver {}   Then when you have something like a surface tha

Josh

Josh

iWerks

When I saw specs for the graphics card they are using in the new iMacs, I knew it was time for Leadwerks to come to Mac. Steam for Mac also recently came out, so the time seems right for Mac gaming. Of course, some guy blew up the Roseville Galleria, so the Apple store was closed. I ordered the 27" iMac with a 3.2 ghz dual core processor and upgraded the graphics card to an ATI 5750. Here's what they sent me: The computer case/monitor (it's all one piece) is a solid piece of aluminum that

Josh

Josh

Multiplatform Madness

So after a lot of learning and mistakes, I finally have Leadwerks Engine 3 running on OSX Snow Leapord, Lion, and iOS. Rather than write out a detailed blog, I'll just throw a lot of random thoughts your way:   -OpenGLES2 is a nice blend of OpenGL 2 and OpenGL 3.3. I'm really surprised my OpenGL 3 shaders translate easily into OpenGLES2 shader code, with only a few changes. In fact, the iOS renderer looks exactly like the deferred OpenGL 3 renderer, except for shadows and some post-effects.

Josh

Josh

"Finding" a "Path"...Get it? Wait a minute...

So after about three weeks of pain and frustration, I have successfully calculated my first path using Recast navigation. This has been a new experience for me. I've implemented half a dozen low-level C++ libraries, and never had any serious trouble, but Recast Navigation is something else.   The technology underlying Recast is impressive. First they take triangle geometry, convert it to voxels, then calculate navigation, and convert it back into rough polygons. You can read about the proc

Josh

Josh

Another Design Puzzle

I have the basis of CSG editing written into the engine. It was a bit challenging to figure out just how to structure the Brush class. We have a lightweight ConvexHull entity, which is used for the camera frustum. This is an invisible volume that changes frequently, and is used to test whether objects intersect the camera's field of view. I didn't want to bloat this class with a lot of renderable surfaces, texture coordinates, vertex normals, etc. I initially thought I would derive the Brus

Josh

Josh

Gameplay!

The Leadwerks community project "Midnight Salsa" was one of my favorite things that came out of Leadwerks 2. Watching the videos of everyone collaborating across the globe was really interesting, and with Aggror's leadership they did pull off what they set out to do: Make a playable zombie FPS. However, there were some weak points that showed me where I could put effort and have it be the most useful.   When you go through the first set of doors, a carefully placed light above the door shin

Josh

Josh

Refocusing on the PC

Back when Leadwerks 2 was first launched, it was just a BlitzMax programming SDK, intended to be a modern replacement for Blitz3D. It turned out Blitz users generally did not want it, and instead the audience it attracted was C++ programmers who like graphics. A visual editor was introduced and it was made as good as possible for a product that started with the intention of just being a programming SDK.   Leadwerks 3.0 was launched with a strong emphasis on the tools that Leadwerks 2 lacked,

Josh

Josh

Selective file inclusion (continued)

Based on a little observation, I've made the following changes to the publish routine on the beta branch: The FPS Player script has been updated so that the footstep sound files are explicitly named, so they don't get missed in the publish step. You will need to update your project to get the new script (or just copy FPSPlayer.lua to your project). There is now a checkbox to "Only include used files". If this is checked, then the new packing routine will be used, otherwise the old beha

Josh

Josh

What's Next

Here's what's next for Leadwerks Game Engine.   Game Launcher Leadwerks Game Launcher will be released in early preview mode when 50 games are reached. Right now we have 13. Filling the content up is a high priority, and the Summer Game Tournament will bring us closer to that goal.   I am mentioning this first because I want to emphasize that the number of games posted is my measure of how well I'm doing. Every action should be considered in terms of how it helps you guys publish more ga

Josh

Josh

Beta update: Submitting curated Workshop items

An update is available on the beta branch with the following changes: Implemented "CollisionMesh"-named limbs in models. Added "Strip vertex colors" option in model editor. Workshop items can now be submitted as free or curated paid items, although no mechanism is in place yet to actually purchase items.     Curated items appear in the Workshop and can be voted for, but cannot be downloaded.     You can enter your bank information for receiving payments, and you can even c

Josh

Josh

Fun with JSON

I realized there are two main ways a plugin is going to be written, either as a Lua script or as a DLL. So I started experimenting with making a JSON file that holds the plugin info and tells the engine where to load it from: { "plugin": { "title": "Game Analytics", "description": "Add analytics to your game. Visit www.gameanalytics.com to create your free account.", "author": "© Leadwerks Software. All Rights Reserved.", "url": "https://www.turboengine.co

Josh

Josh

VXRT Progress

This is an update on my progress of our voxel raytracing system. VXRT is designed to provide all the reflection information that PBR materials use. If a picture is worth a thousand words, then this counts as a 5000 word article. Direct lighting: Global illumination: Specular reflection: Skybox component: Final combined image:

Josh

Josh in Articles

Future Ideas

Here are some of my thoughts on how a future engine might look. I am not devoting any time to this, and it would not come to exist for several years, but it's fun to think about technology and design:   I've been fascinated with the game "Fuel". This game has an enormous playable area that is streamed from the hard drive. You can drive for hours and barely cover a fraction of the map. For some reason the game has been given bad reviews. I played Motorstorm on the PS3, and I think Fuel is a lot

Josh

Josh

Textures in Leadwerks Engine 3

Textures in LE3 give you more control. You can retrieve all or part of any mipmap of a texture to system memory, edit the texture, then send it back to the GPU. Fortunately, the engine checks the bounds of the texture so you don't have to worry about producing any blue screens of death, as can happen when you're having too much fun with GPU memory.   Here's some simple code to retrieve the texture from video memory into a system memory bank, modify it, and send it back to the graphics card:

Josh

Josh

The Amazing Draggable Checkable Multiselectable Multidimensional TreeView with Icons

Last week I compiled the engine into a DLL and a static lib. That was pretty painless, and I have the project set up so it's easy to switch back and forth. I still haven't got Code::Blocks compiling right, which I will need for the Linux build. It can't seem to find any libs, but it's not too important yet.   After altering the behavior of the MaxGUI canvas slightly, I was able to load the engine DLL in BlitzMax and display 3D rendering on a windowed application. It's very easy to do this

Josh

Josh

Ubuntu is probably the future of PC gaming

Here's something I've been thinking about. What do you think?   Apple Locking down OSX. No optical drive. The Mac software shelf at Fry's is now obsolete. Mac App Store. Gatekeeper only allows "signed" applications, by default. [*]Miniaturization of computer hardware, at the cost of graphical performance. [*]Move to non-upgradable hardware (glued-in memory). [*]Moving away from file system access (iCloud). [*]Hardware is expensive, and will always be a luxury item.   W

Josh

Josh

Happy New Year

Today I added the visible guides in the editor for point and spot lights. I also tested out the new FBX converter, recompiled with the 2012 FBX SDK. It works. (There are no file format changes in the 2013 FBX SDK, so this will load everything.) Our character models still have to be rescaled, so I added a resize option in the model editor. That way models can be resized and the model file saved, so you don't have to rescale a model every single time you place it in the editor. Having models

Josh

Josh

Character Sketches

The first step to building a character model is to establish the concept. Here are the images I have received. I have my favorite in mind, but what do you think? The purpose of this character is to serve as an enemy for a wide range of games. It could also be used as a main character with a third-person camera.   Which one do you like best?  

Josh

Josh

Legos and Game Artwork

I recently had a strange interest in looking at Lego sets online and watching reviews. There was something about them that I felt like related to game development and level design. Something very interesting I noticed was that each set would include several extra elements that formed a story line. This added "play potential" to the set. For example, the raft below includes three pirates loaded with weapons, one who is obviously the leader, a treasure map, so the crew has an objective, and a

Josh

Josh

Art

Three things I am working on right now: We need a high quality default skybox. I'm pretty happy with the results I got, after a lot of experimentation and different programs. This will be a whole huge blog post itself. Commissioning development of one high-end character model. I'm going with a fairly expensive option this time. My goal is to just get ONE character I am happy with, with the idea that if we can do it once we can do it again. More on this later. Investigating a better

Josh

Josh

Scripted Behavior

The stock scripts that come with Leadwerks form a continually expanding game framework that can be used in many different ways. The reuse we get out of the door, switch, trigger, and AI scripts is really great. Every time I add a new script I can count on it being used in many different ways.   Sometimes this requires a custom model in order to develop and demonstrate usage of the script. It's best for me to have one model made exactly to my specs, and then make everything else conform to t

Josh

Josh

GUI Design

Just thinking out loud here, and I am considering designing the GUI like this:   The GUI class handles events, window clipping, widget layout, etc. Rather than having a bunch of C++ classes that extend a base Widget class, there would just be the Widget class with a Lua script attached to it. The Lua script would handle all events and drawing, so it would determine what kind of widget the C++ object is. For example, here's a script for a simple button:   function Script:Draw(x,y,width,h

Josh

Josh

4.2 Beta

An early build of Leadwerks Game Engine 4.2 beta is available on the beta branch on Steam. This release will update the engine with the latest C++ tools and add new graphics and other features. Visual Studio 2017 support Compatible with the latest C++11 / GCC on Linux Refraction: apply "Materials\Effects\glass.mat" onto any object to see this in action. Heat haze: drag the heat haze emitter prefab into the scene to view ("Prefabs\Effects\heathaze.pfb"). Spotlight texture: you can

Josh

Josh

×
×
  • Create New...