|
My brain is built of paths and slides and ladders and lasers and I have invited all of you to enter its pavilion. My brain, as you enter, will smell of tangerines and brand-new running shoes.
 Haha creativity. |
Posted - 4/29/2007 2:03:32 AM | Someone needs to start a psychedelic chill band and call it Hydroponic Crop Circles.
That is all.
| |
 Whining |
Posted - 4/22/2007 2:35:07 AM | Stupid C++ and stupid classes not being able to call virtual members from constructors. Stupid annoying stupid rrrghhh stupid hate hate hate DIE.
That is all.
| |
 My Narcotics Addiction |
Posted - 4/17/2007 12:46:20 PM | 
Daddy needs his medicine.
| |
 Don't Fret, My Dear |
Posted - 4/15/2007 8:42:23 PM | My left hand is become an orb of pure, immobile agony. The digits move only in short, tortured lurches, as if gasping for the last gulps of life. My right hand no longer obeys the commands of my mind, but moves only in vaguely rhythmic vertical twitchings.
I am occasionally seized by an uncontrollable urge to wail on a whammy bar.
Sight, a companion since birth, has betrayed me. In place of the world around me, my eyes perceive only a stream of endless colored spheres, arranged in a pattern that might possibly encode some form of music.
My arms are permanently crimped at an odd angle, and a disturbingly large portion of my very brain refuses to do anything but intone "Whoo, yeah! Fuckin' hardcore, baby!" Every knob, dial, and switch within my grasp has been obsessively switched to "11."
I am told that these are the symptoms of playing too much Guitar Hero.
This is, of course, pure heresy; a very affront to the gods, and the essence of life and reality itself. Only the most vile and soulless of beings - I cannot even call them persons - would utter such blasphemous atrocity.
Because we all know there's no such thing as "too much Guitar Hero."
| |
 On creating the universe |
