I made a game! Buy on Steam

This article was updated. Jump to Update 0. Update 1. Update 2.

What you see here

is the stunning background art

of one of the most beautiful sci-fi games.

H o m e w o r l d 2

Thanks for reading.

Just kidding. Of course, I have something to say about this. In the company, we look at the art of Homeworld from time to time and bow to the creators of this masterpiece. Once, we talked about how great the background look and how interesting this sketched style is. There is something…some details seem…special to us:

I mentioned, that this looks a bit like… a vertex color gradient. But they wouldn’t paint the background on geometry, right? I mean…that would have to be a highly tessellated sphere.

The discussion was over, but I wasn’t satisfied and wanted to at least see the textures. So I used some mod tools to extract the Homeworld 2 Demo data, but there were no textures. Only some .HOD files. I used Google and found a thread how to generate these .HOD files from a .TGA. It was said:

“…scans every pixel of the image then based on contrast
it decides whether or not to add a new vertex and color…”

What?

Could it really be, that this is vertex color? Luckily you can watch at .HOD file with CFHodEdit. And another tool can force a wireframe mode. And now look what this brought to light:

This is one

of the most brave

solutions for game art i ever saw.

And here you can see how this influences the sky sphere geometry of the game. Do you see how low the resolution is in the low contrast areas? And how round the sphere is where details were painted?

I never ever had thought, that this can produce such good results. Oh, and don’t forget that this technique solves two major problems:

  1. You don’t have any problems with DDS texture compression artifacts.
  2. More important from composition perspective: since you can’t get too fine detail (it was said in the tutorial that the base TGA shouldn’t contain too sharp details), the background stays where it should:

In the background.

Too often, I see games where the background contains so much noise and details, that you can’t really separate fore-/midground from background.
The last time I saw this perfect combination of tech & composition was in Diablo 3. I talk about the 2.5D tree article.

Thanks for reading.

Update 0

Russian Version by Eliiah | Korean Version by Woodorl Kim

Some people asked in the Polycount thread how these Homeworld spheres were created. Let’s do it together! What we’ll use here are modding tools. I have no idea how near these are to the original Relic workflow.

Download

Download this mod tool collection and use the command line tool “HW2BGBuilder”. There’s also “HW2 – Spookysoft – HOD Tool 1.5.0.1” but it didn’t work out very well for me.

HOD Viewer

For viewing your .HOD file you should use “CFHodEdit 3.1.5” (open your .HOD, then at the bottom of the program scroll to the lat tab “Miscellaneous” and press “HOD Preview”).

Let’s go!

Ok, first we create a test .TGA to see what we can expect. I would say, this should work well (1024×512, 24bit):

Create a shortcut to the HW2BGBuilder.exe and drag & drop your texture on it. Let it calculate some stuff and then hit “Space” to start the process and feel like a Matrix hacker while numbers run down the command line.

And this is how it looks in “CFHodEdit”. You can clearly see the UV layout of the sphere. Now we know three things:

  1. Don’t add detail at the top/bottom of the texture because it gets stretched a lot.
  2. The left/right side of the texture has to fit to each other to avoid a visible seem.
  3. The colors are brighter than in the original texture, more about this later.

Regarding the last point: in Homeworld they painted only smooth gradients where the poles of the sphere are and avoid any visible stretching. Also, the vertices are pretty rare in these areas, which leads to smooth vertex color gradients. Take a look at the geometry around the pole:
I think this is just awesome. Because of the limitation to use detail only on the horizontal areas, you achieve that the player (hopefully) never looses his orientation.

Now, let’s use a “real” texture. But before that, we have to decrease the output level from 255 to 128 (Photoshop > Image > Adjustments > Levels).

Level Output: 255
Level Output: 128


After the creation process you’ll find a “_ref.TGA” which is an edge map the program uses for the sphere creation. I think this looks fascinating. I think the quads are the parts which the program calculates after each other.

Edge Map

And this is how it looks in the viewer. Especially at the top of the big mountain you can see some color bleeding. I didn’t play around with the settings of the “HW2BGBuilder”. Maybe there’s space for improvements, but in general I think the result is pretty good.

The resolution of your source texture has an impact on the sphere intersections and on the course of the polycount.


My last point will be a bit technical. Please correct me if I’m explaining it wrong. There is a good point why I said “Bye” to mathematics and went the way of graphics. :)

  • 1 Pixel needs 24 Bit/3 Bytes to be saved (RGB, every channel has 8 Bit)
  • 1 Vertex needs a position (XYZ) and a vertex color (RGB)

This means, if your source texture contains too massive contrast and detail everywhere, you would get more data than when you use a texture. But the Homeworld backgrounds consist mostly of colors and gradients, and only sometimes more detail. So for this purpose, this optimization is awesome.

While writing this article, there were discussions going on how to achieve this poly reduction in zBrush:

