Sunday, December 21, 2008

The age of beauty

Some final results of my computer graphics project. I implemented a graphics rasterizer, which is the implementation one would follow if you wanted hardware-accelerated graphics on today's GPU's, which have pipelines dedicated to vertex transformations. The other option was a raytracer, which is not (yet) suitable for real-time applications due to calculation complexity.

2 light sources, diffuse (gouraud) shading, phong (interpolated), 5000ish polygons. First without, then with bump mapping. Thanks a lot to this Nvidia Developer's Zone paper about Perlin Noise.

Implemented in Java from scratch, I'll drop the source code online soon.



Friday, November 28, 2008

Friday, November 14, 2008

Greetings from the low-end side of town

If there's one thing I've always envied console users for, it's the universal system compatibility. You buy a disc, pop it in, and performance (I'm ignoring TV quality here) will be the same for you and other players you encounter.

Not quite so for a PC gamer. I'm sure everybody is familiar with the so-called minimum requirements for a game. This brings me to the first problem. There's a huge ambiguity over what is acceptable as game performance. In game A, meeting the minimum requirements might be good enough to actually load the game into memory and gaze at a slideshow of half-baked pictures, while for game B, meeting them might result in a fluid - although low-end - gaming experience.

So here's my proposal for what a true minimum requirement would have to look like. A configuration which:

Taken an average over the full game (main quest / campaign if we're talking non-linear gameplay)

  • renders at an acceptable framerate, say 25 or 30
  • at a fixed resolution (1024px)
  • benchmarked on a fresh system with the given hardware.
Options should - of course - be set to low quality for this benchmark, but players should not have to deal with serious gameplay disadvantages. All vital objects should be rendered, and 'pop-in' (the sudden appearance of game objects at the horizon, to preserve GPU memory) should be non-obtrusive to gameplay. I'm running out of fingers counting the occurences of a low-settings-configured game pointing to things in the horizon which haven't been rendered yet.

I am aware that game demos are the proverbial hook to draw new buyers in, but it is very important that they represent the state of the actual game, performance-wise. A lot of games are pirated to check out overall performance, because the demo lacks in benchmarking possibilities. And once you've got a pirated copy of a game which performs so-so, who's going to run to the retailer?

Now, I am aware that unlike consoles, not every PC system is the same, even if the hardware matches. I too shrug every time I get my hands on a box which is loaded with bloatware, degrading overall system performance. All I'm asking is for these requirements to be realistic. If an internet connection is required to activate the game, it has to be on the box. If there's an install limit, same story.

Another thing: it is not that hard to come up with new and shiny graphical improvements for games. The algorithms are there, and hardware evolution is catching up. The bottom line is: do we really need them? In the middle of a trans-galaxial firefight, who's going to wonder whether or not the smoke on the battlefield is volumetric, has soft edges and correct physical reaction? As a game developer, you've got to draw the line somewhere, because nowadays, it's a thin line between a fantastic tech demo and a very crappy game experience.

Sure, if your game is all about smoke, you better make sure it's the best damn smoke I've ever seen. If the game is about much more, careful planning of the performance budget is required. Example in case: Call Of Duty 4. Praised as one of the best games of 2007, it effectively balances showdown and performance. Sure, it's all scripted sequences and sprite-based-explosions, but did anyone really bother?

As a conclusion, some games which I've been playing in this busy release season:
  • Left4Dead demo: I don't know how they pull it off every time, but Valve surprised me once again with the performance of their latest build of the Source engine. I barely meet the system requirements, but medium settings is all the rage.
  • Fallout 3: It looks fugly on my rig. But it's Fallout.
  • World Of Goo: I yet have to find the first person who doesn't play this game straight on for the first hour. The music, the animations, the puzzles ... it's actually really good.

Saturday, November 1, 2008

Venus, dinosaurs and tablecloths

For my course in Computer Graphics, we had to implement the two basic algorithms in CG: Ray Tracing (using physics theory of viewing and lighting rays to evaluate the color of each pixel) and Rasterization (slap all triangles down to the screen using Matrix transformations).

It can be frustrating at times - one small error can have disastrous consequences, but that's more of a general problem when I code. We got some example objects to render, and I must say the results are great. It's pretty incredible that with these - relatively simple - algorithms, one can render quite a realistic (geometry-wise) image of an object.

Monday, October 20, 2008

Busy

So, the new academic year has started. I'm following a Master in Computer Sciences now, option Human-Machine interaction. I've got a bunch of interesting new courses (Computer Graphics, Distributed Systems, Compiler Construction, ...), but the workload is getting pretty heavy. I'm also organising events for the improvisational theater group I'm active in, Preparee.

So I'm going to do the very thing I think is a landmark in laziness: instead of writing out paragraphs and paragraphs about the tidbits of interesting things I've found in the last few weeks, I'm going to sum them up. That's right. Yes, Dave, I'm afraid I can do that.

  • I've been using Drupal a lot for the Preparee website. It's quite complicated to get started with at first, although the module system is a bless. It was hard to get things running, since we opted for drupal 6.X, and a lot of modules still don't have release candidates for the 6 series. Especially the Date module had some problems, but with my little project living against the dev-release line, I helped to debug it.
  • The Telectroscope is an awesome art project.
  • World of Goo is the best indie game I've played in a long time. It's a physics-based puzzle game with a unique art style and tremendous music. It's quite hard to believe this is a two-man project. I try to avoid using the phrase Bedroom Programmers here, since it tends to sound quite homoerotic.
  • Automated P2P enforcement gone wrong: printer sued for downloading Indiana Jones 4. Of all movies, the poor printer.
  • Promising one-man MMO: Love. Procedural animation and rendering.
  • Video series I've laughed at lately: twisted cubicle workers in ManInTheBox and the ever sarcastic Zero Punctuation.