Latest Entries »

POSSCON 2011

POSSCON 2011 ended on friday, March 25th, and it was one of those experiences that I wish didn’t have to end.  This was amazing from the start, and while the attendance seemed to drop on the third day quite a bit, overall it seemed to be a big hit, with a great amount of people present.  Todd Lewis, Aaron Griswold, Jennifer Suber, and Matt Hudson did a wonderful job of making me, and my wife Courtney feel very welcome and well, wanted, for lack of a better term.  Open source gaming was a new topic for POSSCON, and it seemed to go over extremely well with the (mostly) young crowd.  My booth was constantly surrounded by people during the breaks between speeches, and I got an opportunity to talk to a wide variety of people about Alien Arena, as well as open source gaming in general.  I was told that the goal for this year’s attendance was 500 registrants, and indeed on the second day, the goal was met.  I hope that having gaming as a part of this contributed to meeting that goal.

I think one of the most rewarding aspects was being able to introduce open source gaming to so many young, bright minds.  A lot of people had no idea that a game could even be open source, much less be of decent quality.  It was awesome to see so many people interested in this, and interested in Alien Arena.  Some people were looking for paying jobs, some were looking to contribute voluntarily, and others just wanted to learn, or sit down and play a few rounds of good old fashioned deathmatch.  I made sure to tell everyone my schedule for speaking.  I think I did a good job of selling it, considering that the room I spoke in had 320 seats, and it was well more than half full, despite three other speeches going on in other rooms at the same time.  According to the organizers, my session had the best attendance during that time.

I have never in my life given a public speech, so the fact that I was giving two was a little bit daunting.  I spent a lot of time preparing them both, as well as constantly practicing, especially my speech on open source gaming in general.  Things didn’t start out smoothly though.  There was a problem with the video output on my laptop, though we quickly fixed it(the connector was not mating well).  Worse yet, my power supply’s cord suddenly began sizzling and smoking(short in the recepticle apparently).  Luckily my laptop didn’t fry, but it did throw me off a bit at first, as I was a bit shakey to begin.  I quickly settled down and was able to deliver the speech as intended, without screwing it up too much.  The only snafu was I did leave out a couple of points that I really wanted to discuss, but otherwise it went fairly well, and I did get a number of positive comments.  I think if I am invited back next year(which it appears I will be), I can vastly improve on some things, as well as making the subject matter a little more interesting for everyone. 

The second speech was actually a workshop, and this was on day three, so the attendence was vastly lower.  I was a bit disappointed that some of the USC and HS students that had said they wanted to be there were not, but there were some that did make it and said they really enjoyed it.  I began with a discussion on some of the very general concepts and basics of using blender to create and animate a game character, then broke down how it was rendered in the game.  I went through a variety of code, from the model loading to all of the rendering, as well as shadows, among other things.  I didn’t really have this one as static as the general speech, it was a lot more interactive.  My wife suggested next time using slides instead of scrolling through code, and she is right.  I also had issues with the code being legible, due to the output on the projecter being too blurry, as well as dark on screenshots.  When I finished up with most of it, the rest of the session became mostly question/answer, as well as demonstrations of the various game modes, which was actually quite fun.  I think that a good amount of people got a lot out of this session. 

As for the vendors, I talked to a number of them, I was really impressed with the greenscreen tech from the IT-Ology guys in the booth next to us, as well as the amazing 3D printing of the “Thing-o-matic”.  It appeared to me that our three booths got the most traffic overall.  I didn’t get to see much of the other speakers in action, but I did get to talk/socialize with them.  There were some pretty big names there, such as William “whurley” Hurley, John “Maddog” Hall, and some people at important positions at IBM, HP and others.  It was very impressive, and englightening to actually talk to them.

The after hour events, as well as the lunches were extremely well done.  I’ve been to some major conventions like this before, and this includes AutoDesk’s, and this was far more organized and well planned, and to be honest, a heck of a lot more fun.  Maybe it’s the southern hospitality, I don’t know, but everyone was so extremely friendly and really went out of their way to make us feel welcome.  By the way, the city of Columbia is a very fun, hip place, and apparently becoming one of those notable tech “hot spots”.  They have this mall area, filled with bars, clubs, and restaurants that was very fun each night we were there.

