Good old games are not all that good.

GOG.com is currently offering one of my all-time favorite games, Wing Commander for purchase and download. Even though I still have the original floppies somewhere, I whipped out my credit card and figured I’d spend a fun afternoon with it. My friend Francis came over that day, and he’d never heard of it (he is 20 years old and was not quite born yet when the game was released), so I figured I’d show him what a great game it was. Except it turns out it isn’t. Because we live in the future now.

Never mind that it took a while to configure DOSBox properly, the game itself just doesn’t hold up to modern standards in so many ways:

  • The aspect ratio of 4:3 (with occasional Letterbox bars in movie sequences) was stretched onto my 16:9 TV.
  • The controls keyboard+mouse, but WASD wasn’t invented yet, and the mouse sensitivity is all wrong. Mice were new, and the OS didn’t have sensitivity preferences.
  • The graphics are 320x200x8. The art is good within those limitations, but looks terrible to our modern eyes, especially on a 40" screen.
  • Support for my game pad is so bad that I chose to play without it. In fact, having it plugged in made the mouse cursor jitter. Joysticks for PCs were pretty unusual then, and they didn’t have 16 buttons and weren’t always analog.

On the plus side, I was right about the game being crack for Francis. The story is great, even full of tropes as it is, and the pacing works, the space combat is exactly what a young nerd who has seen too much Star Wars wants it to be like. There are likeable characters that you care about, and your protagonist’s character development is fantastic. This game would still be a blockbuster if it was made today, with today’s technology. But as it is, it runs in an emulator and is stuck in the technological constraints of the very early 90s.

Compare this with the movies or music industry. If the only way to watch Charlie Chaplin’s movies today was to go to a cinema and watch it on the original celluloid, few of us would even know who he is. But the movie industry has moved with the times, and I can watch Metropolis on Blu-ray and Charlie Chaplin on Netflix. And before this, they were available on VHS and Laserdisc.

I strongly believe the Game Industry is leaving lots of money on the table by neglecting its back catalog in this way. There is an entire generation of consumers that have never played the great games of the 90s, and we’re discouraging them from that because we’re basically letting these games rot.

What it takes to keep these games attractive is not a reboot every couple of years. Those are expensive and risky, as DNF should have shown all of us. Why aren’t we just keeping the original games fresh? If new hardware comes along, or the way people consume games changes, it should be so much easier to adapt an existing game to that then to make an entirely new game. To use my Wing commander example: Support game pads. Port it to consoles. Sell it on Steam. If numbers are still good after 10 years, pay a studio to re-do all the art in higher resolution, using the originals as their guide. Don’t make me use an emulator.

There are a few games that get this. Another World had a 15th anniversary edition with new graphics and a port to Windows. Monkey Island released a Special Edition that was the talk of the press, because who doesn’t love Monkey Island? It’s gorgeous, and it got me to play through one of my favorite games one more time. And you know what? The story holds up, the humor is still funny, and it doesn’t feel like I’m playing something that came out of a time capsule.

Project Euler

Thursday night I discovered Project Euler, a site full of math puzzles that can be solved algorithmically in under a minute each. Since then, I’ve solved the first 30-odd of them. Friday night Marcus and I sat down to solve the week’s new problem as it appeared online (we came in among the first 25 or so).

These are great fun. I think about them quite a lot as a background brain task, and I’m rediscovering how cool math problems can be. To make it a coding excercise, I’m trying too write them all in Lua and not in C, and as a result I feel that I’m getting a lot more confident in everyday Lua hacking.

Geeky pleasures.

Games Compatibility on Integrated Graphics (Intel GMA 3100)

Last year I bought a new PC, and because I didn’t know which graphics card to get at the time, I decided to do a little self-experimentation and see what life is like with integrated graphics. After all, more and more people buy cheap laptops these days, and integrated graphics are getting better all the time. I bought an Intel G33 board which has a GMA 3100 (no X) chipset. The specs say it can do DirectX 9.0b, and Shader Model 2.0. Enough for quite a lot of games, but not for the latest and greatest. Continue reading

ActionScript 3 Learnings

I’m learning a lot about AS3 these days. It’s not a bad language, and it’s basically Javascript for Flash. Among the learnings:

  • Actionscript is still really, really slow. About 50-100 times slower than C s my guesstimate, based on what I know about Javascript benchmarks.
  • getters and setter are very slow. It’s 20 times faster to access a variable directly than it is to access it through a getter.
  • I really, really miss arrays of atomic types. Array is an array of object-references (and smart pointers, even), and it’s memory-hungry and not fast.
  • ByteArrays are faster than Arrays and use a lot less memory. I’ll try to use them more.
  • I think in C. Even after two months, I’m still writing int i every time I should write var i : int.
  • I miss block scoping of variables. Especially in for loops.
  • The Visual Studio debugger blows the socks off the Flex debugger

Despite all this I’m starting to really enjoy coding in Flash and getting noticeably faster every day.

Adventures in Optimization

This weekend I thought it would be a good idea to run the Eressea server both with and without optimizations enabled and compare the output. In theory, I thought, optimization should not change the results, and different results would hint at bugs like uninitialized variables or illegal memory access.

Needless to say, the output wasn’t the same. It was slightly different, and it looked like a small error snowballing towards the end. I’ll spare you the tale of a day trying to narrow down the exact location, and cut right to the chase:
Continue reading

Eressea: text vs. binary data files

I’m posting about this because I like talking about code and nobody is on IRC. If you don’t like code, you may want to skip this. Also, none of this is rocket science, but it was a nice exercise.

Traditionally, the data files in Eressea have been text files. You know the kind where you’re doing a lot of fprintf and fscanf everywhere in the code. There are usually two advantages associated with that: small integers take up less space (2-3 bytes instead of 4), and when something goes terribly wrong, you can edit the data with vi.

The latter had long been a mixed blessing, with edits occasionally doing more harm than good, and since the introduction of a shell and script access to all the game data, it’s not really been necessary. Which left three reasons not to switch: Slight space improvements, the amount of work to change over to something else, and backward compatibility. However, I had some time on my hands recently and decided to tackle all of those issues.
Continue reading

Eclipse + CDT + MinGW + XP x64

I’ve previously complained about the lack of decent free IDEs for developing C++, and since it’s been a while, I gave Eclipse another shot. The good news: CDT 4 no longer crashes every 5 minutes, it has much better project structure, and I think I can work with this. The bad news: It took ages to get everything up and running with MinGW.

The following is an attempt to remember what the problems were.
Continue reading

Eclipse RCP Patch 1 for 3.3.1 (3.3.1.v20071002_331) requires feature “org.eclipse.rcp”

I recently spent half a day trying to fix this Eclipse error message, which prevented me from updating/installing anything at all. So in case I ever trip over it again, here’s the solution:

  1. Help -> Software Updates -> Manage configurations -> Eclipse RCP Patch 1 -> disable
  2. restart
  3. Help -> Software Updates -> Find and Install -> Scan for updates of the currently installed features
  4. restart

Linkage Six

Today I’ve got a list of Difficult English Words you can use to impress your friends with and really stand out as the nerd you are. If you’re also a coder then you may appreciate this collection of bit twiddling hacks — there’s something there for everyone, and of course it also has the famous HAKMEM bit counting algorithm. City Shrinker makes large things look very small. It’s hard to believe that these aren’t models. For the audiophiles and cat-lovers, here’s Purrcast, the sound of cats purring. And last, but not least, this man is my new hero.