« News

Jun
18

Changes big and small.

We've had a busy month, and have some cool changes in the works. My own presence around the office has been a little spotty, lately: I was at an investor conference for most of last week, so in the meantime we moved up some important tasks that didn't require too much design input or oversight. In this particular case, getting some graphical changes in place for the greater "universe redux". Michael is also working on his Event Registration web-app, but for the purposes of this post I'll mostly be discussing some graphical changes.

First and foremost, I had Ray drop detail textures into the engine. This is a feature that allows the primary texture on an object to be modulated with a secondary "high detail" texture; so when the first begins to look blurry, the second comes through and creates the impression of increased surface detail. Combine this with specularity and bump shaders, and you can add a lot of detail. This is particularly important with Very Large Objects, since they tend to have much more obviously "blurry" textures. Large or small, however, detail textures can have a big impact on the perceived visual quality of objects in the universe. Adding detail textures only took him a few hours, but handling the more aesthetic tradeoffs and balancing that against shader performance has been an ongoing process.

We had been planning to add this feature for years, but just "hadn't gotten around to it". Although they have general applicability on any object, the need for detail textures tends to be greatest with large objects. For this, and other reasons, we've historically tended to avoid "really large" objects, preferring clusters of smaller objects to yield more detail. However, as part of the greater "Universe Redux" process, I'm looking at getting some physically-bigger content into the galaxy. If I'm going to spend the time to repopulate most of the galaxy with more asteroids, I would just as soon add in some new types of asteroids, and giant ice, and other features that can add to the tactically complex environments that will become that much more central to future gameplay. Aside from this, you'll also begin to see a lot of added detail on ships like the HAC and Constellation, as well as our stations and the like. Some of the current asteroids, like the broken tan-color chunks, will be among the first to get the added improvement. All in all, detail textures add a significant bit of enhancement for a relatively small amount of development work, which is exactly the sort of graphical update that is worthwhile when convenient (despite all our pressing gameplay needs).

Detail textures will only be visible to people with "fairly" modern hardware (ie, only six years old, heh), as it will only be present for shader 2.0 capable cards. This brings me to my next subject: revamping a small area of the VO graphics engine, and some of our graphics assets.

As many of you know, we started development in 1998. Our original engine was our own custom software renderer, and we soon added support for the then-new 3dfx Voodoo and the marvel that was "3D hardware acceleration". From then on, as hardware progressed, we would add features to take advantage of it. Nvidia released the original "GeForce" card, which supported DOT3 bumpmapping, part of what would later become known as the "fixed function pipeline" (differentiated from modern shaders, which are an entirely programmable pipeline). Although I had to (virtually) beat our then-graphic-artist over the head to get him to use bumpmaps, since he had disliked the earlier EMBM we had used with Matrox cards, our DOT3 support eventually led to the object-space asteroids we all know so well. Things evolved, and we ended up using tangent space normal maps more often, but we still kept our object-space maps around and continued support for both methods into the world of Pixel Shaders (1.1, 1.4, and 2.0). As a result, a person can run our game today on a machine with a GeForce1, and still see all the bumpy lighting detail on the Training Sectors asteroids.

However, the time may have come for us to revamp how we support different hardware, to the betterment of everyone (including older machines). Part of the problem has stemmed from our large textures, and our increasingly heavy use of complex pixel shaders (2.0, for newer cards). Large textures put a lot of stress on texture memory, and also on the memory bus of any videocard in moving data to and fro in order to display all the pixels you'd like to see. Texture compression helps, but we have studiously avoided compressing our normal maps, because historically, it tended to make them look horrible. Advancements were made a few years ago, with Doom3 and some clever ways of compressing normal maps without making them look entirely like crap. Further improvements have built on that, making it an even more attractive prospect. Compressing our normal maps would considerably reduce video memory overhead, allow faster load times (anyone noticed how long it takes to load the Training sectors?), and lastly, consume less videocard memory-bus bandwidth. The last one is becoming a bigger issue as we keep adding more shader-driven features, like detail textures and so on. Any given videocard only has so much bandwidth to move textures around and operate on them in such a way as to display the Neat Stuff we send to it. Obnoxiously large, uncompressed textures can make that a lot more challenging, and reduce framerates.

