Wednesday, October 26, 2011

First Feature Demo

This is my second engine demo and involves me walking around in the environment and showing off some of the features. More to come! The video is best viewed at 720p. Once you've started it, you can switch to 720p using the button in the lower right corner (under the You in YouTube).

NOTE: Video is no longer available.

Here is a quick summary of the features shown:

  • High-Detail Textures
  • Bump/Spec/Emissive Shaders
  • Post Effect Transitions
  • Dynamic Planar Reflections
  • Dynamic Spherical Reflections
  • Static Lights With Shadow Maps
  • Video Textures
  • Level Of Detail Models
  • Depth Of Field

Monday, October 24, 2011

World Debut!

Here it is - my first public unveiling of the project I've been working on for two years. This first video is a quick fly-around in a small, but fairly detailed, home environment that I built to show off my engine's basic rendering features. A bit of drama is supplied by an old film trailer I downloaded from The video is best viewed at 720p. Once you've started it, you can switch to 720p using the button in the lower right corner (under the You in YouTube).

NOTE: Video is no longer available.

The rendering engine is written in OpenGL and works only in a Windows environment, but it should be pretty easily recompiled for Linux and OS X. Support for shaders is almost complete, but needs an additional control layer to make setting them up simpler. There is a system in place for fall backs on hardware that doesn't support shaders and it's about half done. I can render to multiple windows and to textures and there is a pretty nice lighting system with real-time shadows.

I am missing two important engine components. One is interior space culling and I intend to write a portal system to fill that gap. Having written one before in Blitz Basic, I am confident that I can pull that off in less than six weeks. The other is a physics system. I do have collisions working and that is enough to pull off some basic simulations. That will do for now, but I have also found a freebie Newton physics module that, with a bit of tinkering, will provide more robust functionality. Eventually, I'd like to do a complete port of the Bullet physics library.

The Status Quotient

Now seems a good time to sum up what I currently have and what else needs to be done before I will consider approaching investors. Just a warning - the next few entries in the blog will be fairly technical and assume some knowledge of 3d game engines. They will briefly describe my progress in the following categories:

  • Rendering
  • Animation
  • User Interface
  • Script Language

With each entry, I intend to attach videos and/or images that demonstrate specific features. I cannot emphasize enough the importance of showing practical content, rather than running down the features using cubes, spheres, and tori (as fond as I am of donuts!). It is absolutely critical that I have high quality artwork to show and that will be my focus for the next couple of months.

Thursday, June 9, 2011

The Whys And Wherefores

Here are a few common questions. Perhaps once I've posted examples and started getting feedback, I'll roll these into an official FAQ.

"Why create an engine from scratch when there are so many out there to choose from?"

Indeed, 3d engines are very common now and some are even free to use. However, I spent some time researching and found few that are inexpensive, cross-platform, and offer a wide enough range of features. The remaining ones required use of C++ and had a fairly steep learning curve. Because I'm doing all of this on my own at the moment, it is essential that I'm able to develop at a rapid pace. I can't afford to spend days at a time spinning my wheels.

It is also fair to say that I simply wanted to do it. It really has been fun delving into the many aspects of 3d engine design and I've learned so much along the way. I am comforted by the thought that I will be able to add in whatever features are needed to complete future projects and that I won't have to rely on workarounds. Down the road, I think I'll be glad for the time I spent on this even in the unlikely event that I switch to something else.  I'm developing a multimedia platform - the engine is secondary.

"What programming language are you using and why?"

My programming language of choice is BlitzMax because I found it to be the fastest out of the gate, but I will probably end up porting to another language. I will eventually need to pass the baton to other programmers while I manage other aspects of the project and I'll have a lot more hiring options if I switch to a more common language. Also, porting to another language gives me the benefit of compiling to platforms such as mobile phones and pads.

"Why not just use Adobe AIR and Flash?"

For those unaware, there is a pretty powerful multimedia development environment already available called Adobe AIR. It makes use of the popular Flash platform, which has had great market penetration and is therefore almost universally available (except on Apple hardware). AIR appears to be a solid product, but not aimed squarely at the market I have in mind. Its support for 3d is still pretty rudimentary and although I think that will change, I'd prefer to start with a clean slate and see what my many years of game development experience brings to the table. In time, it is quite possible that I will add a Flash export feature to my tool set.

Friday, June 3, 2011

Martian Mission

I've been fascinated by the progression of computer technology over the past fifteen years. The internet's swift impact on our culture surprised even a geek like me. Social networks and games are incredibly popular and seem to be growing endlessly. The technology is constantly being pushed to deliver more and more complex content across a variety of platforms.

For some time, I have thought that this emerging technology could be used very effectively to teach. It is a powerful means to present interactive media that engages students and, if part of a curriculum, tracks their progress and even customizes itself according to their individual needs. If the content was compelling and easy to use, it would encourage participation and make learning fun!

Of course, I realize this is not exactly a new concept. I'm old enough to remember the whole "edutainment" craze of the early nineties. Nowadays, the market is pretty small but I believe this will change if the medium is exploited to its full potential. My mission is to make the assembly of sophisticated multimedia software as easy as surfing the internet.

I am currently in the process of creating a 3d graphics engine and tool set suitable for use in the making of educational programs, games, architectural walk-throughs, and any other type of interactive software in which a virtual space is useful. In the event that the educational market cannot sustain the business, the tool set will be flexible enough to be turned to other purposes and sources of revenue.

The educational software business is saturated with products aimed at children under the age of ten. There are few available for young adults and college students and those tend to be in typical textbook-style formats. In this age of instant gratification and short attention spans, I believe that there is a need for software that targets that mentality. Having more options in terms of presentation and interactivity will help diversify the available titles and open up great potential for more innovative and effective teaching techniques.

One last thing I'd like to communicate is that my mission is not to replace teachers with computer technology. My hope is that I can bring people of various disciplines together. Teachers, designers, artists, programmers, etc. will all need to be involved in creating the next generation of software for learning.

Wednesday, June 1, 2011

Hello world.

My name is Lance Thornblad and I am a game development addict. Now that I have admitted I have a problem, I can get on with blogging about it! I'll start with a little background information.

I've always been a bit geeky and proud of it. I bought my first computer, an Amiga 500, when I was in high school. It was the only computer available at the time that was within reach of my modest budget and could display decent animation. I spent many hours playing games and mocking up little graphics demos and enjoyed myself immensely. Back then, I thought I wanted to be an astrophysicist (uh huh) and this computer stuff was just a fun pastime, but an ad in the newspaper changed my mind and the course of my life.

The advertisement was for graphic artists and it led to my first job in the computer game industry making graphics for Nintendo and SNES and Amiga and PC games. It was a great learning experience and I discovered that I have a natural talent for technical work. I've since spent most of the last twenty years improving and adding to my skill set. My game art gigs have given me a chance to do a little of everything. From concept to 3d modeling and animation to scripting and art pipeline development, I've worn many hats! Along the way, I've always maintained an interest in programming and have managed to tinker a bit in my spare time.

About a year and a half ago, I left my excellent job of almost ten years (at Sony) to pursue an old dream of mine. The purpose of this blog is to talk about that dream and what I'm doing about it!

Disclaimer: This blog is just me thinking out loud. It is not meant as an official forum for any products that I may offer in the future.