Recently in Tech Category

Your Humble Abode in Neverwinter Nights

| No Comments | No TrackBacks
Long before I was adoring some awesome-looking houses in The Elder Scrolls IV: Oblivion and waxing teary-eyed over how frigging awesome the Deepscorn Hollow is (please don't laugh), I was already working on some high-quality player character housing in my favourite games. Specifically, Neverwinter Nights.

Would it have been awesome if you could just return to your character's home after a long and challenging adventure, and drop your loot in the chests or put them on the shelf, then head off to another exciting adventure without worrying about your character's encumbrance limits?

Oh yes, you can do it! You could do just about anything in NWN, except achieve any sort of persistence. Once the module starts, all you have is the ability to save/restore games and export your character; you can't restart the module with another character and expect everything in the module to be exactly as you left it with another character.  You needed external hacks to do that. And oh boy oh boy, did people ever hack in all sorts of weird persistence hacks using the scripting API and some more evil methods like latching another program on the server process (as far as I understood it). Since we're only doing this for single player, we can probably do some more gore-filled methods instead.

So, here's an article that's long overdue. I was going to post this to my crappy lil' Neverwinter Nights site when tons of people were still actively playing the game (they probably still are, I just haven't been checking on them), but I never got around to. I probably did in some form, but never posted the guide on the site and I'm not going to start looking.

Without further ado: a guide on how to create your own persistent houses in Neverwinter Nights.

Falling apart, but holding together

| No Comments | No TrackBacks

Once upon a time, there was this game company called Loki Games. They made some nice Linux ports of games and then went bankrupt. Luckily, most of the games still work.

However, I got this weird idea today: Does Sid Meier's Alpha Centauri really need the CD? Well, I went and uninstalled the game, reinstalled, and after some patching, turns out that if I install the whole 600-whatever-megabytes of stuff, yes, the game works just nice and doesn't need a CD at all.

The patch following the reinstall fails spectacularly, however:

loki_patch: dynamic-link.h:57: elf_get_dynamic_info: Assert-makro "! "bad dynamic tag"" ei pidä paikkaansa.

Soooo... the program used by the patcher uses a dog-ancient tricks or something. The patch is just a mysterious executable full of binary crap? Are we doomed?

Well, no...

Stripping away the first few lines of the smac-6.0a-x86.run file, it turns out the file itself is just a .tar.gz file. Blowing that away, I get a small bunch of files: a few shell scripts, a file called patch.dat and what seem to be replacement files. The replacement files turn out to be in "xdelta" format. The patch.dat file is straightforward: Just look at the file name, old MD5 checksum, new file's MD5 checksum, run the xdelta, compare the checksums with patch.dat just to see if it went right, and move the new file over the old file. Tadah!

Still, I'd prefer something a bit easier next time...

Copy protection still sucks

| No Comments | No TrackBacks

Wayyy back some time ago, I bought the PC version of Sudeki. Of course, I didn't have "Windows 2000 or better" at the time, and I sure don't have Windows 2000 or better now, either... so actually playing the game has been kind of impossible. I just bought the game to send a message that hey, more games with Finnish lead designers would be a good idea.

Nowadays I'm Windows-free, and all of my PC stuff happens on Linux. I now happen to have a spare hard drive that's only "almost" dying. Wouldn't hurt installing Windows on that and loading up all sorts of game crap on that and play games... would rule to work on Neverwinter Nights mods again, or play Morrowind! Would be pain to open the computer and unplug my main hard drive and install the spare hard drive every time to play the game though...

...um, wait, why a completely separately used hard drive? You can put two drives just fine on one IDE cable, right? It's possible to dual-boot between Linux and Windows, right? GRUB is love and universe and life, right?

The thing is, way back then, I heard Sudeki has a sucky copy protection system. Apparently, someone had had their Linux partitions ka-boomed. (I guess they just got their MBR blown off, but I can't be too sure without testing myself.) If I unplug my Linux drive while using Windows - well, let's see that copy protection stuff try mess with that!

What's with the remembrance of things past? Well, just today I heard of a fun copy protection system StarForce that installs itself as a Windows device driver, completely messes up the IDE access (now this is starting to sound pretty typical) and does other interesting things.

I was not at all surprised to find Sudeki from the list of games.

(I would post about this to the Boycott StarForce site, but since I haven't checked my e-mail this week and need to download my spam again when I have time, I'm temporarily boycotting forums that need e-mail addy to register... =)

Oh, and I wish to say StarForce messing up Linux partitions is just hearsay and I can't remember the site where someone said that. Apparently, StarForce can't take critique.

Now that I'm a full-time Linux user (though at the university I sometimes also use Macs and I sometimes have to Fix Windows Stuff when people somehow think I'm the Computer Guy, to which my reply is usually to look at the computer dumbfoundedly for half a hour, run Spybot S&D and install Firefox and tell them to Never Touch IE Again), may I ask what the hell is going on in here? The last version of Windows I used was 98SE, and a few years back everyone was saying "hey, switch to 2000 or XP, that's more stable and more secure." I could understand the malware concern in 98SE where everyone can install everything. I run Linux. XP is supposed to be up to the caliber. So here we have a game that needs Windows equivalent of "modprobe lazily_mess_with_ide.ko" to run? I'll stick to my Linux binaries from those thoughtful companies that care to port their games, thank you very much. And this GameCube and DS thingy.