It was a great experience, and I truly hope to be a part of it in the future.  As I mentioned in my speech, gaming is the largest entertainment industry in the world now, and open source has a great chance to be a growing part of it.  I’m seeing the gap closing between open source and commercial games, and while there is still a ways to go, it’s clearly having an influence on what commercial game companies are doing, and thinking.  POSSCON has grown each year, and seems to be making big improvements with each convention, I have no doubt that gaming should be a part of it, and maybe even expanded upon in the future.

Random thoughts…

The next release of Alien Arena(7.51) is right around the corner.  The big news for this release is the dramatic increases in performance due to some major optimizations.  The numbers are simply astounding, and make the CRX engine one of the faster rendering idtech-based open sourced engines.  This has always been a major goal, sometimes the solutions aren’t as easy as some people would believe, and other times they are.  We also added a bit of new content, some new fx, and a few bug fixes.  We still haven’t finished the new GUI, but that is coming eventually. 

I will be speaking at this years Palmetto Open Source Conference in March(www.posscon.org), as well as having a booth for Alien Arena there.  I will have one breakout session for 45 minutes on some general open source gaming discussion, and Alien Arena, as well as a two hour workshop in which I will go into detail on how a character is created and rendered in our engine.  I am very flattered for being invited to this, and very excited as well.

A few months ago I wrote about the release of Xonotic(and it’s bad timing), and I was genuine when I mentioned that I thought it showed a lot of promise.  Since then, things have gone rapidly downhill for this game.  The biggest issue is the major amount of infighting among the community and developers.  Xonotic has a feature which allows for the balance of the game to be determined by a config file.  This is an absolutely horrible concept to begin with, as players may not know how the the game plays from server to server, not to mention that getting people to agree on what should be the “default” is near impossible.  It doesn’t help that the game is barely playable either, due to some big time performance issues with the Darkplaces engine.  Part of this is due to the over the top polycount of the player models, but there is definitely something wrong when your framerates drop from 150+ to 40 or lower when a few players come into view.  There are some wonderful aspects of this game, such as the new weapon models that are in progress, some of the new maps, and the visual/aural appeal, it’s a shame this game seems mired in turmoil.

The trend of gamers flocking to slow paced, military themed shooters seems to be neverending.  I just saw over 4000 players on Urban Terror servers!  Despite all of the popular “backlash” about them, it seems people are playing them more than ever.  That said, I would never change Alien Arena to be slower, or military themed.  Popularity isn’t a prime objective for me, producing a game that I, and people like me enjoy is.  On a similar note, I really get annoyed seeing the phrase “fast paced shooter” used for every quake based deathmatch game.  Some how it seems that for many, movement became vastly more paramount than aim, and some of these games have increased movement to the point where players are just flying around not hitting/getting hit by anything.  Maybe that’s the appeal of these “race modes” that a few of Alien Arena’s competitors have adopted.  That’s one mode I’ll never understand the appeal of, and it will never find it’s way to Alien Arena.

It seems to me that open source engines are really starting to close the gap on the commercial ones.  Part of this is due to the nature of open source where information is shared, and you wind up with an accellerated curve of development, but another reason is that game engine tech advancement is really starting to slow down.  Remember the 90’s, when you saw the rapid progression from 2d, to the faked 3D of Wolfenstein, then Doom I/II, then Decent and Quake with true 3D, and eventually Quake using OpenGL?  There seemed to be a slight lull in the latter part of the decade, but by the middle 2000’s, we saw dramatic rendering improvements with lighting and shadows, as well as performance.  Now, it’s really kind of slowed down.  Cryengine, IdTech5, UT3.5, they haven’t really made these huge strides, and open source engines are catching up to them in terms of the raw tech.  Don’t think Id hasn’t taken notice, as it appears that they will be making the Tech5 source available immediately after the release of Rage.  Wonder why that might be?

I have many ideas for Alien Arena going forward.  There are certainly some rendering techs that I am exploring such as global dynamic illumination, refraction, steep parallax mapping(with self shadowing), and making things even faster.  I’m also going to get back into a “content mode”(that’s not content as in pleased, but as in game media), and start producing some new maps and updating some more models.  I think I’m gonna start with the megahealth model first, and then possibly do some new models for TCA mode.  I think TCA mode could use some updating anyway, it’s a great concept, it just needs some new, better maps and models for it, and some tweaks that will make it very exciting.  I am also going to do a CTF/TCA version of dm-violator2k11, which I think is maybe my best work to date. 

