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 www.schau.com 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 pam_mount.so use_first_pass
    session optional pam_mount.so


    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.

    Friday, March 31, 2006

    Why I Must Resist Being Pulled Into Oblivion

    I remember back in the days when I had free time, I decided to shop around for an RPG. It was a toss between Baldur's Gate and Morrowind. I heard about the open-endedness (is that even a freakin' word?) of Morrowind, so it one the day. I remember when I first popped it in and my GeForce3 starting spewing out frames.

    I think for the first week solid all I did was take screenshots. I wasn't so much a player character as I was a tourist.


    Now, believe it or not, I'm sitting here doing production code moves and listening to the Morrowind soundtrack in VLC Player. Even if I can't play I'm still hideously hooked. That's how freaking engrossing Bethesda makes things... they put your cortex right in the world they created and never let it go.

    That's why I fear Oblivion. I may lock myself into the den and never reappear.

    Wednesday, March 29, 2006

    Too Many Ideas

    I just got back from TheServerSide's Java Symposium. A great conference... it was definitely interesting seeing the faces behind the big names in Java. Now I'm overflowing with ideas for both enterprise Web apps and ConsultComm, but I'll be damned if there's any time to see them happen.

    Epic is now getting press for the Unreal 3 engine, which they're saying will be more of a platform for studios to launch titles with. An interesting point in the engine and tool's feature set is dynamically generated landscapes. Considering how levels are expected to be insanely vast nowadays, dynamic terrain generation is going to have to become the norm. Next dynamic content generation (augmented by tons of user-generated content) is going to have to be standard if you want your development team to be slightly less in size than, say, Texas.

    Speaking of user-generated content and severe addictions, Linden Labs has secured additional funding for Second Life. And, like a true cookie pusher, Icculus brought the Second Life Linux client up-to-date. This native client may just hit beta after all!

    Oh yeah, and I've become so... mentally absent due to lack of sleep that I kinda reformatted my entire hard drive, wiping out my partition table along with it. See.... ummm... my OGG Vorbis player used to be on /dev/sda. Soooo... if I wanted to reformat the drive, I'd just need to reformat /dev/sda. But... well... then I got a SATA drive. I can tell Linux hacks are already rolling their eyes at what's coming next... and they're right. Since my new drive is on the SCSI device block, my player moved to /dev/sdb. My hard drive is now /dev/sda. So, not paying any attention at all, I tried to reformat what I thought was my OGG player. But... ummm.... nope. It wasn't.

    So now I just reinstalled XP, have so far rebooted over ten (not kidding) times, and am trying to restore the backups I was luckily able to make. I'm kinda cheesed that openSuSE 10.1 isn't slated to be released until April 13th - meaning that it's pointless to install an older version now, but I also can't wait another two freakin' weeks. I'll have to make do with my Wintendo in the meantime. Grrrr.

    Monday, March 20, 2006

    GPU - The Next FPU?

    What was the difference between a 468/SX and a 486/DX2? The additional floating point processor. Hellz yeah.

    In the budding days of personal computers and 486 goodness, CPU's were strictly integer machines. Floating point math was simply too much for the little chicklets that didn't even need active cooling. I recall that back in the olden days of ISA cards and SIMS you could purchase separate FPU's that you could hammer into your brute-force socket... this granted you massive power that your Excel spreadsheets never previously dreamed of.

    I recall how up-in-arms everyone was that Quake actually demanded a freakin' FPU. Who'd id think we were, Rockafeller?

    Now that graphics cards have become cheap, plentiful and pretty freakin' powerful vector processing has become all the rage. Projects like BrookGPU and GPGPU have made it (relatively) easy to create userspace apps run on a GPU just as it would a CPU. This means your GeForce 7800 could work on certain serialized tasks, crunching numbers while it remained idle between SecondLife sessions.

    Of course, GPU's are just good for vector processing, which means only a certain type of algorithms are really suited for it. You don't need to look much farther than critiques of IBM's Cell architecture to see how people feel about a rash of vector processing units versus a CPU that can span and branch effectively.

    It was interesting to see that Nvidia and Havok have teamed up to offload physics to the GPU. Bear in mind this doesn't work with an actor's physics since it branches and can't be effectively streamlined or predicted, but does extremely well with cloth and particle physics.

    Nvidia could be realizing that Ageia's physics accelerator is a more than vaporware, and is stepping up their offering to get into that product space. However, from the specs it appears that only Ageia's PhysX (*groan*) will be able to handle physics asynchronously. Although, I guess if you run physics calculations like shaders you could send multiple calculations down each pipe on the graphics card itself.

    Should be interesting to see how the space pans out. The GPU is quite a hoss nowadays, and needs extremely fast access to memory, so it may not be incorporated as a side-by-side processor or on-die any time soon. But still... one has to wonder if multiple fast vector units are the next big thing to go on a proc.

    Saturday, March 11, 2006

    Userland, Not Wonderland

    So... I've been engrossed in Second Life now. Before I could never justify trying it out. Then they dropped the price to "free." Then they provided a Linux client. I buckled. So sue me.

    On the forums for the Linux client things devolved, as they always do for Linux gaming, into the extremely stupid "all packages are incompatible and unlinkable" debate. The crux of the issue is that people claim libraries are always changing in Linux distros, so that you can never dynamically link to libraries. People argue that this makes it impossible to offer a single, standard installation or provide supportable, sustainable products.

    Of course, this hasn't stopped Epic, id or Introversion. Not to mention the zillions of enterprise applications that are written for Linux. The ones that, if they break, cost companies downtime and lost revenue. The moving libraries argument is shallow at best, especially in light of the many successes people have had with deploying commercial software packages to Linux distros.

    Now, if they wanted to complain about the lack of unified package management or still immature video drivers, that's something different. While Linux at least has package management, most put it aside and instead just use a GUI installer (such as Loki's).

    While we're on the subject of drivers, I noticed that Vista will be running most drivers in userland space, presumably so they can be loaded/unloaded easily without tinkering with the kernel. I hope this is something that is implemented solely by design and not due to some abstraction layer. While it was a great idea back when NT 4.0 decided to run drivers in userland, hiding things by its hardware abstraction layer put some serious restrictions on what drivers could do. I recall that DirectX was a real headache for Microsoft to add to NT, mainly because of the barriers HAL put in front of direct hardware access.

    I actually think Linux handles this fairly well. While it's a monolithic kernel (I'm not going to get into the whole Tanenbaum v. Linus debate), allowing module loading/unloading/dependencies seems to work very well. While you can still get a nice kernel panic from a errant driver, for the most part modules behave fairly well. Well enough that I recall an interview with Linus (I can't find the article) where he thought that developers needed to be less afraid of running in kernel mode - too many were running to userland to invoke code.

    Then again, what the hell do I know. Most of my CS knowledge is leaking out of my head. Microsoft may have it right and I have it wrong. I always cringe when I hear "drivers in user space," but if you constantly get bad press for someone else's crappy drivers crashing your OS I guess there's no good alternative.

    Thursday, March 09, 2006

    Create Your Own Content... 'Cause It Takes Us Too Long Otherwise

    Kotaku had an interesting article about how user-created content has started to supplant studio-created content. The gist is that creating content by artists and developers takes waaaay too long... and studios are starting to come up with creative ways to get around the issue. Procedurally generated content is one solution - but another approach is to make content generation part of the game.

    Second Life is the gold standard of this approach. It's not a game per se - it's a world where users can create whatever they want and make their world whatever they wish. The Sims did this somewhat, although the content is largely generated from the mod community rather than making it an in-game mechanic.

    Spore is supposed to really take advantage of both user-generated and procedurally generated content. By creating your own... whatevers... that evolve into something on micro and macro scales.

    Now that Linden Lab has released an alpha build of their Linux client long at last... it looks like I'm going to have to check out this trend first hand.

    There goes the last of my productivity...

    Wednesday, March 01, 2006

    Just One Small Tweak...

    Blech. So I was working on finishing my ConsultComm changes in January, then had to pass out for a LOOOOOOOOOOOOONG while. Now I try to pick them back up and - presto - I'm starting to get into scope creep.

    I'm just trying to fix a few final bugs, but then blammo NetBeans 5.0 comes out, along with a new Swing layout that actually makes sense. So I upgrade and start tweaking form layouts. Then blammo, SourceForge launches its subversion service, and I feel compelled to migrate. Then blammo, someone I know gets an OS X machine, so I can finally test OS X Java packages.

    Sooo... now I went from fixing two bugs to overhauling the project. Again. Basically every major revision of ConsultComm has come from me putting the project off to the side, someone giving a really good suggestion, picking up development again just to do the one last tweak, then ending up rewriting the entire ConsultComm codebase.

    I haven't been coding in a quite a long time, so hopefully I can get back into the groove. I'm firing up my Groove Salad.

    Monday, February 20, 2006

    Rise of the Casual (Mobile) Gamer

    NPR had an interesting piece during Morning Edition about the challenges and potential of mobile gaming. They had a very critical point in the end - the same one I found impossible to surmount when doing trial J2ME development. You can develop an app just fine, but then how do you copy the freakin' bytecode to your phone?

    For some people this is easy - the phone might be bluetooth or cradled and show up as a removable device. But, by and large, who is going to have a phone that can? And if it can, are they even going to bother?

    I was working with a Samsung, and if I wanted to do some file transfers I'd have to find some weird USB data transfer cable from some off-shoot accessory dealer. And even then there's no guarantee - a consumer phone isn't made to have an easily-writable file system.

    The alternative is to send files via SMS or the cellular network. This is also the most sensible way for casual users to get files... but do you always send via SMS? Does your carrier charge per kilobyte? In the end, it's still a pain in the butt.

    This is on top of the per-handset incompatiblities and problems with event handling, like what Carmack found when he first started to dabble in J2ME gaming.

    Casual and J2ME gaming has great potential - and a potentially HUGE market. But first it has to be easy to jump into, for developers but more importantly for consumers.

    Wednesday, February 08, 2006

    Addicting... For No Reason

    Why the freak can't I stop playing this? Is it even really "playing?" More "dorking around with some particle algorithm?"

    The original "World of Sand" is posted on someone's blog, but was redone at a larger size & colocated at http://chir.ag/stuff/sand/.

    I attempted to find out where the original poster got the game, but Google's translation mechanisms leave something to be desired. Among the translated comments:

    "Sentence of letter non-commutative field of stain coming When please insert the bomb that it hits against the fire, the kind of explosive which explodes we ask"

    "When to lick the lottery or stick human can be killed with this function, pleasantly so."

    "It increased in the enormous pleasure. Don't you think? good ッス petroleum W Furthermore still the element increases, because it is is, it is the pleasure.
    Unless you must surround either side, as for, being a little sad, (no Please persevere even from now on."

    "When you burn the slug with the water, in the picture イッパイ The fighting spirit which < burns! Slug you! > The ネ which becomes"

    Sunday, February 05, 2006

    Invisible Currency

    I manage a team... kinda... that writes e-Commerce applications.

    Can I call them something other than e-Commerce applications? I hate that name. It's a crapton of sites that sells stuff. Umm... online storefronts. Yeah. That's what I'll call them.

    Anyways, I've always resisted integrating Paypal into our checkout process, mainly because of a) fraud issues b) liability issues and c) I'm busy doing other nonsense, like AJAX. I never saw it as necessary... I mean, who pays out of their Paypal account? No one. They transfer the cash to a checking account then use it from there. Right?

    Well... I gotta confess... I paid for something out of my Paypal account. Someone donated something to my pet open-source project, which made me as giddy as a schoolgirl. But I didn't use the donation for anything.

    Then I found out that The Office was available via iTunes. I had a steaming resentment in my belly that I hadn't seen any episodes from season 2, so I took a peek at what I could buy.

    Whaddaya know... iTunes just recently added Paypal as a payment option. And I had a balance. And I had a burning in my loins to pay a deuce and watch an Office episode. So I transferred money from some stranger via another stranger to a third stranger... and was watching my beautiful episode in a few minutes.

    I guess there is a use for Paypal after all. For those of us with less money in Paypal than under our couch cushion, maybe random transfers like these actually make sense.

    Sunday, January 29, 2006

    Woozle Wisdom


    Our first job is to make this world a lot of fun to visit. It is a high energy raucous musical romp. It's a lot of silliness. It's wonderful.
    However, the second thing that we're doing with this show is saying something. The show has a direction and point of view. This will be beneath the surface, and if anybody becomes very aware of it, we will have missed.


    - Jim Henson, in his original sketch book where he brainstormed a show called "The Woozle World," which latter was renamed "Fraggle Rock."