In related news, everyone should try playing Neverwinter Nights on Linux - It doesn't use the SafeDisc copy protection found in the Windows version, I can't even remember when I last time took out the game from the box...

Hello darkness, my old enemy

| No Comments | No TrackBacks

(Hello, I thought it might be good to not only critique the UI of the games, but also some bad design flaws. I hope this directory will fill up.)

One of the worst problems when I play CRPGs is quite simple: Game developers don't know what darkness means. Sure, every one of us who work on computers know what darkness means. Nobody just bothers to think what it really is like to be in dark in nature.

People probably think this is nitpicking, but I say it anyway: It's possible to see in dark. Above ground, nights are rarely completely lightless. Summer nights are usually pretty well lit, even here in the near-arctic land of darkness. For comparison, the winter nights are pretty dark, but you can still see somewhat.

The point I'm chasing is this: Even in the worst imaginable night conditions, the most annoying thing that can happen to you in a game is that you can't read. There's plenty of light to make sense of the surroundings, even on a very vague level. Right now, it's midnight, I can pretty much find my way to the fridge (if there were anything in the fridge, that is).

Games frequently overdo the darkness, not only making things too dark, but also failing to compensate on the fact that other senses are also suppressed. In many games, if it's dark, you can barely see where you are going. Realistic? Arguably. Annoying? Well, if the controls are clumsy compared to real-life controls, making the screen dark won't help things at all.

I was rather joyous when I heard Bioware wasn't going to do "accurate" version of Underdark in Neverwinter Nights: Hordes of the Underdark. Instead of a campaign in utter blackness of the eternal night of Underdark, here we had a moderately normally-lit experience - the game was beautifully merciful.

If it's not possible to let me sense, please let me be able to see.

Network storage in stone age

| No Comments | No TrackBacks

I'm back from at least part of this summer's travels, probably more travelling to come. Which reminds me of an issue I thought of a while ago.

When Microsoft was announcing XBox 2's supposed lack of hard drive, people were assuming this meant complete and total move to server-stored profile and game data. Personally, I guess they're just using some memory card system or other. The following is just some pondering on how this supposed "Game Passport" idea might fly today.

I live in a rather technological area. Here, I have broadband Internet connection and if I felt I would have any need for networked gaming on console (net gaming is for PCs only, dammit!), it might be possible to arrange it.

In these travels, I simply picked up my Gamecube, put the thing and the games and cables into bag, and away I went. My game saves were on a memory card in my wallet. When I got to my destination - considerably less hightech neighborhood, with decent computers but where 56k modems are the height of communications tech, with lost hope for ISDN glimmering in the people's eyes - I simply unpacked the stuff, plugged the thing to my Commodore monitor, and there I was, playing SSBM.

Now, let's see how well this thing might with our hypothetical network-aware microboX NetExtremePassport in year 2008. Let's suppose Nintendo and Sony had bowed before the will of Microsoft and all console systems were finally standardized and united in harmony... yet leaving Trip Hawkins weeping on 3DO's grave.

I'd arrive to my destination, drop the Gameicosahedron on the table, and plug the thing to the monitor and wall. Then, I'd find the huge three-prong plug telephone cord, plug the other end to the tiny little RJ11 on the back of the unit... wait, I'd probably have to plug in an external modem first - after all, no one's using these modems in 2008, at least in sweet theory!... and then spend next 15 minutes messing around with the controller and putting these modem settings right. (Presets for multiple locations? Surely no one will use the thing in multiple locations? Huh? Some NetExtremePassport licensee making a portable console?! Unheard of!)

And then, finally, everything is set up. I'd hit Connect. Modem handshake. Wailing. Wailing. Wailing. Modem handshake. Wailing. Wailing. Modem handshake, with hang up in middle. Reconnect in 10 seconds. Modem handshake... and so on. (Don't you love mysteriously low-quality rattling phone wiring? No wonder they invented error correcting protocols!)

Connecting to server, slow as usual. Wait, it's down. Retry in 5 minutes. Yaaaawn.

Skip some frustrations. Wind Waker's data, for comparison, would be close to a mebibyte, if I calculated right (which I probably didn't). That's a couple of minutes of waiting. And the games of 2008 are probably even more save-space-hungry than current games...

Oh, and when I save the game, I'd have to do all this connection nonsense again.

And somewhere, on the comfort of their couch and a broadband network, a lone gamer reads the message from their screen: "The server is down. Apologies for the inconvenience." Another night that was going to be wasted on playing games is going to be spent on even more pointless things.

Argh, this is too silly to even think of. I was going to say that networked game data storage isn't going to happen as long as communication systems are what they are, but instead, I'm just going to say that networked game data storage isn't going to happen - things over the network are always going to be slow and frustrating.

As an option and alternative, it is going to work, but never ever as the primary save method.

The following is edited from (and translated from) an E-mail I sent to my sister. My sister claimed that GameCube was said to be an 128-bit system, while I was thinking that since it's a PowerPC system, it can't possibly do more than 32 bits - and who cares if it can't do more than that, anyway, I've been a happy user of 32-bit computers for quite a time now, all of them have been quite good for their time. Note that I'm not a hardware guy and last time programmed in Assembler for C64, so this might not be 100% accurate either.)

After some research (consulting Nintendo's specs and the Wikipedia), The GameCube's PowerPC "Gecko" processor is indeed a 128-bit one, though this isn't for all kinds of oprations.

How many bits a processor has is, these days, not very relevant. The most important factor when considering the processor speeds nowadays is the clockspeed measured in megahertz, though even that isn't comparable between two different kinds of architectures. In other words, a 1GHz Intel Pentium4 isn't as fast as 1GHz PowerPC or even a 1GHz AMD processor, even when P4 and the AMD are mostly compatible with each other.

"Bitness" measures one thing in the processor: How much data the processor can handle at a time? Specifically, how much data the processor can handle with a single programming instruction?

The problem is that modern processors don't process all information in equal sized chunks. The larger chunks you process, the slower it is, so different kinds of hardware should only be processed at the precision that is absolutely necessary.

The GameCube processor can handle

  • 32-bit integer operations,
  • 64-bit decimal operations,
  • 128-bit SIMD operations, that is, processing a large dataset in parallel, or some other voodoo stuff, please don't ask me for details.

So, GameCube is 128-bit, but only for certain types of operations. This is, however, better than the competition (see below).

Most part of the code will use (the 32-bit) integer mathematics anyway, since it's the fastest to do. But let's not forget that the processor can do 128-bit operations. Therefore, it's justified to call the console 128-bit.

On the other hand, we can just say that Nintendo 64 is 64-bit but only for certain operations. Playstation 2 is 128-bit if you do vector operations - but not otherwise. Atari Jaguar isn't exactly 64 bit since it can do 32-bit stuff in two different processors. Well, with that logic, PS2 isn't 128-bit either, because vector processor unit is separate. And XBox has an almost ordinary 32-bit Intel processor, which, due to cost, has been made less powerful than an equivalent processor found in PC component stores.

Also, what's noticeable: Nobody needs more precise operations than this. 32 bit integers will take you far, and the program can, if necessary, simulate a larger number range with programmatic tricks (hell, people did 64-bit calculations on ye olde Commodore 64, which clearly couldn't do more than 8 bits itself! And that processor didn't have any damned decimal operations either!)

So, let's just let the people who wait for the era of "256-bit" consoles. The technical progress is breathtaking, but the ambition is restrained by practicality - 64 bit integer operations (and 128-bit floating point operations, once the <acronym title="Institute of Electrical and Electronics Engineers">IEEE invents and standardizes them) might appear on the popularily used processors in near future, but no one in their right mind is going to make a processor that handles 256-bit integer operations! It is more likely that a new data processing technique using 256 bits at a time (similar to the SIMD mentioned above) is invented, added to the processors, thus justifying to call them 256-bit processors.

Not to even mention the size of the address bus - in other words, it might be pretty cool to use a computer that can have 1.15*1053 yottabytes of memory - nice how we've run out of SI prefixes for powers of ten long ago - but no game can require that kind of memory space. Well, I don't think there's even enough atoms in this universe to build that kind of memory...

So, what do we learn from this? The marketing people are always pulling the engineers to the dirt by telling about things that aren't exactly true - because explaining the whole truth might take some time and the "masses" wouldn't understand them anyway. Someone ought to tell the amrketing people that it doesn't matter, they should rather make sure the games are better than the competition's games =)

Start, dammit!

| No Comments | No TrackBacks

...or, some idiotic nitpicking on how to get the game running.

Here's one of the things that bugs me on modern console game UIs: The inability for the game to start when I tell it to.

Take Metal Gear Solid: The Twin Snakes as an example. The game begins with title screens that proudly displays the logos of Konami, Silicon Knights and Dolby Pro Logic II, and then comes the opening intro, as epic as ever.

The problem is this: I've already hit the Start button several times. The game doesn't react to the start button presses until the opening intro starts.

I'm well aware of Nintendo's insistence on having the game display all sorts of logos before the game developer can legitimately start their intro. But why can't the games register the button press? They can show all logos they want, but I want to push the button once, only once.