Posted - 4/15/2007 7:45:55 AM | I've discovered an interesting truth about creating a programming language: you won't have enough motivation to do it right, unless you already have a program you want to write in that language. It doesn't matter how stupid the program is; if you don't have a problem to solve, the language won't go anywhere.
My first program will be a Sudoku solver, for a few reasons:
- They're simple and straightforward, but leave room for interesting optimizations and designs
- The rules can be expressed in a variety of ways which will force me to think about how domain knowledge is represented in the language
- I've been wanting to write one for the hell of it for a while anyways
- Someone just gave me a large book of Sudoku puzzles, and I can't be bothered to finish them by hand; just writing a program to finish them seems a bit like cheating, so I'll create a programming language to write a program to solve them. That's about fair I think.
(Yes, fans and enthusiasts, this means Epoch is officially back in action - please try to contain your excitement. I don't want to get any unbridled joy on my shirt.)
| |
 I LOVE CRACK!!! ... Down. Crackdown. |
Posted - 4/3/2007 6:15:08 PM | There was a time when I was vaguely concerned that investing in the 360 would ultimately prove to be a mistake. I think I believed that somehow I wouldn't play it often enough or get much enjoyment out of it.
This fear has been stomped on and viciously maimed in a two-prong attack that involves so much concentrated bad-assery that it should be regulated by law.
I speak, of course, of a fresh copy of Crackdown, which is in the same room - nay, running on the same console - as Guitar Hero II.
There's so much awesome in here right now that even my toenail clippings are transformed into charismatic, unassailably-cool, ultra rock-god genetically engineered justice-cyborg sex symbols of the entire universe.
A few moments ago, I saw a speck of mere dust attain a shining, purplish hue; sweeping, curved lines of energy coursed into it from the very ether, and in a blinding flash, that tiny little mote of dust became more awesome than the forbidden love child of Eric Clapton and John McCarthy.
There's only one complaint I have with Crackdown, and that is with the name. It's too long. They should have just called it "Crack" and been done with it - it's close enough.
Now, if you'll excuse me, I have some roof-leaping, car-tossing, machine-gun-wielding justice to dispense.
And not with an iron fist, either. Not even a platinum-coated titanium fist. I dispense justice with a holographic nuclear powered quantum vending machine from the year 12006.
Feast on the awesome. Bitches.
| |
 You Don't Really Want to be a Game Developer |
Posted - 4/2/2007 11:54:18 AM | I've talked before about how hard it is to relate my job experience to other people.
It's pretty common for people, upon hearing that I work in game development, to react along the lines of "wow, cool! What a great job!" And this is a difficult problem: they are both right and wrong.
I say "I make video games" and most people, sadly enough, hear "I play games all day." I do not understand where this ridiculous untruth originates, but it's deeply entrenched in popular culture for some reason. (Personally, I blame those abominable late-night TV ads for crap diploma mills - you know of what I speak.)
I love my job, but not for the reasons you think. You really don't want to be a game developer. I'm very cautious about showing enthusiasm for my job (hence my all-too-familiar half-lie "it's not really as interesting as it sounds"), not because I lack that enthusiasm, but because it's too easy for others to misinterpret it. Maybe we need a superhero mascot for game developers.
So why do I do this job?
About a week ago, someone asked why we make games. There are a lot of varied answers in there, and they all reveal interesting things about what drives people and basic human needs and instincts. There's ample material in that short thread for many long pages of philosophical exposition.
I dropped in and posted a short, cryptic, and possibly completely worthless answer; at the time I didn't really feel like expanding on it, but now I think the time has come to dig into what I really meant.
Quote:
It was an admittedly oblique reference to one of my favorite speeches:
Quote:We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not only because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too.
- John F. Kennedy |
What happens when it isn't hard enough?
I actually started my current game development job part-time at the same time as I started a 9-to-5 day job. The day job completely sucked, and it was a huge weight off my shoulders when I finally quit and went into games full time.
It took quite a while for my old position at that job to get filled, but it finally was filled a couple of months back. Every now and then I still get offers to come back and work there.
As flattering as those offers are, I keep turning them down. It's certainly not because the deal isn't good; there's a sickeningly fat chunk of cash at stake. Unfortunately, I'm one of those rare and annoying people who isn't motivated by money.
The other day I got to thinking: if they offered the ridiculous salary, and put me in a position of authority to fix all of the cultural problems, would I go back? If I could systematically change all of the things that had driven me crazy and eventually convinced me to leave, would I do it?
I have to admit it wasn't as easy of a question to answer as I thought. But eventually I arrived back at the same old conclusion: no, I wouldn't do it. The thought process was important, though, because it highlighted a very crucial fact.
The main problem with that job wasn't the terribly dysfunctional culture or the oppressive environment. The main problem was that the business ran out of good problems to solve.
By the time I left, I'd tackled almost every major interesting thing that would ever need to be done with the product we produced. There may be two or three more innovative and exciting things to do that might crop up in the future, but there's not enough to make a job out of them. All the problems left were trivial, maintenance type work - retreading ground I'd been over a dozen times.
The bottom line is that a fat paycheck and a lot of power are not sufficient incentive for me to do a boring job all day.
What exactly is "hard" about it?
Game development is in a state of constant movement. The technology is always changing. Every time your team puts out a title, there's a major new set of technology on the horizon - and you'll have to target that technology for your next title. Life in the industry is a constant tail-chasing spiral; game developers want better hardware, hardware developers create it, game developers learn it and push it to the limits, and then start dreaming about the next round of improvements.
In this business, there's almost always a new problem, or at least a familiar problem that has to be solved under new constraints. Once you solve all the big problems, you ship the game, maybe deploy a few patches, and then start the whole deal again.
Each iteration is different, because the product is different. Very few businesses can stay stable by changing their primary product every 3 years; for game developers, especially small independent studios, it's vital. The scenery changes completely after every project: new goals, new technology, new constraints.
This leads to an interesting situation. A lot of the problems that I solve on a day-to-day basis aren't really novel; they've been solved before. But in games, it isn't always possible to use a general solution. There's always some tailoring required to make a solution fit your context, and your specific needs. Even when we can use pre-built solutions, there's some work to be done in getting them to interface with the rest of our stuff.
Those problems are exciting because they're familiar, so they're comfortable, like well-worn shoes. You know what works, what doesn't, what you've tried before, and what you wished you could have done last time. They're an opportunity to refine and improve on what already exists, but they can be devilishly challenging when the rules have changed: last time you solved this problem, you needed to minimize the amount of memory used. This time, minimize the time it takes to run. Oh, and it has to be thread-safe and portable to four platforms and three compilers.
Sometimes there really are totally new problems. Those are exciting precisely because they're new; you get to enjoy the feeling of striking off into unknown territory. (I've often pondered buying a coon-skin cap for those occasions...) At the same time, they're a bit scary, because you know you can't rely on anyone else's expertise to help if you get stuck - everyone else is exploring, too.
The net result is that it's impossible to be bored. Virtually everything stretches you and demands your best. It's constantly challenging, and there's always a little niggling fear that I might not be able to hack it. And then, when you do hack it and ship a title, it's the most incredible feeling in the world.
Because It's Hard.
I love my job because it's hard. There has never been a period of my life when I have been so consistently taxed to the limit of my abilities, stamina, and focus. As a direct consequence, I've never had a better opportunity to expand and grow.
Solving problems is endlessly fascinating for me. Overcoming a huge challenge has illegal-drug-like effects. I find tremendous satisfaction in clean, elegant solutions.
But just solving easy problems isn't the same. Anyone can walk up a hill, but summiting Everest is a vastly bigger rush. Bigger problems offer much bigger rewards when we conquer them, and programming is no exception to this. The harder the problem, the more fun I'm having - and don't let yourself be fooled by the fact that I'm ripping out fistfuls of hair and screaming things that would make sailors blush. I may look pissed off, but I couldn't be happier.
There's a long running debate about whether or not programming is an art form. I think the answer is yes and no - it depends on the programmer, not on the programming. There are programmers whose entire goal is "get it to work" - and they can do a decent job of this. They're certainly programming, but it's utilitarian; the point is to solve a problem and nothing more.
There is another perspective though, where "working" isn't a goal but simply one of many requirements. Make it work, make it clean, make it elegant, make it maintainable, make it beautiful. Those are the programmers who practice an art form and not a bland, mechanical process of commanding a mindless machine.
Good art is hard, and good programming is art; it should come as no surprise that good programming is really, in fact, pretty hard. Hard problems, as we've just seen, are very rewarding to solve.
But there's more than just the surge of endorphins and assorted happy-chemicals in the brain; there's more than the "satisfaction in a job well done" (vomit); there's more than simply knowing that one has accomplished something significant.
The most priceless treasure of working on hard problems is that it might actually demand more of us than we can offer, that we might be forced to increase ourselves to meet the challenge.
| |
 Imperator of the Drunken Ray |