Speaking of Dm-violator2k11, this is the third time I have created this map.  Originally this was known as dm-probe, originally released in the summer of 2005.  The layout was a fan favorite, despite it being exceptionally dark and hard to see.  In the summer of 2006 it was rebuilt from scratch, and became possibly the most popular map in the game.  It’s style truly reflected the direction we were going in back then, with the cleaner, techy look, a nice departure from the grungy, rust look of before.  I always loved, loved, loved the layout of this map, with the big central, two tiered room, and the looping, intertwining pathways that circled around it.  It made for some dynamic, exciting gamplay.  So for the 2011 version, I once again started from scratch, but keeping the layout concept intact.  This time around things are a little more confined and smaller, but vastly more detailed.  The result is a map that flows like no other in the game, and quite possibly is the most beautiful in appearance. 

Speaking of trends once again…it seems very fashionable these days to bash id Software.  Well this isn’t exactly something new, it’s really been going on since they reached their pinnacle in the late 90’s.  I’ve seen more ridiculous criticism of the upcoming game “Rage” than I care to mention, but let’s suffice it to say that this game isn’t even released and the jackals(meaning 12-15 year old know it alls) are ready to pounce and tear it apart.  Let’s get something straight here – I’ve seen the screens and videos, and the renderer is as good as it gets(yes, better than the latest Cryengine, IMO), and the gameplay looks positively badass.  They really haven’t shown enough to make a judgement too strong one way or the other, so the bashing is a bit over the top.  I feel bad for id Software(well as bad as one can feel for multi-millionaires), they have done more for FPS gaming than any company in history, yet they can seem to do no right in the eyes of cynical fans anymore.  It’s pathetic to me how jaded gamers have become.  Give the game a chance, it may very well suck, but if you go into it with a pre-conceived notion that it’s going to, well, it’s never going to measure up.

The hypocritical critic…

Over the years an interesting thing I have noticed about Alien Arena is that our fanbase has been accused of being this rabid, foaming at the mouth bunch of lunatics who will shout down anyone who dares criticize the game in any manor.  Much of this perception began between the years of 2006 and 2008, when the game was beginning to get a bit of popularity and critical notice.  The truth was that we actually did get a number of tremendously good reviews at the time, but apparently this did not sit well with some of the denizens of the gaming netherworld.  It never failed that if a favorable online review was posted, the inevitable backlash would occur in the comments section.  Often these would be followed with “play this instead” type of comments.  These would lead to people, both from our community and elsewhere arriving to defend the game.  Was this because the game wasn’t really as good as the reviewers suggested?  Was it sour grapes from competing games?  I’m sure it was a bit of both.

Criticism can take many forms, some of it can certainly be legitimate, and the notion that I, or anyone else involved with COR Entertainment dismisses all criticism is absolutely ludicrous.  We have always listened to the critics, and even in cases where it stung, we didn’t simply write it off as someone being a “hater”.  Everything was, and continues to be taken in, evaluated, and applied to improving the game.  However, when a critic starts making false claims, or ridiculous ones, you also have to consider the intellectual honesty of that person.  There are many people who tend to have agendas when bashing a game.  Most people simply don’t care enough to write a lengthy, harshly critical review if they do not like a game.  When you find a two page article that trashes nearly every aspect of your game, and at the same time mentions competing games as being excellent, you have to wonder if this writer may have had an agenda. 

Alien Arena has it’s share of detractors.  Some of them legitimately do not like the game, and that is perfectly fine by me.  Let the record officially state this(note – I have said this many times over the years when being told that I, or the community could not handle criticism of the game).  No game is going to please everyone, and Alien Arena is not perfect(let the record also state that I do not believe the game is perfect!).  I don’t mind criticism, and as I’ve said, it is something that helps fuel development, something that we used to improve every aspect of the game over the years.  Early on, when people stated that the levels were not complex enough, or too dark, we made brighter levels with more intricate designs.  When people stated the graphics looked like “Doom I”(which was a bit silly), we used that to energize us in modernizing the engine.  When people made complaints about the controls or movement, we took steps to improve it.  Poor frame rates?  We spent countless hours optimizing the engine to bring it to the point to where it’s one of the smoothest, fastest rendering open sourced engines in existence.  The point is, we always *did* listen, and to say we didn’t, or that we “shouted the critics down” is quite hypocritical on their part.  For people that are accusing us of not being able to take criticism because we don’t agree with their assessments, it seems to me that those people are every bit as guilty of the very thing they accuse us of.  In that regards, opinions are like art, they are just as open to be criticised as anything else.

