Sunday, July 09, 2006

Boxing Kicked My Butt

Waaaay back at the inception of this blog I wanted to start working on some proof-of-concept game, mainly to try my hand at physics and collision detection. I didn't even really want to get into art and animation at the time - I was more into the code. My first thought was a quick boxing demo, since I could wrap collision detection, reactive animations and ragdoll physics into it.

Generally when I learn, I like to place what I learned into this huge document that has become the source for the tutorials I post. And since I had to learn how to build meshes to be collided upon, the first chunk of my tutorials was how to build sprite meshes.

So I began mesh building. Once I found out MakeHuman meshes were a bit too detailed, I started to build my own. Nine months later I found out how mesh building wasn't something that could be glossed over; I had to figure out the hard way how crucial concept art and reference images were. I didn't even get to scratch the surface of texture building... just building and animating meshes kicked my butt.

Since I had a newfound respect for concept art and texture building, I figured I'd better learn a thing or two about art concepts. That's what started me down the current track of learning the fundamentals of drawing, so I have concept art to use as reference images for my meshes. And maybe learn a thing or two about colors and textures for my UV maps.

So, for those of you just tuning in, boxing -> coding -> mesh building -> reference photos -> concept art -> drawing classes. Basically I'm having to take grade school art classes in order to figure out how to build meshes, and get me back on track to where I was eighteen months ago.

Even given all the work I've put into building the foundations of my lil' demo, I'm considering ditching it all for a change in focus. It seems there's a budding new game genre that would accomplish my earlier goals much more readily: physics toys. GameTunnel's review of June's independent games had two interesting titles that piqued my curiosity: Soup Toys and Armadillo Run. I haven't played them since they're Windows apps... but both are something of physics sandboxes, not unlike World of Sand. One is more of a "desktop distraction" (like AMOR), the other one is more of a standalone engineering challenge. Both are compelling as something as a logic puzzle, but has the draw of Legos or building blocks. In a high-brow physics sort of way, of course.

Games that can easily be jumped into, run in a standalone window and can soak up just a few minutes of spare time are perfect for the current generation of casual gamers. Mixing that with the appeal of a physics toy is a pretty clever idea. And it would definitely bring me closer to my original goal of a collision detection and physics proof-of-concept demo...

Friday, July 07, 2006

Fighting for a Job

It's interesting to see how people "in the biz" have offered advice on how to get into the gaming industry. Ever since Kenn Hoekstra first wrote his article (which used to be hosted at Ravensoft's Web servers) on "Getting A Job In The Game Development Industry", several developers, project managers and have jumped in to offer their advice, including Tom Sloper's "Game Biz Advice". Just recently Chris Avellone offered insight on what employers actually look for nowadays and Steve Bowler retold his anecdotes to talk about how to stay in the industry.