The tradeoff: We're still considering a bunch of options, but it's possible that we'll just drop normal map support for anything earlier than Shader 2.0 model hardware. Ie, machines with GeForce3/4s or Radeon 8500/9000s would no longer get to see the snazzy bumpy stuff. On the other hand, those machines are really struggling to keep up with some of our newer content, like the big battles in Dynamic Warfare, and removing some of this overhead could improve that situation. Plus, it allows us to optimize more heavily for the areas we do support, making things faster for people who do have the "newer" (read: 6-year-old) hardware.

Vendetta Online is known to run on an amazing variety of older hardware, possibly making us one of the most client-scalable modern MMOs out there, and I do not intend to change that. We're not dropping support for anyone, and like I said, if anything it may make older machines run a bit better.. but at a small graphical cost. We're basically looking at shuffling around some of the graphical "glitz" in the interest of making the game run faster and better for everyone, and look cool for most people.

Ray is in the midst of implementing the new normal map compression features, in between tweaking detail textures and other things for me, and while we still have some testing to do there.. hopefully you'll see it before long. As he churns out the features, I'm revamping our graphics assets to use them effectively. I also have some unrelated work to do in updating how some of our current assets are loaded into the game. Another sign of relatively old heritage in the MMO community: our use of Hoppe progressive mesh degredation. Back in the 90s, the difference between 200 polygons and 400 polygons was a.. big one. So we engineered the "Level of Detail" system to allow people to configure different numbers of onscreen polygons, to allow their systems to work better. These days (and for a long time), hardware has dealt much more efficiently with fixed sets of optimized polygons, rather than dynamically-changing sets of un-optimized polygons (which the dynamic meshes tend to be). So while I'm reworking some of the asteroids, I'll also be re-exporting them as static meshes, and creating static LODs for them. This should hopefully also speed things up on some machines, even with higher polygon counts, and lead to a better situation for drastically increasing asteroid density in the universe. We'll make sure to keep plenty of options for game scalability (it has to be playable on my Pentium III 933mhz w/GeForce3 basement linux-box), but the nature of the options may change a bit.

"Ok, but where is the gameplay?"

We haven't forgotten any of our pressing needs with our economy, faction system, mining, missions, dynamic warfare, and the myriad of other topics that yell angrily at me from my TODO list. This graphics update is not very lengthy or time consuming, is already half finished, and should be of significant benefit to the "universe redux": the repopulation of the galaxy with vastly increased asteroid densities, statically fogged areas, and other content that will directly impact on the economy, grayspace traffic, piracy and other areas. Our new universe build tree and fully dynamic economy will stem from some of the new minerals and ores that come with the redux. Plus, it will make certain combat (such as fighter-level Dynamic Warfare instances) a hell of a lot more exciting. All in all, it should be a good use of two weeks.

Plus, it makes the game prettier and potentially faster. If that isn't a win-win, I don't know what is.

In other news, we also have a cool new intern (Paul) who is producing some nice new icons for us, and will be taking point on a general "icon redux" project, to update a few graphical aspects of our station UI that have been left incomplete. Not heavy stuff, but very welcome. Hopefully we'll get him involved with more art as we move forward.

That's about all I have for now. In theory, by Friday we will hopefully have some cool detail-textured asteroids for you all to check out, as well as a new Event Registration application in testing (ie, for people to register upcoming player Events, potentially to get pushed out to a future mailing list, as well as requesting Guide assistance and the like). I can't promise much more than that, I wanted to do some new Badges, but I'm up to my ears in shaders and normal mapping.

As always, please post feedback on the forums. Things are coming along pretty well here, I'm really looking forward to some of this stuff, which has been on the "horizon" for so long, and now is starting to look like it's finally "right around the corner".

-Incarnate