I recently found a “review” on Gamespot of Alien Arena from 2008 that began with a very defensive posture, making the claims that I have discussed above about the community, and the reviewer went on to harshly critique the game.  It was clear from his lengthy review that he had some emotional investment in Alien Arena, and that he felt “persecuted” for having his contrary opinion as to the quality of the game.  He clearly either interacted with myself or the community at some point and time, and left with an unfavorable taste in his mind.  His article was actually quite well written and thought out, and despite a clear agenda, made some valid points in his critique.  However, he also seemed to contradict himself quite a bit, first claiming that his dislike of the game was mostly a matter of personal taste(that it bored him, etc), but followed it with a litany of “fundamental” things wrong with the game, community, and myself.  He would occasionally offer up mild praise, but always following it with a “but this is why the game is truly awful” type of dialog.

The defensiveness of the review was quite curious.  I have seen such things before, where critics feel “persecuted”, particularly after after writing a review that was quite close to launching an attack on a game and community.  Like I said, there is clear emotional investment involved.  At the end, the critic was convinced that he would receive a number of negative comments about his review from the community.  Interestingly enough, he never did.

Forging ahead…

I’d like to begin by offering an apology of sorts to the Warsow team for being a bit incendiary in my critique of their recent release.  I’ve played it quite a bit now, and feel that my assertion that it was “hastily thrown together” was in fact, hasty on my part.  I had based my comments largely on what their community was saying, and I should have waited to do more playtesting on my own to make such a judgement.  The truth is, Warsow is a rock-solid game that seems to be improving at a good clip, and from what I can tell, development seems to picked back up after having some slow times.  The engine runs very smoothly, looks great, and it looks like they are going to write a new GUI(heh, now that truly is a coincidence, as we are doing the same!).  All in all the future of Warsow looks very good, as does Xonotic.  In the case of Xonotic, I hope they truly take their time and get it right, and so far that looks promising.  There is still much to do, but so far…so good!

As for Alien Arena, after a short, but much needed break, we are back to some hard-core development.  Blackice has implemented the beginning stages of the new GUI, which if his previous work is any indication, promises to be a major improvement.  Our GUI was quite antiquated(it was a modified and expanded version of the original id source), and was far inferior to other games like Nexuiz/Xonotic and Sauerbraten.  It was long overdue, and should give the game a very fresh look.  The renderer is another area of focus, and while there isn’t a lot to do in the way of new features, there definitely is a lot to do to get things to run more efficiently.  A good amount of the code has been reorganized, and a ton of cruft was removed.  Along the way I managed to squeeze out a few more frames per second, maybe in the neighborhood of 5%.  While that doesn’t seem like much, all these little improvements tend to add up.  More importantly, I discovered some other inefficiences which led to me getting some major performance increases. 

One area I worked on was the use of vertex buffer objects(VBO).  I’m still not convinced there is much use for these.  On some cards, I found them to be actually quite a bit slower than compiling the vertex arrays, on others I saw it to be about the same.  We’ve had VBO for some time, but disabled the code for 7.50 after discovering said slowness.  Currently we have the option to load the static geometry into a VBO, and while it works, it may not provide much of an advantage.  So for now, I am looking at other ways to increase speed.  The mesh rendering is likely about as fast as it can be for now, but there were definitely areas in the bsp rendering that needed attention.  In the end, I wound up completely gutting the bsp rendering routines, and by the time I was finished, the end results were a stuning 50% increase in frame rates!

I’m also devoting some time to revamping a number of levels in the game.  This is something we’ve always done, and some times this has been met with resistance from the community, especially if the design is radically altered.  Dm-saucer is a prime example, where people still prefer the old bland version to the new one.  On other occasions though, the revamps are well received, such as the new version of Dm-babel, or Dm-Warmachine.  What I’ve tried to do in most revamps is retain the layout, while improving the visual quality, as well as expanding some areas if I feel the map could use more size, or better fluidity.  Babel and Warmachine were very good examples of that approach.  Nearly every map in the game has been revamped at some point, and while most of the “2k7” maps have been already revamped, we are now coming to the point where the “2k8” maps are starting to show their age.  One such map was Dm-Dismal, which historically has been one of my personal favorite maps, and also a community fave as well.  This map was one of the first of the “new breed” in 2008, where we started with a more UT influenced design, with the larger scale, and insanely detailed geometry.  The initial iteration of this map wasn’t really that great, and in fact was a catalyst of debate at that time, that led to some division in our community in regards to the direction the game was going.  Consequently the map was quickly revamped, adding a new section with a teleporter to improve the fluidity, and a few other nuances to make the map much better. 