It does seem that the ages-old mantra of getting in at the ground level may not apply nearly as much as it used to, at least to hear recent accounts of bug hunters. But there are several points that seem to reoccur:

  • Be professional. You aren't applying to be a lifeguard at the community pool. Treat this like a real job, because it is. Evidentally 90% of the people fail at this task.
  • An impressive portfolio and experience is better than a degree.
  • Don't have an AOL e-mail address.
  • Know people in the industry. Shine their shoes.
  • Don't beg. Make people think, at least until you land a job, that you have some dignity.
  • Friday, June 30, 2006

    No More Mortar

    Small business titles, akin to Ragdoll Kung-Fu or Darwinia have always had one big problem in trying to get published - finding shelf space on the retail store fronts. I've mentioned about how developers are lamenting the current delivery methods and craving new ones, but the problem is more complex than securing a domain name to host downloads for your title. You have to worry about rights management, registration, managing credit card transactions (which isn't exactly easy and risk-free) and customer support.

    Think about how iTunes has changed the music space. Instead of augmenting sales channels they started replacing them, much to the chagrin of their brick-and-mortar counterparts. Instant delivery, cheaper costs, more portability, centralized DRM, and a single payment gateway to eat all your money. Valve's Steam deliver system hopes to be the iTunes of gaming - where titles are encrypted and assigned to only entitled machines. Vivendi's fight with Valve just reinforces the analogy... they fear that retail distribution will take a hit in lieu of digital delivery, just as iTunes has made dowloading music a palattable alternative to hopping in the car and burning petrol.

    Online gaming sales & delivery have the obvious benefit for independant game developers in that they're easily accessible by the masses, easy(ish) to use and easy to publish to. With digital delivery publishers are also more likely to take risks with unknown titles... if it doesn't sell, it will just sit there taking up drive space on some dusty server. That's a much better condition than boxes sitting in inventory, taking up space and eating up production costs. A billion titles in-stock is a "feature" when you're an online retail presence, a liability if you're a warehouse.

    It appears Microsoft's Live! service hopes to accomplish the same thing as Steam, except in the console space. Sony has the same thing lined up for the PS3 - there are signs that they're betting digital delivery to their modest hard drives could reap some possible benefits. If the 360's DirectX development continues to encourage developer participation, and Sony opens up its specs to the world at large, selling a vast catalog of even small titles opens up a whole new revenue stream. Episodic content now becomes that much easier... you can subscribe to the latest $15 quarterly release of your favorite title and have it delivered before it hits the presses. It's like having the latest Archie delivered magically to your breakfast table by mystical lil' wood nymphs.

    But it doesn't just stop at home my friends... no siree... because Microsoft is all about the "connected household." They've also announced plans to extend Live! to other platforms, such as your lovely cell phone. This has merits beyond Penny Arcade's target users; imagine a game that's persistent beyond just your console. Complete a quest on your console, solve a mini-game on your cell, and finish it off on your PC - all for the same game. A single title could have playable "fragments" that can travel with you, mayhaps sync'd to a central repository at home or on Live!

    It's a clever idea - one that's a good compliment to existing titles. Imagine working on your alchemy skill with Oblivion on your cell phone, then having your inventory reflect your changes when you sit back down on your PC. This sort of pervasive - nay, incessive - environment would keep people addicted to your title for endless hours.

    On second thought... maybe society should take a pass on that idea...

    Top 10 Signs You're Addicted to Oblivion (Continued)


    1. You walk outside into a bright, sunny day and think "wow, this HDR lighting is really something..."
    2. Your friends don't show up at the pub, and you assume it's just a quest bug
    3. You write a "Top 10 Signs You're Addicted to Oblivion" list

    Tuesday, June 27, 2006

    Goodbye WinFS, We Hardly Knew Ye

    One of the uber-cool features of Vista was supposed to be WinFS, the filesystem that was actually a database. It's not a new concept - Oracle wanted to create their own OS based on the concept (but since stuck with Linux crawling with Oracle contributions), and IBM has been doing that with the AS/400 since horses were brought to the Americas. Lotus Notes keeps most of it's file info in database tables, formatted in largely unconstrained recordsets. But those implementations were more server-centric, used to accelerate huge tables of data. WinFS was supposed to bring order to the average consumer - and finally catalog the bazillions of MP3 files we all have.

    It's a good idea when you think about it... and something that Google Desktop is already capitalizing on. Now that hard drives have reached astronomical sizes it's getting harder and harder to find that Christmas card list you built two years ago. Google Desktop extracts a basic summary out of each file - the meta-data out of the data - and keeps that in a big honkin' index. That way when you search for a file, it can do an extremely fast lookup in the index instead of sequentially looking at each individual file on the drive.

    WinFS takes it one step further... all "files" exist purely as records in a database schema. This can be pretty liberating when you stop to think about it - no longer do you care about what directory a file is in. You don't even need directories anymore. You can instead organize files and information any way you want as "views," or collections of records.

    For example, say you have a lecture your grandmother gave on neutrino collisions, saved as an MP3. In the old filesystem model you might have a folder for MP3's, a folder for family collections and a folder for general relativity. Which one do you put it in? With WinFS you don't care - you store the document once, then you can have different views called "MP3's" that show you all your MP3 files, another view called "Family Collections" that have family members in the ID3 genre, and another view called "General Relativity" that sorts off the file's topic. The file is in one physical place on disk, but is listed under three separate views.

    It's easy to see how this can be utilized with multimedia files and office documents... your music can have a ton of different, virtual "folders" by album, title, artist and genre, but the file is still only in one place. Using the old file system model, you'd have to copy the file over and over again.

    There's one problem tho: this method requires a lot of computing beef. You're basically running a massive, 750 GB SQL Server 2003 database on a consumer OS. Not only does this eat memory and CPU cycles like candy, but you also come up with a whole mess of file integrity issues. BeOS tried to do this before, but there's a slew of problems running a filesystem-as-a-database-in-userspace. First off... if you lose power in the middle of a write, how do you recover? Was the data lost in the filesystem, in the database, or when being committed to disk? What about deadlocks? If you have 5000 I/O requests hitting the filesystem at one time, to you lock the database and handle each request sequentially? Do you do some sort of record-level locking? How to you stop deadlock states from a huge queue of I/O, especially with writing out to temporary files or performing huge non-sequential reads?

    As far as gaming goes, WinFS would likely be a nightmare. Not only would your resources become sparse, but doing large sequential reads or small file lookups would suddenly become a drain. No longer can you just jump to an .ogg and start streaming it... you have to basically change an open file request to execute an SQL statement which gets the file as a record and then returns the file handle. Your filesystem with quick search time has just become an unnecessary bottleneck.

    In the end, you have to start building a journalled filesystem on top of your journalled file system. Maybe create a separate partition that's database-centric, another partition that's node (or allocation table)-centric. Then Occam's razor comes by and stabs you repeatedly, harshing you for building some weird golem of code.

    You know what ultimately can get you 90% of the way with 10% of the complexity? Symbolic links, a good journalling file system (like EXT3 or ReiserFS) and a good desktop search tool. Which is where we're at today.

    It seems as if Microsoft has finally come to the realization that a filesystem based on SQL Server was just unwieldly. They first receded WinFS' scope by just bolting it on to NTFS, tantamount to the weird file system amalgam. Now it seems they've dropped WinFS altogether, perhaps realizing that the BeOS developers had a point after all.

    We should probably all be happy about that. It's taken Linux devs log enough to reverse-engineer NTFS, after all.

    Thursday, June 22, 2006

    Oblivion: Pea Soup or Peanut Butter

    Alright... I'll do my best to stop my Oblivion rants here. I already railed on poor town loading, the invisible walls and the auto-leveling system. But the sole reader of this blog, good ol' Rocky, told me that the mod community has once again come to our rescue.

    It seems like I'm not the only one who believes Oblivion is, at times, half-assed. GameSpot's article "Oblivion: Make it Pretty" brings to light several important points. When looking at terrain deep towards the horizon, things start to look more like it was written in Microsoft Paint as an 8-bit bitmap. I didn't realize that Oblivion forum magnates already had a term for this kind of rampant pixelization: "pea soup." Right on.


    But yea, GameSpot offers an amalgam of hacks in order to set things straight, including:
  • Engine tweaks courtesy of TweakGuides, which fix water reflectivity and, like so many TweakGuide hacks, allow the engine to actually use the RAM you have
  • Fixes to texture resolution and normal maps, so distant textures scale correctly
  • Max Tael's "Natural Environments" mod, which changes weather patterns and textures to be more realistic and true to life. My jury is still out on this one; while it's nice to retexture in the name of realism, I worry about changing the Bethesda's artistic vision too much. I'm definitely of the mind that the artwork in-game is an expression of the artist, and if you change one you change the other.


    Tycho also has his list:
  • the bookbinding mod which re-skins and proofreads the books in game, and
  • BTMod, which offers a more "PC Centric" experience by reorganizing the UI


    Brad (by way of Rocky) also offered up the Open Cities mods, such as:
  • Chorrol with its city gates removed, as well as
  • a wide open Anvil. Notice both of them state the goal is to be more Morrowind-like.


    The Oblivion Mod Wiki loves:
  • Beautiful Stars and
  • a Better Night Sky
  • Stopping psychic guards from noticing you did something wrong, even if it's in a basement under a lake under a cave under a rug, and mystically teleporting themselves right into your shoes


    And Atom PC's:
  • Unarmored skill set, which was in Morrowind but somehow omitted by Bethesda in this incarnation
  • and the Actrobatics unarmored skill set, a cousin to the previous mod


    The crazy thing is these are all mods that don't necessarily add anything radically new... they fix what is already existing. There's tons of mods out there that add or enhance new content... but these are just the ones that "fix" existing content. While I might skip some of these that change the artistic vision or might cause some quests to be wonky, I'm definitely going to make the engine tweaks.

    It's good to know I'm not alone in thinking things are kinda... uncanny.
  • Monday, June 19, 2006

    The Invisible Wall

    My time during waking hours is pretty limited... so my Oblivion binges are largely limited to the twilight hours. That usually works, until my addiction becomes so ravenous I go on all-night benders that would even rival Gabe's WoW vices.

    As my time has become more precious, I've started to judge titles more and more harshly. If I'm going to throw hours of my life out the window, it had better be for a damn entertaining game.

    As my past... months of posts no doubt indicate, my current ball-and-chain is Oblivion. I'm a big fan of the American-style RPG, with it's roots in the good ol' pencil-and-paper heritage of the original tabletop role playing games. The emphasis on character building and non-linear storylines is what's appealing; American RPG's offered "sandbox" environments before the term became pop culture with the rampant consumption of the GTA titles.

    Japanese RPG's, by contrast, are much more linear and story-focused. Their roots are more cinematic, or perhaps more art-as-narrative driven. There everything fits together as a seamless whole, to be consumed instead like a good graphic novel.

    Of course, I'm being pretty stereotypical. There are plenty examples of titles from each locale crossing these boundaries, but I'm not speaking geographically, I'm speaking about the genre

    The reason I bring this up is because with the Japanese RPG's, one becomes accustomed to limitations being put on your actions. You can't walk offscreen. You can't kill off NPC's that are staples of the theme. But that's okay because you're playing on behalf of the protagonist, not your character.

    Conversely the American RPG makes you take ownership of your character. It's the embodiment of the ideal PC. And his options are supposed to be limitless. Of course, for all practical intents and purposes you can't have a game with the landmass of the whole Earth, where it takes months to circumnavigate the entire unique space. There has to be some limitation - but it must feel like a natural limitation.

    I'm going back to Morrowind (sorry Rocky) for examples. Here you have the general cop-out of surrounding the entire navigable area with water. That's a natural boundary - normally one can't swim across a lake (my lazy butt can't at least). Mountains are good too - you just make mountains so steep they're naturally insurmountable, then voila! a natural barrier. Morrowind did that perfectly... only naturally-borne obstacles stood in my way; never did I encounter some "invisible wall" which prohibited me from progressing further.

    Let's look at the diametric opposite of this design decision. Ever play a snowboarding, skiing or skating game (such as the infamous Tux Racer) where you fault skywards, cut to the extreme left or right, but only get stopped by some unseen, invisible, frictionless wall that stops you from going any further? The level designers stopped at this boundary - and so your avatar simply can't go past it. You may be able to see past it... it may appear to go on forever... but damned if you can actually go there.

    Oblivion, much to my chagrin, does both. I was just strolling happily along when I decided to fill up my alchemist's bag with St. John's wart or Slim Jims or something akin to that when suddenly I hit the infamous "invisible wall." A message pops up onscreen (I hate those messages) that informs me "you cannot go any further." What? Of course I can... I can see the damn hills beyond! Why not?

    I mean, just have some sort of archangel swoop by and cut me down. Or may some impassable gulch. Or flying monkeys. Whatever. But don't invent an invisible wall and say "you cannot go any further." I'm supposed to "live" in your world. Livable worlds don't have infinitely tall glass walls with warning messages on a console.

    While I'm on my rant, I also have to rail against Oblivion's "automatic leveling system." You see, in Morrowind everyone is basically "born" with the stats they have. When the world is generated, people have a given strength, HP, ability, weapons and they stay with them. Cliff racers, annoying tho they be, always do the same damage and can take the same amount back. The populous at large, both bandits in caves and passers-by selling hot cross buns, all retain their same level of fortitude and ability. Just like in real life. While this sucks for the character just starting out, later characters can clean house. At beginning levels you may accidentally meander into the wrong cave and be instantly mutilated, but two years later you may go past that very same cave and clear out all inhabitants with a mere twitch of the wrist. It makes those of us who were once tossed head-first into trash cans feel empowered.

    But with Oblivion, Bethesda had the idea to make the game more "accessible" to entry-level characters. The difficulty of your combat is in direct proportion to your current skill level. That way you could just stick to the main quest, hammer through it quickly and still take people down before you leveled up to double-digits. The downside to this, however, is the meager wolves that try to eat your horse's shins go from acquiescing after a quick rap on the nose to being able to survive past strikes of lighting directly up their posterior. Once just moderate wildlife, the become elevated to the status of uber-wolves wandering the wilderness. So now the random furry four-legged creatures still take a good four direct hits, no matter if you're level 1 or 100. Call me crazy, but if I can dole out 110 points of damage through my fingertips then I should be eating mountain lion flambe in no time flat. If I can survive a warhammer to the head I should be able to sustain a bear gnawing on my toes.

    Minor quibbles... I'm still addicted enough to forgo sleep just to save Bruma from the random Gallagher attack. But those two anti-reality mechanics are enough to pull me away from the current universe I'm engrossed in and actually glance up at the clock.

    Friday, June 16, 2006

    Top 10 Signs You're Addicted to Oblivion


    1. You could swear you just saw some nirnroot outside your window
    2. You just punched a mountain lion
    3. You attempt to summon a flame atronach to make you a grilled cheese
    4. You keep threatening, bragging, joking and complimenting people in quick succession
    5. You try to bind a daderic cell phone instead of having to carry one around
    6. "Screenshot: File 'Screenshot982.bmp' created"
    7. You skip signs 8-10 so you can get back to Bruma

    Tuesday, June 06, 2006

    Squash Go the Mods

    There was a fairly... clumsy interview with Carmack not too long ago, mainly asking the same bad questions about his MegaTexture algorithm (basically being able to map huge textures to huge meshes, even ones with steep deformations). One interesting nugget was about smaller mod teams and their ability to make an impact in light of new technology:

    ...in general, all the technology progress has been essentially reducing the ability of a mod team to do something significant and competitive. We've certainly seen this over the last 10 years, where, in the early days of somebody messing with DOOM or QUAKE, you could take essentially a pure concept idea, put it in, and see how the game play evolved there. But doing a mod now, if you're making new models, new animation, you essentially need to be a game studio doing something for free to do something that's going to be the significant equivalent. And almost nobody even considers doing a total conversion anymore. Anything like this that allows more media effort to be spent, probably does not help the mods.

    Another argument that new tech is mainly aimed towards big teams. It's seeming more that it's procedural content generation that's way behind the times now, not the rendering engine itself.

    Sunday, June 04, 2006

    DooMed Music

    I recently discovered The Dark Side of Phobos, a modern remix of the good ol' DooM standards. It has some great covers - most of disc one is pretty solid. Definitely worth giving your big ears a listen.

    I had seen people employ other tricks, such as use a high-end MIDI synth to remaster the original soundtrack, but wanted something more since I can't find Bobby Prince's original soundtrack anywhere.

    Saturday, June 03, 2006

    Brother, You're Grounded

    Just got a new printer - a Brother HL-2040. I think the last Brother I had was a dot-matrix printer (300x300 dpi! w00t!). With the insane cost of inkjet cartridges, I needed something that could barf out text with the cheapest cost per page. The HL-2040 was about as expensive as a new round of color/black cartridges, and would last a helluva lot longer. Brother had a pretty good rep with Linux support, and even had a fairly good library of Linux drivers and specifications (even if the drivers were LPR).

    The weird thing was that whenever the printer arose from a slumber, my lights would flicker and my UPS' would kick in. Checking the UPS logs, they had to switch to battery due to "line noise." A bad AC sine was usually an indication of a bad ground, so I took a look at the printers undercarriage with my handy multimeter. There were a lot of chassis ground connects, but they all were grounded correctly. Cable seemed to be grounded correctly, too.

    I contacted Brother's support group, and here's the response I got back:

    Dear Brother Customer,

    Description of Symptom:19266

    The lights in my room flicker when the printer is warming up or
    printing.


    Description of Solution 500000025996

    HL2040 PS QZ01 Lights flickering or dimming when using the printer can
    be explained by the following information. The average operating
    currentfor the printer, as determined by Underwriters Laboratory (UL)
    testing is 8.6 amps. However, when the fuser is cold or when the printer
    is warming up, it will jump to 40-42 amps. This is a design element to
    enable the printer to get ready for a quick time to first print. The
    power spikes up to ready the printer quickly. Sometimes the spikes will
    cause lights to flicker as the power is drawn.

    The printer has been tested and approved by UL. The printer will not
    damage home wiring. UL has confirmed that the home circuit breaker
    wouldtrip before any damage would occur. This design element ensures the
    printer performs 20 pages per minute printing and fast wake up time.
    This design cannot be altered and is not an indication of a
    manufacturing defect. We do recommend not to share the same power
    circuit with other high-power appliances, particularly an air
    conditioner, copier, shredder and so on.


    Note the copy-and-paste from a knowledgebase. I'm guessing they get several e-mails about that. A 42 amp jump seems to be enough to stress the circuit in the room... so I guess I'll just have to be glad I have a UPS to protect me when the printer eats my AC.

    The Sketchy Side of the Brain

    When I first started creating 3D meshes, I thought that sketching out models ahead of time on graphite and paper was an unnecessary step. After all, if you're going to create a 3D mesh, you need to think in 3D, right? Wrong.

    I quickly learned when trying to build my own human mesh that reference images were invaluable. In fact, without them proportion and scale just weren't even possible. Was this just a limitation of my brain, or was translating from 3D to 2D to 3D just too much of a jump?

    Looking at all the "behind the scenes" material of the major titles released, it's obvious that every mesh has to be sketched out first, even if the final mesh doesn't remotely resemble the original concept art. I could come up with plenty of concepts, I just couldn't do the art... so I decided to see if I could learn how to do some actual, "correct" drawing. To learn I've been working with Betty Edwards' book "The New Drawing on the Right Side of the Brain." It's an excellent way for people who have never graduated beyond stick figures to draw something that's actually realistic. In about one week I've been able to start drawing stuff that doesn't suck.

    Betty does her best to get people to open their "artist's eye" by explaining things in a left-brain/right-brain sort of way. The basic premise is based on the same sort of layman cognative science that we've heard for a while: the "left brain" is responsible for things in a sequential, verbal and time-based context. The "right brain" manages spacial, differential and big-picture solutions. Her excercises come back to trying to get the left brain to shut up so the right brain can do its work.

    She uses the standard exercises of constructed picture planes for coordinate reference, countour drawing and the like to teach, but also throws in some extra tricks to help get you up to speed quickly by awakening a more spatial brain state and "drawing things as they are."

    Looking at the Amazon reviews most people think the cognative science aspect of it is imaginary. After six chapters, though, I'm pretty sure she's on to something. This sketch of my hand isn't that bad, and would definitely be passable as concept art or a reference image for a mesh. I'm happy with it.

    The more I get into game design and content creation, the more I realize there's a helluva lot of learning one must do. This is no longer the quick "indy developer" scene - you have to be a jack of all trades. Any more I'd suggest any game developer take a quick course on how to draw, learn a good 3D package, do some sample material work (with textures and shaders) and then start the coding. Gone are the days when a lone coder could whip up a few pixels and create a game... now content, and content generation, is king.

    Friday, June 02, 2006

    Congratulations to A Dozen

    Congratulations to the Geeks Eye View podcast for making it to the 12th episode. I believe Rocky mentioned that most podcasts don't make it past 10... so this is indeed a testament to the endurance of GEV. I tried to derail the project by making widely inappropriate comments in three episodes (one didn't air), but alas they've survived despite me.

    Huzzahs and w00ts to Rocky, Phil and crew.

    Project Assassin

    Good ol' Gamasutra had an interesting article about Ubisoft Montreal's latest title, currently called "Project Assassin." The most interesting facet is the dedication to realism, and getting rid of some of the annoying "gameisms" that always seem to bug me.

    For example, no longer are certain textures "climbable." Now, any surface that has a relative extrusion of over 10 cm can serve as a grip. Also, player-to-player kinetics make more sense, since you can now "push" characters and have them react as if there was leverage on that part of their body. No longer should they just slide away as if they were standing on pats of melted butter... instead they should teeter appropriately.

    That's not to say they haven't eschewed fantasy altogether. There is still the crazy acrobatics, leaps off walls and kung-fu midair jumps, but they're much more akin to freestyle walking than The Matrix.

    It's not that there is anything wrong with gameisms like the infamous double-jump... but if you're shooting for realism there's kinda the sense you should go all out, lest you fall prey to the uncanny valley where most titles seem to live now. In Morrowind I didn't have an issue with the fact I couldn't slide-tackle people in the streets. But it bugs the ever living crap out of me that a minotaur in Oblivion can swing a eight-foot warhammer into his adjacent brother, who is bloody standing right in front of him, and the only effect is that the hammer pops in and out of the mesh like a pillar of smoke. And yet if I come within three feet of the swing's radius I go flying at breakneck speeds. It bugs me since Oblivion is good enough to live in the valley, Morrowind wasn't quite.

    Maybe Ageia was right after all... interaction is the "next big step" for realism. Even surrealism. Now we just need an accelerator for per-pixel collision detection so we can climb all those newly extruded surfaces... Heck, they're talking about network acceleration cards for lower lag, why not?

    Seriously Sick

    While I was sick last week I kept debating the same thing, over and over, a billion times before I jumped in the car: should I go to work or stay home?

    A recently Slashdotted story gave the argument more weight than usual. In particular I found the comments about the article compelling (comments in a Slashdot article compeling? What the...?). Given that I know of many people who are now getting yelled at for working only fourty hours a week and taking time off that they are allowed, I think work culture is definitely shifting to a permanent 50 hour work week. Not only that, life itself is getting more stressful. This isn't the idyllic America that everyone pictures, with two kids, a dog and a white picked fence. This is the America where two parents both work ten hours a day, families see each other on the weekends, costs of healthcare are growing at an exponential rate and drugs are being rammed down our throats at an ever growing rate. Looking at the haggard, exhausted looks on my pharmacist lately goes to show how she's starting to pull 60 hour weeks, too.

    TheServerSide posted an article for comment about how not pacing yourself and limiting the hours per day is quite counterproductive. I'm definitely not a proponent of eXtreme Programming, but I definitely think the practice of keeping a "sustainable pace" makes immediate sense. If mental acuity is required for your job, letting an LCD backlight burn into your retinas for ten hours a day doesn't exactly help the cause.

    We get sick, we can hardly focus enough to get behind the steering wheel and yet we go to sit behind our desks and infect everyone in the general proximity. Why? Because we're afraid. We're looked at as a liability, a cost in the general ledger. We're commoditized workers, something that can easily be purchased elsewhere at a discount. We're no longer seen as knowledge brokers or experts in a field. In this game you're either a company man, a power player to the end, or you're not.

    Maybe that's not true. Maybe it's just suburbanite fear. Maybe the whispers behind walls are just subliminal messages meant to keep us tethered. Maybe I'm not paranoid, just everyone is out to get me.

    I see how the people who spent their weekend behind a console are favored, and hear the rumblings when someone calls in sick for the second time in two weeks. And it's human nature to wonder what people are saying about me.

    Friday, May 26, 2006

    Rotate Your Desktop on a Cube

    I just tried out the very nifty Kororaa Project live CD - a Gentoo live CD with Xgl already built and configured for both KDE and Gnome. It's quite a demo - the screenshots alone don't do it justice.

    Your desktop can act like faces on a cube - as you rotate the cube you switch your visible desktop. This works surprisingly well; moving a window from desktop to desktop can be as easy as sliding it from one face of the cube to another.

    Also, since everything is an OpenGL surface, you can render video quite nicely and not take a performance hit while all the eye candy is turned on. Windows and UI elements all scale correctly, so you can accurately zoom in and zoom out of an area. Windows also have "bounce" or "wiggle" animations, which makes things feel more plastic and actually gives you useful feedback as you traverse workspaces. The famous OSX F12 key is there too, and allows you to select from all your open windows in one fell swoop.

    There are a few drawbacks, both of which happen to be deal breakers for me. First, Xgl doesn't support dual head setups for stretching your desktop across multiple monitors. Second, there does appear to be a performance hit to regular OpenGL applications. Running glxgears in Kororaa yielded about 12,200 frames per second, but in my default SuSE 10 install it runs at about 15,200 FPS. A 20% performance hit ain't good.

    Still, the Kororaa live CD is definitely worth a whirl. Since it boots off the CD, Xgl works without configuration and the OS doesn't even touch your hard drive you can try it without risk and see the nifty effects and affects on your own.

    Sunday, May 21, 2006

    A Mountain Lion Ate My Horse

    You hear me mountain lions? It's freakin' ON! I've got a hankerin' for a double-breated mountain lion suit with matching clogs, and the only cure is mountain lion on a pig pole.

    Oh, it's on. It's on.

    Wednesday, May 17, 2006

    Left Behind: The Search for Cash

    Christian gaming is starting to hit the spotlight now that E3 is rolling around. While some titles disguise their message in innuendo and hidden subtext, such as Bibleman: A Fight for Faith, others are more mainstream.

    Left Behind: Eternal Forces is an RTS where the Tribulation Force deploys units against Antichrist's Global Community Peacekeepers. In single player you play the Tribulation Force, where your units lose spirit points every time they kill enemy units. Prayer restores the points, otherwise they can be recruited to the other side.

    Michael Pachter of Wedbush Morgan Securities noted "The reason that I think this game has a chance is that it's not particularly preachy... I will say some of the dialogue is pretty lame - people saying 'Praise the Lord' after they blow away the bad guys. I think they're overdoing it a bit. But the message is OK."

    Good ol' Jack Thompson, also lookin' to get some E3 press, of course had something to say. "We're going to push this game at Christian kids to let them know there's a cool shooter game out there... because of the Christian context, somehow it's OK? It's not OK. The context is irrelevant. It's a mass-killing game."

    AAAAAAAAAAAAAAAAAAAAAIIIIIIIIIIIIIIIEEEEEEEEEEEEEE!!!!!! I agree with Jack Thompson! Someone hit me with a pipe!

    It sounds like they're attempting to hit a new target demographic... not relay a message. Then again... I kinda expect a bad book series deserves a bad game.

    Tuesday, May 16, 2006

    SuSE 10.1 - Avoiding the Fedora Trap

    Just installed SuSE 10.1 on my Latitude D600... and all in all it's a great release. It's really deserving for a "SuSE 11" moniker, but I have a feeling they're waiting on that until KDE 4.0.

    Gone is a lot of SuSE-centric software with new, more standardized set of hardware detection and system management packages. SuSE used to need their own hardware detection monitor, but with KDE's hardware abstraction layer coming into fruition and packages such as KNetworkManager, you don't need it. It's a nice shift, as this allows you to have more integrated and widely accepted tools.

    Zen, however... that's a different situation.

    SuSE's YaST Online Update and Software Management has been replaced by Novell's Zen software management, which while good in concept, absolutely sucks in practice. While it's nice that it monitors any package repository you want (such as PackMan or Guru) for updates, it takes for freaking ever for it to load and install packages. FOR. FREAKING. EVER.

    It's nice being on a fresh new install. Every release that comes out I swear to myself "I'm going to keep a pristine factory install - no beta packages." Then a new KDE release comes out that I must have, and I say "well, I'll just try the new KDE out." Then I figure "since I'm already non-stock with the unofficial KDE packages, I might as well try this other hack out..." and then a runaway train of applications and hacks leaves me with a mutt of a system.

    So now I'm starting with a clean(ish) slate. I'm trying to break myself of the console habit - so I'm using more GUI tools to diagnose stuff. I never realized how handy KSystemlog and KDE System Guard was... quite nice.

    10.1 really is a fantastic OS - encrypted filesystems are even handled sensibly with the boot GUI doing just a brief break to prompt for the password. Partitions are now broken apart into root and home directories, and swap & extended portions are sensible. The desktop itself has little clutter, and less stuff starts at boot time and desktop startup. Nice 'n' clean.

    The visor kernel module for my Samsung i500 still renders my keyboard useless, however. For some reason syncing via USB causes the laptop to stop receiving input from the keyboard altogether and then can't shut down. I'm relegated to IrDA only, which is sloooooooooooow and an overall pain in the butt. I am working on using Kitchensync in KDE, however, which is quite nice. In theory it should render my custom hackish sync script unnecessary, which would get rid of an extra step and hopefully allow for a two-way sync between the i500 and Exchange.

    Oblivion Newbs

    There's a rash of newbs whose first exposure to the Elder Scolls series is Oblivion, which is a crying shame. Of course, the fact that I didn't come in at Arena makes me a n00b too, but I'm less n00bish.

    I have to rank Morrowind over Oblivion so far. It seems that the level of detail in Oblivion has hit the uncanny valley, where things look so real you can't help but notice it's fake. Like the animatronic Hall of Presidents, your subconscious keeps interjecting and telling you what you're seeing is fake... like an animated corpse. Your mind is constantly aware that something is awry, albeit minor, grinding away like annoying grains of sand. Shaders being too shiny, grass shaders eating frame rates alive, leaf pixmaps popping in and out of the Z buffer as they sway on branches... these all just serve to remind you that what you're seeing is a damn close approximation of the real world, but something is out of place.

    Morrowind had its cutting edge (at the time) water effects, which made people swoon as soon as they had a DX9 card. Otherwise, however, it was obvious you were living inside an American RPG. Dialog was text-based, little voice acting was done (don't get me started on Dagoth Ur), and magic effects basically looked like Quake 2 runes. The vistas were still stunning - hell, Morrowind even has photography guilds. Towns were a seamless collection of buildings, just like they should be. Oblivion attempts to optimize framerates and create hard edges to the world with the old fasioned stupid game mechanic of we-built-four-hundred-foot-walls-around-our-entire-city-so-players-can't-just-walk-inside; the engine can then unload a mega-texture landscape setting and load a much more finite city setting. Morrowind accomplished the same thing by only spawning new areas within buildings, which is a much more natural transition. It makes sense to start a new area inside a building... you're going outside, in. You could just stroll into a city using whatever means necessary... just levitate in if you want. The bounds placed on cities in Oblivion are much more artifical and abrupt, with NPC's "teleporting" inside of city gates instead of just stepping through the freaking door.

    Then again, I could just be waxing rhapsotic for Morrowind's storyline. I'm drawn to the "creationist" or "origin" adventures, the type where you find out that the world wasn't created using the schema you've always believed. It's a bias I've carried with me ever since I was first hooked into the RPG genre - with Final Fantasy Legend.

    Aaaaah... those were the days. I took my glass sword and beat the livin' snot out of Creator many, many times in that era of my life. There, the big reveal was after ascending the monolithic tower that stood in the middle of every realm of existence you came face-to-face with the creator of the world. Then, for reasons that are still completely hazy, Creator starts getting all up in your grill. Then your party feels stilted and a fight ensues. Not sure why. But after you destroy your (C)reator, you can ascend into the realm beyond creation (the door behind Mr. Creator de Jerkbutt). But the party starts feeling nostalgic and returns to relive the adventures they had and the people they helped along the way. It was epic. Good times.

    After that, I moved on to Phantasy Star III for the Sega Genesis. There, you find out that your world is not some rotating sphere circling a medium-sized star... instead your on a freakin' space ship set into orbit to save your civilization. The world isn't natural... it's completely mechanical and manufactured. Take that!

    Morrowind goes back as far as any other Elder Scrolls title I know of... all the way to the very creation of the mortal realm, the inception of the Dumner, the extinction of the Dwemer and the very heart of a god. If that's not freakin' epic, I don't know what is. It frames things in a very religious context, with a healthy reflection of the Roman's assimilation of Greek religion and Nordic roots. There's very much the sense that the current faith was one built up around, but in displacement of, the old pagan ritual and history. Here we find that the volcano that erupted in Morrowind wasn't some natural disaster... it was an ancient, advanced culture that had harnessed the power of an actual god. Kinda like if we discovered the Aztec's actually built a Cray out of steam power and the pancreas of an immortal then teleported themselves to Mars.

    Morrowind even had a book in-game called "On Oblivion", something to lay the path for the current title. In fact, there's a lot of literature that's shared between games in the series. This battle in the Daedric realm was a long time coming evidentally. Maybe we'll see another reference to the Numidium. Maybe another big reveal about the true origin of the Elder Scrolls world.

    I'm happy enough to ride the current title out and give it a fair shake. Currently I'm engrossed by my kick-butt Rastin wanna-be, looking pale and sickly, clad in only a monk's robe. He can't carry much of anything, can't swing a sword and can't take a punch to save his life. But he can cast like freakin' motha.

    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."

    Thursday, January 26, 2006

    I Would Tell You, But Then I'd Get Sued

    I always want to post lil' work snippets in this blog, but I can't. Not that my job is all that interesting, but weird crap that I like to bitch about to Rocky does come along. The fact is... I can't. Why? 'Cause I'll get sued.

    Someone found out about my unfortunately brief work with PlaneShift (motto: "Will someone get rid of that freaking Flash animation!") and then found out my handle. So it wouldn't be a big stretch to see them finding my blog. And then for it to show up in our proxy server logs. And then for someone to get cheesed at me (again). Then find ammo to arm an exec with. Then down I go.

    For example: one local legal council to businesses advertises on NPR that "blogs can create a host of legal problems for employers." I can understand that, as these are public forums... but I don't need to give someone a reason to can my butt.

    Then again, you start talking too much about your personal life and you become a target for identity theft. It happens way too easily and is way too irrevocable.

    So that's one major reason I just gab about random tech stuff. It's pointless, it interests me, it bores others, and won't get me fired.

    Go free press.

    Thursday, January 19, 2006

    A Pixel Named Gobo

    I received a beautiful 19" Dell LCD UltraSharp monitor as a very generous gift recently. I adore the monitor aside from one tiny thing - a pixel that has problems with blue. Its subpixel is whack... so if the pixel attempts to turn white it actually turns red, and if the pixel attempts to go black it shows green.

    It's not a big deal... but because it's so bright with an opposite color and right smack-dab in the middle of the screen you can't help but notice it. I've tried everything to remedy the problem. I've run endless loops of red, green and blue video hoping that quick color changes will snap it back into place. I've tried rubbing the pixel. I've tried applying pressure with a warm cloth. Nothing.

    I tried to replace it with Dell, but since it was outside of its 21-day unconditional return window, all they would give me was a reconditioned part. I initially took them up on their offer... but when it arrived it appeared to have been delivered drop-kick express. The case was cracked and couldn't be put back together, metal parts of the frame were bent, it was an early revision model and the backlight bled through.

    So I've kept the original new model and have been trying to come to terms with my one stuck pixel. I think in order to come to terms with it I'll give him a name.

    Looks like Gobo is here to stay.

    Wednesday, January 18, 2006

    ConsultComm Lives Again

    I actually received a donation to one of my open source projects. No joke.

    Up to that point I was considering marking the project as abandoned, but now I'm picking it back up and working on a new Java 5 version and clearing my outstanding bugs list. So thanks to one user's attaboys, the project lives on.

    That's kinda how development on ConsultComm has worked for me... I'll let it go for months at a time, then a user will send along a supportive e-mail or a lil' something for a pizza. After that I'll get into the code to help the user out, find a million things I'd like to do with it, then end up writing a whole new version.

    So if you notice a project you really like but no one has worked on it in a while - send 'em something nice. Like cash. Or a "you are my everything" e-mail. Or kiss them on the forehead. Works wonders.

    Tuesday, January 17, 2006

    I Give Too Much Credit

    I gave Path of Neo waaaay too much credit in my earlier post. I thought they were going for some cool adventure-game-throwback genre in the first tutorial level... but no. They play controls just sucked. I was right - it ended up being Oni in the Matrix.

    Which isn't bad - in fact the hand-to-hand mechanics were pretty well done. Animation was nicely framed... but models were hideous. I mean... abhorrently ugly. Everyone looked like they had a goiter if they bent their neck too much to the side.

    The end was just as bad as the beginning. How bad you say? They played Queen's "We Are The Champions" over top of the ending film clip. Yup, that bad.

    The Wachowski brothers did have an interesting little dialog towards the end that explained why the ending was designed to make absoulutely no freaking sense - which was rather humerous. There were a few good lines in the beginning - such as Neo talking about how crates all over the place are a reeeaaaal original idea.

    Now on to Quake 4 and Darwinia. Thankfully both have native Linux ports... so I can stay in SuSE and game. I've been dual-booting into my wintendo for so long it's nice to be able to have such loving, generous companies that allow me to stay in my OS of choice. Thanks kids! I promise to buy a lot of impulse items from id, Raven and Introversion from now on.

    Saturday, December 31, 2005

    Damn Kids and their CS Degrees!

    Joel on Software had a nifty lil' article I dug recently. He kinda echoes my sentiments on the current crop of programmers coming out of colleges nowadays: they're more vocational than educational. Wow. That was catchy. I just thought that up!

    To any point, the issue at hand is that pragmatism has seeped into colleges that keep wanting more money to give to football players. When I was completing my undergraduate degrees, a few courses were starting to teach data structures using Java instead of C++. The idea behind their reasoning is that they would have to spend less time fighting memory leaks, more time learning a language actually used in the industry and more focus on the algorithms at hand (since data structures are language-agnostic). It seems sensible to me to teach some data structure courses in Java... that way you can spend more time figuring out why a binary search tree is more efficient than a linked list.

    But back in my day, we started CS 101 with freakin' Scheme. That's right. That's right. And it blew everyone's freakin' minds. Recursion vs. iteration was something that was absolutely essential to our budding brains. List manipulation was needed for us to learn how to manage memory later. And once we learned the essence of all the basic CS algorithms, we didn't need to really learn a language, we just needed to understand syntactically how a language was comprised.

    Now that I actually have a "job" managing enterprise software, I'm finding that software in the corporate world doesn't need to be fast. It doesn't even need to be that correct, ultimately. It just needs to be easily mantainable. That's what the crux of enterprise software is - maintainability; so when you quit and move on the next dufus who sits in your chair can easily pick up where you left off.

    And hence why all the knowledge I gained in four years is quickly evaporating from my head...

    Monday, December 26, 2005

    Path of Whassit?

    Just got Path of Neo and tried it out... yes, it's shameless merchandising. But it's fun.

    It was actually ticking me off big time for the past hour... I thought this was going to be a Matrix-like twist on the third-person action genre (akin to Oni). Going into that sort of mindset the game was absolutely terrible. Controls were inconsistent, camera controls were way more than wonky, and character animation/generation was borderline awful. I think character meshes were... what... six polys?

    But then it hit me. This isn't an action game. The weird play controls... the cinematics... the generic "action" button used for every damn thing... it's a freakin' adventure game.

    The thought of a Matrix adventure game simply cracked me up. First off, it's been a stalling genre since Lucas Arts' release of Full Throttle or Sam & Max. To suggest that Shiny Entertainment was using the genre for a Matrix title makes a helluva lot of sense... it's just... weird in this day and age.

    By the way, thanks to Bob and Chris for their feedback this week. I didn't realize people actually read this drivel ;)

    Saturday, December 17, 2005

    Character Generation in Blender

    I just posted three new tutorials: Building Textures with GIMP which focuses on how to build textures out of repeatable patterns - perfect for texture mapping; Building a Low-Poly Character Mesh in Blender which focuses on creating a character mesh using as few polygons as possible, and Texture Mapping Character Meshes in Blender which ties the first two together.

    I also found an interesting tutorial on using diffuse maps, normal mapping, height maps, specular maps to utilize CrystalSpace's parallax and specular shaders. Something I've wanted to research for a while now... I'm way behind the times when it comes to shaders. WAAAAAAAAAAY behind. Looking at what Bethesda Softworks can do in Oblivion with parallax, diffuse, specular and normal maps combined into each texture blows the mind.

    The shader 3.0 spec was easy to follow... vertex processing -> primitive processing -> pixel processing. But throw in volume shaders or subsurface scattering and it starts to become more shader levels than my little brain can handle. I hardly have time to build a low poly character mesh - how the hell am I going to model its vascular system?