New Pixel Formats

I’ve been adding support for some new high dynamic range (HDR) pixel formats to the engine.  I added a 32-bit per-pixel integer format (A32B32G32R32) that can be used with OpenEXR images.  The image processing library in the engine can be used to copy (blt) an image buffer in this format to another format, such as a floating-point pixel format.  I’m also working on some shared-exponent RGBE pixel formats such as E8B8G8R8 and E5B9G9R9.  The engine can already load and save HDR images.  However, there doesn’t seem to be a standard way of encoding and decoding the pixels.  It appears that Microsoft is doing things a little differently than the original implementations of the RGBE format by Greg Ward.  I’ll have to do a little more research.  Also, I want to add support for the new DX10 block compressed pixel formats, but I’ll probably wait until later to finish them.

Posted in Engine Development | Leave a comment

Orion Engine Codecs

I updated all of the external codec (compression/decompression) libraries that are used by the Orion Engine.  This includes: zlib, LibTIFF, libpng and OpenEXR.  I’m glad I updated them.  As it turns out, the old code that I was using had quite a few known security vulnerabilities.

I also created a new container class for creating and managing bit arrays.  It’s very efficient for storing a sequence of Boolean values and/or flag bits.  You can easily set, clear or access the i-th bit in the array.  The bits can be reversed, rotated or shifted.  You can also perform operations such as bitwise inclusive OR, exclusive OR, bitwise AND, one’s complement, etc.

I’ve been finding, and fixing, more bugs again.  The hash map class had a few issues that needed attention.  I hope I have all of the effect system bugs worked out now.  I’m going to try and get back to implementing some cool effects in the game again.

Posted in Engine Development | Leave a comment

Effect Files and Mesh Files

I’ve been working out some bugs that were related to the loading and saving of effect files.  I have to admit, when I was working on the effect system I didn’t do a lot of testing with file saving and loading.  However, I think I have all of the bugs worked out now.  I’ve also been updating the mesh file format.  It’s a lot more flexible, and still very extensible.  All of the new mesh file updates are also supported by the exporter.  For example, I added some basic support to the exporter for exporting patch meshes.  I’ll wait to refine this stuff later.  I have more important things to work out right now.

Posted in Engine Development | Leave a comment

3ds Max Physique Skinning

The exporter can now export skinning information created using the Physique modifier in 3ds Max.  A hierarchy of bones and/or a biped can be used to animate the mesh.  Both rigid vertex and blended rigid vertex types are supported.  The data is being saved and loaded by the engine; however, I’m not finished with the shader that will be used for rendering.  I also need to finish the support in the mesh subsets for the DirectX Shader material data that is now being fully exported by the exporter.

Posted in Engine Development | Comments Off on 3ds Max Physique Skinning

Exporting Effects

I’m just about finished adding “DirectX Shader” material support to my 3ds Max exporter plug-in.  All of the effect parameters that you specify in the rollout will get exported with the subsets of a mesh.  I had to add new features to the Orion Engine SDK to support this.  The new parameter system that I recently added to the mesh file loader can also be used to easily store user-defined parameters with each of the meshes.

I’m taking the top-down approach to finishing the engine’s effect handling.  I plan on finishing the exporter soon.  All of the new mesh data is being saved and loaded.  Next I need to update the core mesh object to support all of the new things that are exported from the exporter.  Once I have that working, then I’m going to start adding some of the new functionality to the game!

I may be slow lately, but everything’s coming together very nicely.  These things have all required a lot of planning and deep thought.

Posted in Engine Development | Leave a comment

Gatekeeper Server Corruption

It’s inevitable, the more computers that you own, the more problems you are going to have!

There were a few power outages recently that took their toll on the Gatekeeper server’s file system.  It wasn’t worth fixing, so I went ahead and installed a fresh copy of Fedora 10 Linux.  I need to get a battery backup for this computer!  Anyway, I luckily had a current backup of all the important data.  Everything is back to normal now.

I want to install Fedora 11 once it’s released.  I think I’m going to install a fresh copy, since I’ve had problems in the past with upgrading.  While I was rebuilding the server this time, I kept better notes on how to do everything again; so that it will be even easier the next time to get the server setup exactly like I want it.

Posted in Hardware | Leave a comment

Tangents, Bitangents and Binormals

I’m still updating the 3ds Max mesh file exporter that I use with the engine.  I already had a feature to export per-vertex diffuse colors, but now I also have a feature to export per-vertex shading and/or illumination colors.  Many shader effects require tangents and binormals to be calculated, i.e. to do normal mapping, a.k.a. bump mapping.  To be more correct, the word”bitangent” should be used in place of “binormal”.  Supposedly the wrong term was used and it just stuck.  Well, since 3ds Max, DirectX and my engine all use the word “binormal”, I’m just going to stick with it.  Anyway, I’m in the process of adding this support to the exporter right now.  It’s going to be cool to use these new features in the game!  It’s been a long time waiting.

Posted in Engine Development | Leave a comment

Custom 3ds Max Exporter

I updated the Orion Engine 3ds Max exporter plug-in to work with 3ds Max 2010 (R12).  There were some changes with how assets are enumerated, i.e. texture files, effect files, etc.  The latest changes were implemented as a conditional compilation, based on which 3ds Max SDK is selected to build against.  In fact, I can now easily build the plug-in for many versions/releases of 3ds Max, all using the same source code tree.  The recent progress that I’ve made with the exporter makes me very pleased.  I added a new screen shot of the exporter running on Windows Vista in 3ds Max 2010 to the Orion Genesis home page.  Now I need to get back to finishing the integration of the new effect system with the material editor in Orion Genesis.  I may be busy during the month of May!

Posted in Engine Development | Leave a comment

Making an MMO on a Shoestring

It sure is hard trying to make an indie MMO (massively multiplayer online) game on a shoestring budget.  I still need to find people interested in helping; like an artist, a tool developer, or a web developer.  If you are interested in helping, then let me know.  Also note that the message forums for Been There are currently open, if anyone would like to chat.

Posted in Game Development | Leave a comment

Primitive Mesh Objects

I need the procedurally generated mesh primitives in the engine to support shader effects.  For example, in the Orion Genesis material editor the basic primitives are used to preview the currently selected effect.  Well, in order to support effects that use texture maps, the primitives need to have at least one set of UV coordinates in each of the vertices.  So I’ve been spending a little time lately adding this support to the engine.  I finished adding UV coordinates to the box shape, and am nearly finished with the sphere.  The problem with the sphere and/or ellipsoid is the texture is being applied backwards.  It looks great; I just have to reverse it.  For some reason, this is easier said then done!  I’ll figure it out; I guess it’s just getting late.

I’m probably going to keep working on Orion Genesis for a little while longer.  There are a few more things that I need to finish.  I added a new screen shot to the Orion Genesis web page that shows a simple lighting effect on the sphere primitive.  The vertex normals generate very smooth shading, and the UV coordinates merge nicely at the poles!

Posted in Engine Development | Leave a comment