Now, Dismal is receiving it’s second facelift, and it’s pretty major.  I’m making much use of light volumes(which weren’t available at the time of the previous revamp), as well as static meshes.  I also added a completely new section, further connecting some of the remote corners to one another, which IMO really improves the gameplay dramatically.  I suspect that this may wind up being my best work, and hopefully a community favorite.  As much as I love Dm-Annihilation for it’s gritty, raw beauty and exciting layout, I think this one is going to be better.  For starters, this map is *large*, not just in size, but also in scale.  It’s one of those maps that just feels massive, a major contrast to say Dm-Neptune, which has tight, confining gameplay(which some love, others not so much).  Dismal really contains a variety of gameplay features.  In the elevator areas, the map is very vertical, with a variety of vantage points.  The connecting corridors are not terribly long, but they are fairly wide, allowing for a lot of free movement, which some players adore.  There are also the tighter areas, as well as the tricky ramp area, and the outer corriders at the top and near the teleporter.  The effects and detail make this a technological beauty, with no sacrifice to free movement or gameplay.

Dismal may be only the first of a number of maps receiving some love.  I’ve been considering others such as Crucible, Vesuvius, Violator…maybe some others.  Some such as Bloodfactory, Leviathan, Atlantis, and Turbo would only get very minor changes, only to improve performance and perhaps replace the weapon pads and jump pads.  Of course we also want to compile all new maps with deluxemapping, which will result in an increase of performance over the fallback realtime lighting routines that non-deluxemapped levels currently use.  I’ll also likely be adding in the final base player character, the alien-brain boss(you might recall the original model of this guy in the pre-2008 versions of the game).  The new version will continue with the 2008-on look of “updated retro”.  I say this is the last of the base player models because I’ve always had a set limit for these, to ease issues of precaching at map load time.  I think this will give it a good variety of character types.  This would give us two aliens, three humans, one alien cyborg, and one man-made cyborg.  This was the plan from day one back in 2008, I just never got around to this last model till now. 

The next release won’t be as dramatic as this past one, but it’s sure to be a major step forward as far as polish and playability goes.  We have lots of new toys to play with, and will certainly be putting them to good use!

Setting trends?

 
Alien Arena 2011

For quite some time, I had made it very clear that we would be releasing Alien Arena a week or two before Christmas.  As it turns out, we actually stuck to our promise, and released the game on December 16th.  The release has been an complete success, in fact maybe even exceeding our goals.  We got trememdously positive feedback, some great reviews, and the player counts rose to levels we hadn’t seen since before Quake Live came out.  The amount of work that went into the game over the last year was vast, and at times very challenging.  I am proud of the game, and the development team behind it.  In my opinion this release was a groundbreaker in a number of ways.

It seems that our release gave some competing games a sense of urgency.  Days after our release, Warsow 0.6 was released, a surprise to it’s community who was expecting it to be sometime in Q1 of 2011.  A couple of more days, and the Xonotic team released what it called a “preview” version of their game.  In the case of Warsow, the release was a long time coming, as their last release had been 16 months previous.  Personally I love the new maps and music, and the animation system is excellent.  I love the movement, but don’t care for the underpowered weaponry.  It seems though, that this release was hastily thrown together, as a number of bugs and problems are surfacing and being posted about in their forums. 

The release of Xonotic also came as a surprise, though their dev team had been mentioning a release was imminent for some time.  I stay very current with their GIT builds, and had noticed that development seems to have slowed just a bit over the last couple of months, with little new content being added.  I suspected that the natives were restless and wanted to get something out before interest began dying in the project.  To be sure Xonotic is a major improvement over it’s predecessor, Nexuiz.  However, there are still some problems(old and new), and some issues that

Warsow

Warsow

 make me think that they should have waited to expose the general public to their game just yet.  For starters, while the player models are an improvement, the animations still need refinement.  Part of it is just the rigging/animation, but the other part is a fundamental issue with the system.  Players skate about just like they did in Quake 1 and 2, and instead of utilizing their skeletal model format, they rotate the weapon instead of bending the spine to account for looking up and down.  Of course this is just a very early beta or even alpha, so things like this could be forgiven.  On positive notes, the new maps are all outstanding, and new music is excellent(though I still love the early Nexuiz soundtracks). 