Update 1

Oskar Stålberg used the Homeworld-Background-Idea in his personal project, which looks soooo gorgeous! :,)

Update 2

Chris Correia works on a space game and asked me about the stars in the Homeworld-Backgrounds because they are super-sharp. I remembered having seen a thread like this a while ago and here it is!

In fact, the stars are single textures/billboards:

23 thoughts on “Homeworld 2: Backgrounds

  1. Pete

    Thanks for the article. These images would make absolutely awesome multi monitor wallpapers (thinking eyefinity 6000~ x 1024 resolution+), any chance you could provide some really high resolution versions? cheers!

    Reply
  2. Simon

    Hi “-” and “Pete”. Thanks for your comments! I think i’m not the right adress for highres pictures. But i know a place where something like this is the topic: http://deadendthrills.com/

    I wrote them an email about your comments and that you would like to see something about Homeworld. With a bit luck we’ll get it :D I would love to have them also.

    Reply
  3. Kazuya Darklight

    So this is awesome to find out, I would have never imagined. Not to derail or hijack but since this is Homeworld related and you profess a certain love for the game, I wanted to put this out here. Some guys are working on a kickstarter to try and revive the old homeworlds for digital distribution and touch interface, then move on to make a Homeworld 3. http://www.kickstarter.com/projects/teampix/homeworld-touch-ios-android-and-homeworld-3-pc-mac/

    Reply
    1. Simon

      Yeah thanks for the link! But do you think this will be working? I mean buying the license, building the game for only 50.000?

      Reply
  4. Anonymous

    What is even more impressive is that the Spyro Games and Crash Team Racing on play staion One did their bachgrounds that very same way. I guess it saved them memmory back then and they were not so constrained by polycounts, but still a curious and non-intuitive trade-off. CTR even did that for textured surfaces, more specifically, for the Boss Portraits over the boss race door on each world hub in that game, there is a drawing of the boss which if you look at in wireframe, you can verify it uses no texure, but a bunch of gouroud shaded polys.

    Reply
  5. diamond

    Does anybody knows a tool which will do the same with arbitrary models, not with sphere? My idea is to bake lightmaps to vertex colors, and with this kind of tessellation the end result might be almost the same if not better than high-resolution lightmap. Maybe somebody knows games which used this kind of tesselation for lightmapping?

    Reply
  6. Kryzon

    I noticed the same thing on Spyro, and remembered this article.

    When you have a big gradient represented by only a few vertices and their interpolated colors, you’re saving all the memory an equivalent texture map would take.
    This must’ve been an important optimization for these classic Playstation 1 games.

    Super Mario Sunshine for the Gamecube also does vertex color, but for the environment shadows as seen here ( http://blitzbasic.com/Community/posts.php?topic=90523#1029305 ).

    Regards.

    Reply
  7. Simon

    Thanks for these links! Really interesting…the shadows and the water look really good. I tried around with MipMaps for water too – to fake the total reflection :)

    Reply
  8. Wladimir

    Thanks for the interesting article! I figure this technique will still be useful on low-end OpenGL ES2 hardware with limited memory bandwidth for textures.
    Just for kicks I wrote a Python and OpenGL based viewer for the hod backgrounds, see https://github.com/laanwj/hw2view for the source code.

    Reply
    1. Simon Post author

      Wow that’s great! I didn’t have the time to check your tool, but thank you for sharing and mentioning me in your description :) And yes, i think this tech can be really useful. Not only for low-performance but maybe also for art-style. Sometimes restrictions are the source of creativity :)

      Reply
    2. JimmyThickNThin

      You’re right. We did something similar for many background elements (and entire backgrounds) in Castle Doombad. The 2D artist drew up whatever he saw fit, then one of the technical artists/animators hand-matched it with geometry. I was amazed how quickly & precisely he pulled it off.

      Still, that was with large solid-colored areas and just a few simple gradients. A tool that could automatically generate geometry for arbitrary hand-painted images, like Relic apparently developed for Homeworld 2, would be a great project.

      Reply
      1. Simon Post author

        Yeah that’s right. I really nice side-project which surely can still help in modern games. :)

        Reply
  9. Olivier Hokke

    I’ve been working exactly on this automation tool for the past few months! But in my case I’m even working on further compressing down the meshes. Stay tuned!

    Does anyone know anything of games or articles related to this topic? Perhaps some that apply this method too, or worked on some automation?

    I am doing this project partly for my own interests and for my master thesis research. It isn’t easy finding these pages. Glad I stumbled upon this article, makes for a beautiful reference! :)

    Reply
    1. Simon Post author

      Hm … maybe Oskar Stålberg (see Update #1) can help you with that. Or you can find a programmer who worked on the original Homeworld and ask him? Whatever you do, let us know when you’re done! Would be awesome too see what you’re comming up with!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *