Thursday, April 27, 2006

I Caved

Okay, so I buckled. I picked up Oblivion over the weekend. I'm weak. I admit it.

Oh, and not just the normal version that was $12 off at Fry's. Although that's the version that sold me. For some reason I thought "Wow! Oblivion is just $37! I need to pick up a copy! And since I decided to pick up a copy, I should get the collector's edition? Why? Because I fear that the greatest regret in my life will not be owning the replica GP or behind-the-scenes footage." Jeesh. I'm such a tool.

One day I hope to sleep again.

Wednesday, April 26, 2006

We're Old.

I'm old. Gamers are getting old. Developers are getting old. We're no longer in the realm of the grey-bearded big-iron mainframe developers vs. the cowboy CS-kid desktop developers. The legends of the DooM generation are getting older: Carmack, Wright, Spector - hell, even Gabe and Tycho are middle-aged with families. It blows my freaking mind.

Warren Spector published a quartet of articles in The Escapist about the where the industry is headed. In one instance it seems to be the shadow of big companies getting ready to smash independent developers into a gooey paste, in another he talks about how innovation and independence can spell the industry's salvation.

One particularly nostalgic (although that's not quite the word...) quote was

Maybe this is just a personal problem - a result of my friends and me getting older. Priorities change. Interests change. Time for games seems tougher to come by. Or maybe my values - notably a fascination with
innovation, novelty and forward progress on the story and design side of things - aren't shared by the folks who make up an increasingly international audience. Maybe it isn't games or the game business that have changed - maybe it's me.

Jeff Vogel voiced his opinion on straying outside the norm and how dangerous that can be for an independent developer. Wander too long off the beaten path and you may find it hard to get a lot of buyers on board. However, it could be that the trick is really in finding the right market to land in. Like he says:

There is nothing scarier that aiming at a market that doesn't exist yet. It might not exist at all.

It's like Warren spells out in his article...

GTA clones are making money hand over fist. All we have to do is keep making them until players tell us to stop.

So now gamers are getting older and getting families. Want to know the way to hit that demographic?
  • Load times should be in seconds and not minutes. I should hit an icon, here a few clicks of the hard drive and be able to pick up right where I left off. I'm tired of skipping through layers and layers of splash screens, logos, intro videos, copyright text, menus, etc.
  • If I log in to my machine, I should see my own savegames and restore my own convoluted settings. If someone else logs on to the same machine, they should have their own save points and key bindings. Linux has been doing this for years; how hard is it to write preferences to the user's home directory?
  • Make play controls so simple it's almost sophomoric. Carmack definitely had the right idea when he made the user interface limited to just a handful of keys... you don't need to bind the entire keyboard for a FPS.
  • Break things into digestible chunks. You should hit natural "breaking points" often... there's a good chance that you'll forget what the hell is going on in some long convoluted errand when you can only do ten minutes at a time.
  • Sunday, April 16, 2006

    Proximity Hacks

    Visiting the local Fry's I found the infamous USB Wireless Security Lock for... if I'm reading the rebate receipt right... free. The price was right, so I picked one up. I had seen some hacks and descriptions of it previously and the concept intrigued me. Basically it's a wireless USB mouse's guts ripped out and put into a keyfob and a USB dongle. It's recognized as a mouse under Linux, but someone wrote a driver for the 2.6 kernel that seems to create a unique device node for it if you bypass the regular hotplug routines. Another person seems to have created a more mainstream driver and is trying to get it into the latest mainstream 2.6 kernel. Don't know if it actually landed there or not...

    Edit: I was able to get things working quite nicely. The example at worked well - thankfully it was written to be as modular as possible. I wrote my own script to lock/unlock KDE's screensaver, and just had to make a few minor hacks to hid-core.c and wslxsctl.c so the USB kernel module would ignore the vendor id / device id of the key and the userspace app would listen to it.

    It doesn't appear to be validating the unique ID sent by the keyfob however - so I'll need to code that part.

    Bad Mojo

    Sooooo... it's been a week filled with rampant chaos and wanton destruction.

    First, I noticed my smoke detector was making some odd chirping sounds. I took out the 9V backup battery and noticed it had slightly bulged at the end. Examining closer... it exploded in my face.

    Yeah, that was neat. I set it down and attempted to wipe the chemicals burning into my flesh when it exploded again and launched a payload of alkaline across about 10' of wallspace. Greaaaat.

    Speaking of batteries, my UPS started neither supplying power nor was it interruptable. The battery in my UPS was nearing the end of its warrantied lifespan, at which point evidentally it starts making a noise like a badger trying to claw its way out of a plastic trashcan. It also abruptly shut off all power to my home office e-mail/media/print/proxy server, rendering most of the stuff I need to do during the workweek useless. I spent most of two mornings in my bathrobe underneath my desk trying to get the freakin' thing to do a cold start, reset and come back to life. The battery is still dead, but at least now it's sending power. You'd think that despite a dead battery power would still flow to through the outlets at least, but alas that's not so. Great way to start a couple of mornings.

    I also spent several late nights trying to update several Java application servers in a cluster... but after hacking into the wee hours of the morning one freaking application wouldn't start. I spent the majority of two days working on finding a solution. The problem? The hostname went from case-insensitive to case-sensitive. That's it. Dammit.

    Wednesday, April 12, 2006

    J equals :)

    Did you know there is now a work-appropriate emoticon?

    Now everyone in business correspondance is using 'J' to mean :). I didn't understand what the hell they were talking about until I looked at the HTML source of someone's e-mail to me... 'J' is a ☺ in the Windings font.

    But if you're like me and you don't have Wingdings, your e-mail client overrides fonts or you don't give a crap, you just see 'J'.

    For some reason, it just drives me up the freakin' wall J

    Tuesday, April 11, 2006

    Organically Growing Content

    Digging through my old GMSV e-mails that I haven't read yet, I found a link to this video of Will Wright talking about the exponential level of effort required for content generation. I've hit upon this point many a time, since it's kinda the mantra of the independant game developer: you can get around having a team of content artists & developers if you're smart enough. For example, user generated content (such as in Second Life) or procedurally generated content (such as the new Unreal engine) or a mixture of both (as in Spore).

    Will talks about his latest work on Spore, and how being smart about content creation allows you to avoid the mega-teams required to create the next Morrowind. Note the applause in the video when Will suggests an alternative to nonlinear levels of effort required to build titles... I have a feeling there were a lot of one-person shows in the audience...

    Monday, April 10, 2006

    Gaming FM Back Online!

    One of the few stations that makes Internet radio interesting, Gaming FM, is back online after a LOOOOOOOOOOOOOOOOOOOOOONG hiatus. One can only guess why the hell they were offline for so long, but their great mix of ambient, arrangements, remix and standards was pretty much irreplaceable. Hats off to all those forum users who never gave up hope, and the Gaming FM crew for finally coming back.

    Sunday, April 09, 2006

    Back to Pluggin'

    The initial novelty of SecondLife has kinda worn off on me... so I'm working on getting back into productive work again. I spent some time learning SecondLife's scripting language with the vehicle tutorial, and got a floaty balloon thingy working. The fact that you can add arbitrary scripting, animations, texture mapping, etc. to objects within an MMO is a pretty nifty concept. You can see from ninjafoo's blog and the SecondTux wiki there's a lot to talk about in the Linux client, but little to discuss.

    I managed to prevent myself from purchasing Oblivion again today. Thanks... I was pretty proud of myself too.

    I'm working on getting ConsultComm 3.1.2 out. It's been long delayed because I keep adding extra crap - a revamped plugin manager, a Java WebStart launcher, kicking out the platform-dependent timeout plugin, making my TableTree a separate component, etc. Finally I had so much scope creep I decided to kick out all the new changes, save it for a future version, and instead just fix bugs and push out a minor release. I have so little time anymore, all the new features I want to create just don't have much of a chance right now.

    Sunday, April 02, 2006

    Fun SuSE 10 Advanced Desktop Hacks

    I've been attempting to use Linux exclusively for my personal desktop for about a year now, and it has gone surprisingly well (when I don't go without sleep and accidentally reformat my entire freakin' drive, that is). I've learned a few nifty hacks along the way that has made my life inside of KDE that much sweeter. Such as:

    You can allow Linux to use WINS for native hostname resolution (like what Windows machines would do if you have a directory server) by installing samba-winbind and hacking /etc/nsswitch.conf to have the following line:
    hosts: files lwres dns wins

    and then restarting nscd. Since your WINS server is responding to your computer from a broadcast message you may have to open UDP ports 1100 to 1200 on your firewall config; responses are sent back to those ports with NetBIOS.

    EDIT: Ports 1100 to 1200 are conservative - in actuality NetBIOS sends back on a somewhat random (but seemingly incremental) UDP port between 1000 and 4000. That means you actually have to open ports 1000 to 4000 for UDP wholesale - which of course major league sucks for security. However, it appears even Windows Firewall has to do this - talking to the local security expert I found that Windows Firewall briefly opens up this port range during NetBIOS queries. Ugly design? Hell yeah.

    You can automatically mount/unmount remote directories and file shares upon login, using pam_mount. This adds functionality kinda like Windows' "mapped drive," except it uses Linux' central authentication mechanism and your mounted drive can be absolutely anything you want (NFS, Samba, a local file system, etc). First, change /etc/pam.d/xdm to have
    auth optional use_first_pass
    session optional

    Next, modify /etc/security/pam_mount.conf to add your mount point. For example, I want to have users' individual shares on my file server automatically map to their Documents directory in KDE. To do that, all I need to add to my pam_mount.conf is:
    volume * smb fileserverhostname & ~/Documents uid=&,gid=users - -

    Things are then automatically mounted/unmounted as they login/logout of KDE.

    I like to allow passwordless logins for two accounts. Both of them have very restrictive access, and both are basically setup in kiosk mode. Since the accounts themselves are pretty locked down, I don't need to worry about someone walking up and using the account. That's pretty much what they were designed for.

    SuSE by default, however, has a special "local" configuration in SuSE 10 that you can't override using their admin tools in order to skip local password authentication in KDE's login manager. To do so, you need to edit /etc/opt/kde3/share/config/kdm/kdmrc and remove the sections [X-:0-Core] and [X-:0-Greeter]. You can then use KDE's Control Center to administer the login manager and allow passwordless logins.

    For some reason that completely fails me, SuSE doesn't allow users to share devices by default. This means if you use KDE's "Switch User" functionality the second person logged on won't be able to connect to your sound device.

    To remedy this, modify /etc/logindevperm. You'll see the octal mask for file/device permissions in the second column, along with a list of devices in the third. By default everything is allowed to run only with single user permissions, but for things like sound we want to open it up for everyone. Change the file to have 0666 permissions on devices you want to open up, such as:
    :0 0666 /dev/dsp:/dev/dsp0:/dev/dsp1:/dev/dsp2:/dev/dsp3
    :0 0666 /dev/sequencer:/dev/sequencer2:/dev/music

    Saturday, April 01, 2006

    Sittin' By the Dock

    I have no idea what the allure of Second Life is. No freakin' clue. BUT I CAN'T LOOK AWAY.

    Maybe it's the convergence of user created content in a massively multiplayer world. Maybe I just want to show props to someone who's willing to launch a Linux client. Maybe I'm interested in something that has its own self-contained scripting language (which is pretty damned cool). Maybe.

    But for some reason I'm content to sit on the docks and watch the sunrise over a lake. And sometimes watch a helicopter out of control go spiraling by. Why? I have no freaking clue.