Neither game has ragdoll physics, which was something that we recently implemented for Alien Arena.  It seems to me that both of the games would have benefitted if they would have delayed their releases and at the very least taken the time to see what we did to accomplish it, or come up with their own solutions.  Darkplaces already has ODE integrated in it, and could have probably just copy-pasted our code right into the engine.  Xonotic’s developers have repeatedly said that they cannot do ragdolls because it’s too much server overhead, but I think it’s possible they don’t quite understand how ragdolls are supposed to work(they are purely a client/renderer feature).  In the case of Warsow, maybe they already have plans for these, maybe not.  I am not sure how much development is taking place these days for that game. 

Xonotic

Xonotic

Maybe they both intended to have “Christmas” releases, or maybe they wanted to have their games compared to each of the others by releasing them at the same time.  Maybe they were released out of fear that waning interest would result in some people jumping ship over to Alien Arena.  I shall probably never know the true answer, but I find it all interesting(and amusing) to say the least.  The Xonotic release was the more puzzling of the two, because they essentially released it on Christmas eve, which, along with Christmas day, are two of the most notoriously “dead” gaming days of the year.  They got very little press, and very little fanfare compared to either Alien Arena or Warsow, and by the time people are done celebrating, the news will have been buried. 

All in all, these are, or potentially are, quality games that are light years head of the state of these games a couple of years ago.  There is plenty of room out there for these games to coexist without the typical cross-community drama that seems to have plagued them over the years.  They only thing I am sure of, is that had Warsow or Xonotic released a week before Christmas, I would have delayed the release of Alien Arena a couple of weeks, especially if, as in the case of those two games, I had not committed to any specific release date.  But hey, that’s just me.

[edit – Followup]

A few members of the Warsow crew took the time to respond to this article.  I can appreciate that they have informed me that their release was not done in response to ours, which if you read the article, I only pondered if that was a possibility, it wasn’t an accusation as if it were a fact.  I do stand by my opinion of each of these games, and that they could have been kept in the incubator a little longer, or been a little more fully tested before releasing.  If  you have a problem with my opinion, that is your right, but it is also my right to have an opinion. 

I have approved a few of these responses, but I also trashed a few that included personal insults towards me.  This isn’t ESR, this is my blog, and you will play by my rules, which are simply to treat people with respect.

For years I have enjoyed working on Alien Arena in my spare time.  It’s my hobby, my passion, my artistic outlet.  When people would criticize the game(and believe me they do), it would only serve to fuel me into striving to do better, and improve my abilities.  The ironic thing is, at the time of each release of the game, I honestly felt it was the best it could be, and the best freeware game of it’s genre.  Looking back, I realize I often saw/see things with a bit of rose colored glasses, but I also see what exactly made me think of it that way.  The game has evolved tremendously since then.  Not only have the artwork and gameplay improved dramatically, but so has the engine.  In the early days, the CRX engine was nothing more than Quake II with some Quake III style shaders on it.  In comparison to say the Darkplaces engine at the time, we were *far* behind on technology.  For several years, it seemed like we were chasing other free game’s engines, never really being the “first”  to implement anything.  This is all beginning to change…

In the summer of 2008, after a massive amount of content ravamping, and addition, which IMO put the game on a whole new level of quality, we found ourselves being overshadowed at a time when we thought we would be in the spotlight.  The biggest criticisms we were seeing was “great game, bad engine”.  Bad engine…that hurt a little…but it was true.  We were still using tech that was prevalent in 1999’s Quake III.  Games like Unreal Tournament 2003/2004 look far better, and games like Doom III/Quake IV, using mid-2000’s era engines, were like a distant star that we could not reach.  Oh, I loved to claim we had advanced features, but the truth was, we were falling further behind, and at a very rapid rate.  It was then, in July of 2008, that I made a personal commitment that the game renderer would have to be addressed, no matter what it took.

Parallax mapping
Parallax mapping

What it took exactly, was to rethink a lot of what the renderer was doing.  GLSL was becoming much more common in game rendering, and the amount of tutorials were prolific on the web.

Specular highlights
Specular hightlights from static light sources

