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.
Needless to say, I’ve decided to resume my Iron Infantry project with vigor!
You can visit Jason’s personal site here, and the Leadwerks site here.
Hm you got me a little interested in leadwerks. I think i will check it out this afternoon! And i am really glad you resumed your work on Iron Infantry, i had been looking forward to testing it since you told me about it. Great article. Good luck.
Worth every cent, nice to also see a company not so greedy for money, thanks Leadwerks.
Not like these other softwares for thousands of dollars.(Rediculous)
Even if other companies sold there software for less they would probably be making the same profit, cause more people would probably buy.
Thanks Jason,
As a software developer who also started programming on the Sinclair back in the day, I’ve always been interested in working on games, but I’ve never been able to convince myself that the intense effort to create something that potentially would only have a shelf life of six months would would be worth it. So I’ve drifted into a career that pays the bills but doesn’t do much for motivation or creative expression.
And now Jason comes along with an article about how easy it is… In one of the Leadwerk’s developer blogs the author mentions (in big font so no one can miss it) that there has never been a better time to be an independent game developer. Ripping away the comfortable veneer of professional atrophy like a Segway plunging through the manky film on a murky pool right in this most introspective of seasons.
Thanks a lot.
Seriously though. That framework does look pretty comprehensive. How did you manage to put the time in (or how to plan to put the time in) to get something really polished in your project? Are your plans for your game one of commercial sale, pitch to a traditional developer, or independent sale doing your own publishing and distribution?
I would guess one serious downside to having the technical challenges mostly solved is that the remaining tasks involve modeling, artwork, sound, animation, and other types of jobs that are usually far off the map for technical types. How are you finding this aspect of the development?
I hadn’t kept up with GPU advances since playing with OpenGL in the late 90’s, I find it interesting that the knowledge required to build advanced graphics engines has almost become a commodity, rather than the province of a handful of industry gurus.
Thanks, a very informative site here, i will definately be back.
cheers
I wanted to respond to Helmut, who posted above, and say that I don’t have set in stone plans on making a perfected project but I make time for trying in between work and family life. Now this doesn’t leave a whole lot of time for development but what time I do have I usually get some enjoyment from.
When I wanted to hunker down and learn C++, game development made learning it more fun and the reward was much more appealing then a simple linked list I could display on a console screen.
Additionally, I think its great that you’ve been “reintroduced” to something that might turn into some fun for you as well.
I wrote something in a forum once that was quoted later – and I’ll paraphrase part of the sentiment here with some context substitutions:
Game Development itself is better than playing any game. A game you can complete or master while game development is a journey. Once you master a level of game development skills, you’ve completed that level and are ready to move on to the next. It never ends and only gets more challenging and rewarding as you go.
Happy Coding – Modelling – etc.
–Jason
Hi. Good site.
I don’t know some moments of this topic..
Wonderful, but usual =)
Hello, I can’t understand how to add your blog ( fourfatchicks.com ) in my rss reader
Hereforesnoto,
Does this mean that the giant orange “Subscribe to Feed” button in the upper right isn’t working? We’re still working out various technical issues with the site, so it’s entirely possible.