Posted - 4/1/2007 7:56:34 AM | So I had a few beers last night, and decided to write a raytracer. The last one I did was a huge amount of fun, and despite it eating up three years of my life and turning into one of my most annoying failures, I still have fond memories of the project.
I keep getting ideas for stuff I'd like to try and implement, but the old code was pretty brittle and didn't like to be shuffled around and experimented with. I've often wished for a flexible platform for working on global illumination algorithms in particular, where the core operations of ray intersection and so on are provided, but operations like specifying surface reflectance functions, light behaviour in media, and so on can all be controlled with a domain-specific language. (Yeah, I know I'm reinventing the RenderMan wheel a bit.)
So after impairing my judgment real good and thoroughly killing a chunk of common-sense neurons, I started up a new project and hammered out some code.
It is now 8:05 AM, and I have a really nice console class and some bootstrap Win32 code. 90% of it is cut and pasted from other projects and utilities I've done in the past.
There's no ray-related or even drawing-related code of any kind. It's full of potential thread-safety issues, which will cause serious problems for the parallel-rendering concepts I want to try later on.
I'm never going to get much time or inclination to work on this, especially as I have other side projects that I really ought to finish first. Next time I sit down with it (possibly sober), I'll almost certainly look at the boilerplate code I've got now, exclaim over how utterly crap it is, and rip it all out.
In other words, I probably just wasted an evening, and created yet another stub project on my hard drive that'll sit around for years and never get touched again.
At least the beer was good, and I have a pretty good excuse for sleeping through one of the most annoying days of the year. Speaking of which, I think I'll get right on that.
| |
In locus hic, omnes res dementes sunt.
|
| S | M | T | W | T | F | S | | | | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | | 16 | | 18 | 19 | 20 | 21 | | 23 | 24 | 25 | 26 | 27 | 28 | | 30 | | | | | |
OPTIONS
Track this Journal
ARCHIVES
July, 2009
June, 2009
May, 2009
April, 2009
March, 2009
February, 2009
January, 2009
October, 2008
September, 2008
August, 2008
July, 2008
June, 2008
May, 2008
April, 2008
March, 2008
February, 2008
January, 2008
December, 2007
November, 2007
October, 2007
September, 2007
August, 2007
July, 2007
June, 2007
May, 2007
April, 2007
March, 2007
February, 2007
January, 2007
December, 2006
November, 2006
October, 2006
September, 2006
August, 2006
July, 2006
June, 2006
May, 2006
April, 2006
March, 2006
February, 2006
January, 2006
December, 2005
November, 2005
October, 2005
|