So the first step was just getting a GLSL framework established, before moving too far ahead.  Baby steps….that luckily, had some precedent.  A little known project known as the “Quake 2 Graphics Mod” by Ben Lane provided a host of clues as how to accomplish what I wanted to do.  While this really only dealt with a small part of the picture(normalmapping dynamicaly lit surfaces), it did provide some invaluable insight.  By the end of the summer of 2008, the CRX engine was now rendering bsp(map) surfaces using GLSL.  Not only that, but I had managed to add parallax mapping, as well as specular highlighting from static light sources.  The engine was being, at last, thrust into the modern age of game rendering.

The next stage was a bit more difficult, which was the application of this technology on meshes such as character models and weapons.  Engines such as Darkplaces had achieved this, but the documentation and code structure was such that it provided little help.  Finally, it was at this time that I broke down and bought the Red and Orange books, on the advice of Jay Dolan, author of the Quetoo and Q2World engines.  He and I were both working on similar things at that time, and he found it to be a vital resource.  Using some code examples from the Orange book, and some online tutorials, by spring of 2009, I had achieved what I once thought was beyond my reach, which was proper normalmapping on meshes. 
 
Old fixed function normalmapping

Old fixed function normalmapping effort.

 
By summer of 2009, I had this working for fixed and dynamic light sources, and while there were a number of trials and tribulations early on, it was finally ready for public consumption.  Once again Jay Dolan provided a clue after one night of brainstorming with me, and the final piece of the rendering puzzle was in
place.  I was amazed how fast normalmapping was now and how much better it looked!  

 All of these new rendering features, as well as a load of new content, provided the impetus of releasing Alien Arena 2009.  Armed with a new trailer, a host of screenshots, and a number of gameplay updates, we unleashed the game on the public.  Now were were starting to get some recognition for the engine work, and it seemed that the players were really enjoying the new look of the game.  However, for all of that effort, we were still a very long ways behind some other free game engines, and had much work to do.  The next big phase of renderer development was to address shadows.  For years we had been using simple planar stencil shadows, that were stretched to provide the illusion of light angle and direction.  While they were very fast, and looked decent enough, they were still

GLSL normalmapping on meshes

GLSL normalmapping on meshes

 very old tech, and far behind the Unreal 2 engine, Doom III, and Darkplaces.  My first thoughts were to do what Darkplaces had done, which is, in essense, to use the algorithm developed by John Carmack to create stencil volumes.  However, there was some potential issues with legality, as Creative Labs had apparently patented the technique years ago, even though Carmack had come up with his idea on his own.  To be sure though, there were other methods of doing stencil shadows that would not be in jeopardy of patent violations(even as absurd as they are), and I decided to use those.  By fall of 2009, we had our volumetric shadows, but I personally did not feel satisfied.  The Unreal 3 engine, as well as many other new engines, were using soft shadows.  In fact, even Unreal 2.5 had soft shadows.  We needed soft shadows!  

 My first attempts at soft shadows involved the use of shadowmapping, using GLSL.  There were a host of problems though for doing this for the static light sources.  Every solution I saw was the same – they weren’t accurate, and they didn’t look very good.  On top of that, there was a performance issue that while wasn’t bad, it annoyed me a bit.  For dynamic lights though, shadowmaps worked splendidly, as you are only dealing with one light source.  For our purposes, I

Soft shadows
Soft shadows

would eventually settle on a combination:  stencil volumes for static lights, shadowmaps for dynamic.  I had read some theories on how to create soft stencil volumes, and after seeing that it was a low cost method, I implemented it.  The process was actually a bit tricky, requiring some more advanced frame buffer management than I had previously done, but in the end, the results were very good.

 By now, the engine was just starting to reach what I would consider a modern state, at least on the end result aspect of things.  We were still doing some old methods, such as vertex animation for meshes, compiled vertex arrays(more on this later), bitmap fonts, as well as an outdated sound system.  For years, the engine was my own personal domain, with a little help from friends here and there.  By now though, I had started to receive some help, from the likes of Tony Jackson, Jim Bower, and Emmanuel Benoit.  Tony was the first of the major contributors, and he was very good at finding many of my coding mistakes.  Tony focused mainly on the game code, finding memory leaks, pointer problems, and other issues.  Soon, our server code was vastly more stable, something that had plagued earlier releases.  Jim Bower, known affectionally as “Stratocaster” in the community, took it upon himself to rewrite our sound system, using OpenAL.  This allowed us to do a great number of new things, and vastly improved the experience of the game.  Jim didn’t stop there though.  Pretty soon he had a hand in most everything we did, including implementing AutoTools to make compiling the game much easier for Linux repo managers.  Emmanuel made his presence felt quickly.  Like Tony, he found a number of inefficiencies, errors, and opportunities for improvement.  Eventually he rewrote our in-game IRC client, and implemented a True Type font subsystem.  Our little engine(and it’s now truly “our”) had begun to gain some notoriety in the gaming and tech world!
 
