FFC fans, please welcome Jason P. Sage as our latest contributor to the Fat Chicks Celebrity Guest Editorial Section. Jason is a hard-working independent developer on the technology and coding side of things. He and I have communicated fairly regularly over the past 12 months, discussing new technologies, the plight and promise of the indie developer, and various other topics.
Jason is also the lead of Jegas, LLC, a hosting and consulting provider offering innovative software, web development, networking, and technical solutions to its clients.
For as long as I can recall, Jason has been talking excitedly about Iron Infantry, a game he’s been developing himself. Recently, though, he’d seemed a bit… down on the subject, frustrated by the technology available to independent developers on a budget. In this article, he reflects on that, and also discusses the salvation he discovered in the form of Leadwerks Game Engine, an affordable third party solution so powerful that we’ll likely see some top-shelf games using it in the very near future. Even if you’re not an indie or an engine expert, you should find something intriguing in Jason’s article, as his tone and style speak volumes of what it’s like to develop from the independent trenches. Jason will be here as Jegas to respond to your comments. I hope you all enjoy the piece, and look forward to additional upcoming Celebrity Guest Editorials in the new year… take it away, Jason!
A Leg Up in Next-Gen Technology
for Indie Game Developers!
Leadwerks Game Engine v.2
Guest editorial by Jason P. Sage
To start, I want to share with all of you just how difficult it is for an independent game developer to make a quality next generation game. Most big title video games like Crysis, Warcraft, and Front Line – Fuel of War all have something in common: resources. Large budgets, teams of programmers, 2D artists, 3D model makers, marketing staff, audio specialists, funding and the list goes on. Most big titles are almost as big a production effort as movies you might see at the cinema. Indie developers do not have these luxuries.
When an indie decides to begin a project of any sort, they must consider many things; from the game design itself to the technologies the game will employ. DirectX 9, DX10, Open GL, audio considerations, music formats, file formats, physics emulation, video cards and shaders are just a few of the technologies an indie needs to at least consider. There are various physics libraries, audio libraries, graphic libraries and even “kits” that are available either free or via paid license that one can choose to employ. Indie developers are often very cautious about this phase of the project, to be certain that the technology they choose can be used by the largest audience possible as well as be around awhile. Often indie developers will use a graphics library or a game engine that can help take out many of the mundane chores associated with graphics manipulation, programming, sound, physics and what have you. Sometime the indie will combine a combination of libraries and make their own mosaic of software to build their game upon. In short it’s not an easy task picking one or more technologies to build a game with.
Game engines are plentiful these days, and they all have their advantages and weaknesses. Often a game engine will be strong in a few areas while missing the mark in others, leaving a lot of extra work for the developer if they want to get the quality they are after. Some game engines simply don’t have what it takes to generate “Next Generation Graphics” while others might have the potential but are laced with bugs or are only compatible with a small subset of popular 3D model file formats. Another extremely important factor to consider when selecting a game engine is the community support on the forums and the documentation that exists for them. Sometimes a strong community can make up for a lack of documentation and even features because the community can in some ways serve as your “team of advisors” which can be invaluable. Likewise, a great game engine that lacks documentation and strong community support might be considered worthless because the indie is left to fend for his- or herself. Support from the game engine authors is definitely a plus but more often than not one may find questions being answered in a tone that suggests you are being annoying even though the documentation isn’t clear.
Now, I personally got started on a Timex Sinclair computer when I was ten years old, and I started using the BASIC programming language and creating text based games not unlike the “Choose Your Own Adventure” child book series. I made my way up through Apple II, Commodore 64 and eventually an 8088 from IBM. Games got me interested in computers and I have always enjoyed game programming as a hobby… but sadly my love for it had cooled off.
Why? Things have grown so complex, one needs to utilize a game engine to give them a leg up if they are to make any sort of quality game that doesn’t take too long to write. Finding right engine is the key. I have personally tried many game engines both free and commercial and they all have – if you’ll forgive the quote from A Knight’s Tale – “been weighed and measured, and found wanting.”
I’ve been creating my own game title called Iron Infantry, nothing new and late breaking, just a fun FPS with the ability to hop in various vehicles and blow things up. I finally stopped development out of pure frustration because the game engine I had been investing all my time in had bugs, was missing features I felt it should have, and so on.
Fortunately, my love of game programming has been rekindled by the Leadwerks Game Engine v2.0. I had heard of the Leadwerks Game Engine when it first came out, and I have a 3D world editor from the same vendor but I wasn’t moved to switch at the time because switching would require starting over. Version 2.0 has been out awhile and I didn’t pay any attention until a forum friend recommended I give it another look and I am very happy he did indeed!
This game engine is capable of graphics not to far off from what is in the game Crysis! Real-time shadows, great sound, various shaders like bloom, depth of field, god-rays (sunlight through trees etc), and so much more! The physics shocked me because the demo applications I’ve seen in times past using the same physics engine were slow and clunky – but I assure you nothing in this game engine is clunky; performance is top notch.
Allow me to explain a little more about what shaders are, how they work and why having them can make the difference between a game looking plain versus looking “Next Gen.” To start with, video card makers have been improving their video cards and one of the advancements we all are benefiting from is cards that have their own mini computers on board help process more graphics information faster than was possible previously. One of the aspects of “Next Generation” games that are quite tricky to implement are the various shaders that newer video cards support. Shaders are actually the video card’s ability to create various effects by manipulating graphics information in the graphics processing unit. These graphics processing units are programmable and to utilize shaders, one writes little applications that run on the graphics processing unit to employ the desired effect(s).
Now it may seem strange, but in most “Next Gen” video games each frame is actually drawn (rendered) multiple times before you see it, and the reason for this is so that the 3D scene can be put together in stages so that various special effects can be applied for a great end result. The mini computer on the graphics card is called the GPU, or Graphics Processing Unit; these allow game developers to write little programs that describe exactly how a special effect should be applied. Effects can be applied to the entire screen, specific 3D objects, specific images and in fact can even be used for tasks not even related to graphics! Sound complex? Well, it can be, but let’s examine the basic theory for a particular effect: Motion blur.
Motion blur is what you see when you wave your hand quickly past your eyes. Cameras with slow shutter usually create this effect when taking pictures of fast-moving objects. In a first person shooter game, a properly applied motion blur can add to the realism and the immersion factor. The human eye takes pictures constantly, and each “frame” sort of lingers for a fraction of a second. So when you wave your hand quickly past your eyes, you actually are seeing your hand’s new position before your brain has stopped looking at where it was a fraction of a second ago. How does one do this with a shader? Well, the game renders a crisp and clear 3D scene in memory called a buffer, then runs the motion blur shader the programmers have created on the frame. It does the same thing with the next frame, putting it in another section of the buffer, then copies and swaps pixels between the two images to create that classic blur effect. Thus a custom-written shader program can modify the game’s output before presenting it to the player, resulting in a more visually realistic game world. If it’s well-written it’s not an annoying effect, only manifesting when fast motion combined with the motion blur shader will result in a blurry image until the user slows down enough to see clearly again.
There are many kinds of “shader programs” in use these days and people are writing new ones all the time in an effort to get the exact desired effect that they may be searching for. Some modify the graphics in areas above fire to give that rising heat blur, other change the colors of pixels on the entire screen to make the game look like you have night vision goggles on. Some shaders are easy to write and some are quite complex. I’m not skilled in shader programming and I usually have to buy shader applications, or use ones that are public domain; however, it’s usually pretty tricky for me to do anything to fancy this way. Additionally, some shaders perform better than others, and writing shaders really is an art in it of it self. I was pleasantly surprised that the Leadwerks Game Engine not only comes with many shaders out of the box, but makes it easy to control them even if you’re not a shader developer and additionally, they are set up in such a way that if you want to edit the shaders or develop your own, you can. This just blew my mind and once more, when I looked at the code that was written to make this possible, I was impressed with how modular, neat and tidy it all is.
The Leadwerks Game Engine, like many others, requires the user to have some computer programming experience in C++, or some other computer language. C++ (pronounced C Plus Plus) is a programming language that allows developers to create rather complex applications such as video games. I don’ t want to spend to much time on this topic but it’s important to note that there are many programming languages out there and all languages allow humans to give a computer instructions so the computer can perform the tasks we want Like various game engines have their pros and cons, so too does each language have good and bad aspects. C++ is one of the most popular, most powerful languages, and it is commonly used in game development. Leadwerks is very C++ friendly, allowing an indie developer like myself to create a variety of programs that communicate very easily with the underlying game engine.
Often when a programmer starts with a package like this, it often takes quite a bit of research to start making even small applications that do something interesting. I have to tell you, within an hour of opening Microsoft Visual Studio C++ I had bumpmapped cubes falling from the sky, bouncing with realtime shadows, and honestly, most of the that time was me fighting a programming issue that was my own fault! This showed me just how fun and powerful this engine really is. Anyone can make their software look good in a demo, but when some computer programmer can come along, tinker, and get great results in an hour, that says something!
The community for the Leadwerks Game Engine is also strong. I’ve been on there a short time now and every question I’ve asked has been responded to quickly. Additionally, they are a great group of developers, both professional and enthusiast, who share the same love of game making and it’s a joy to be able to go there and discuss the various aspects of game development there. What’s more, the CEO/author of Leadwerks participates frequently in the forums and he does not answer technical questions like you are intruding on his time.
The Leadwerks Game engine is not a “Game in a Box.” A great game engine does not eliminate the enormous amount of work that goes into creating a game. Do not think that within a month of using it you’ll create the next big title video game. Game engines give you a reasonable starting point and a foundation to build your game upon; they do not create the game for you. There are software packages that fit into this “Game in a Box” classification, but Leadwerks is not one of them. Making a video game is a very time consuming and labor intensive affair that usually will not make you a millionaire… but it’s very fun, exciting, rewarding, and a beautiful way to express artistic freedom.
My advice for any inspiring indie developers is to research what is out there. Experiment first with the level editors and mod tools that ship with nearly every big commercial game these days. Try some of those “Game in Box” kits, look at what computer programming is all about, 3D modeling, and of course check out the various game engines out there and dig in. Truly get a feel for what is required to create your vision. Just make sure you don’t overlook the Leadwerks Game Engine as an option because let me tell you – it has what it takes!
Any game engine that can totally rekindle the love and enthusiasm of this 27+ year game programming veteran deserves a serious look over. Check it out! I promise you won’t find the combination of price and performance disappointing.