With the game engine now closing the gap not only with a number of free engines, but commercial ones as well, it was time to make another quantum leap.  For years, the old model format had not only been limiting us, but it was a slow, cumbersome, and quite ugly method.  It was time for us to move to a skeletal model format.  Much like the time when I felt we needed GLSL, it was another one of those “at any cost, any means
Skeletal model format

A render of the IQM skeletal model

necessary” moments.  My first instinct was to use either the SKM or MD5 formats, which were popular, but both poorly supported and documented.  It was at this time that Lee Salzman, the lead developer for the Cube2 engine, approached me about possibly writing a new model format, and if I would be interested in using it.  It was almost as if fate had struck!  I was very interested.  Very.  When I finally completed the shadow code, Lee had finished writing the new model format, and I began work on implementing it into the CRX engine.  At first this seemed quite daunting.  Not so much the use of the format, but the integration.  In the end, with some assistance and bugfixing from Lee, the new model format was in the game and working perfectly!  Not only this, but Lee pointed out some errors I had made in my older mesh rendering code, and performance for all meshes, MD2 and the new IQM were vastly improved.  The stage was being set for us to begin moving rapidly forward yet again.  Again, with some assistance from Lee, we first added pitch/spine bending for player models, and then…the ultimate frontier…ragdoll physics!

 Ragdolls were without question, going to be the most difficult task I had ever taken on since working on the GLSL mesh rendering features.  I had spoken of this often while completing the IQM rendering, and in a sense, wrote a check that I was unsure I’d be able to cash in.  I honestly considered giving up on this a great number of times, but each time, I managed to convince myself that this was worth doing, no matter what it took.  For the first time, we had a chance to be a pioneer – no other free game based off of the Quake sources had 3D ragdolls, and in fact, only one other free game had managed to implement it:  Cube 2.  Lee had warned me of the perils that lie ahead, but I truly had no idea. 
 
The Open Dynamic Engine had been on my radar for some time.  I was not sure if this was the best choice, but after some research, and noting that Darkplaces had recently integrated ODE into it’s code, I felt that it would be the one for us.  The Bullet engine, as well as Cube 2’s physics code might have been more suitable, but they were written in C++, and this really wasn’t a good option for us.  I’ve never personally liked, or felt comfortable with C++, so I chose ODE, despite a tragic lack of any real good ragdoll physics examples.  In my searches, I eventually found one, however it was written in Python, and would require extensive translation.  So, I began the slow, tedious process of building up the ragdoll subsystems, framework, and rendering routines.  Just the concept of how they would be implemented took a good amount of thought and planning(I had in fact been thinking of it for a year or more).  I moved slowly, getting basic functions and ODE framework started, then onto actually trying to render a rudimentary ragdoll before actually applying it to the skeletal model.  I actually surprised myself a bit, and made good progress initially.  I made it a point not to hound Lee too much for advice early on, as I really wanted to understand the things I was doing.  Finally, I had reached the point of applying the ragdoll to the model, and again, was surprised that it kind of semi worked.  At this point I turned to Lee for assistance, which he very willingly obliged.  It turns out that I was much closer than I had thought, and Lee was able to pinpoint where I was going wrong, which turned out to be a fairly simple thing regarding the position of the base frame.  In the end, Lee probably saved my sanity…and before I knew it, we had working ragdolls in the game! 
 
 
 
 Finally, after many months, years of work, I believe Alien Arena is on the verge of something special.  I would be remiss to not mention some of the other contributors such as Dennis Zadlach, one of our wonderful map makers who has for years been making amazing maps for the game, Chris Preble and Victor B for setting up our own IRC network and maintaining it.  Guys like Cthulhu, Spot, Stirky, Sinno, JoTurkey, MaxToTheMax, Tik, for hosting servers, writing code, and spreading the gospel.  The list of contributors is endless, and I’m sure I’ve left a great many out.  Even though it’s been many years since this project began(2003 to be exact), we are really only at the beginning.  There is so much ahead of us!  Even though I feel we have an excellent game and engine, I know there is plenty of room for improvement.  As time marches on, I will continue to update this blog with my thoughts on where things are heading. 
 
Until then….frag on!