Star Trek: The Franchise

By Shamus Posted Monday May 11, 2009

Filed under: Nerd Culture 61 comments

I’ve always had a strange relationship with Star Trek. I don’t self-identify as a Trek fan, but I’ve watched most of the originals, most of The Next Generation, half of Voyager, a handful of Deep Space Nine, and all of the movies. I’m not sure why, as I’ve hated it more often than I loved it. Still, I’ve absorbed enough that it’s pretty hard to claim I’m not a fan in some capacity. I think maybe I like the idea of Star Trek better than I like the product itself.

Part of the problem is just the sheer longevity of the show. Star Trek has run for over four decades. It’s spanned six TV series, eleven movies, and a cargo container of books and comics. With that much content by so many different authors with so many divergent agendas it would be impossible for any work of fiction to emerge without a few plot holes and regrettable errors, but I still find myself wishing they could at least get everyone in the band on the same page. If not in tune, and perhaps not even all playing the same song, but maybe it’s not to much to ask that they all stick to the same genre of music. Trying to create a coherent story that goes from space-western to morality play to space [and sometimes soap] opera, to thought-provoking sci-fi, to “action flick go boom” is so difficult that it makes me wonder why they bother trying to create continuity at all. It’s fine if they want to take some ideas and go off and make something new with them, but then they insist on trying to re-connect everything by dragging characters and events from one genre show to another, and the result always makes a hash of things.

“Midi-chlorians” is the sneering watchword of disillusioned Star Wars fans. If it’s not “Midi-chlorians”, it’s “Han Shot First”, the complaint of fans who don’t like to see the story changed via retroactive rewrites and “re-imaginings” of established events. But their troubles are minor compared to the trials of the average Trek fan. The Star Trek version of the scene would have Han Solo from the future time-traveling back to the gunfight to save Greedo from his past self because it turns out that Greedo is crucial (crucial!) to the life of the galaxy in some way that was never mentioned, telegraphed, or plausible in the original ordering of events. Then after playing his part in saving the galaxy, Greedo would betray future Han and run off to become a recurring villain, and every time they met they would talk about The Day in The Bar When We Tried To Shoot Each Other. Han would repeatedly spare Greedo for reasons that were never explained. Then they would be forced to team up against some Greater Threat to The Whole Universe. Then Greedo would become a good guy. Then he would get his own show.

This is the story of the Trek universe, a bubbling cauldron of thick, chunky nonsense and disjointed storytelling. It’s a beast with more holes than a Dunkin’ Donuts and more cruft than the Windows 98 codebase.

Oops.

I sat down here to write about the movie, and ended up banging out 500 words about the franchise itself. I guess this is fitting, since every conversation I have about any individual movie or television show turns into a tirade about how it’s further contorted an already badly mangled story.

Watched every movie? Complained about all of them? Obsessing over continuity problems? Who am I kidding? That’s the definition of a Trek fan, right there. I might as well put on some pointy ears and start writing fan fiction.

I’ll try again tomorrow to review the movie.

 


 

John Carmack Quakecon 2007

By Shamus Posted Saturday May 9, 2009

Filed under: Movies 19 comments

Almost two years old, but still a captivating* speech nonetheless. It never dawned on me I could just watch this guy on YouTube. I found this by way of a happy accident, and then experienced some sort of temporal shift as two hours vanished. As one of the foremost minds in graphics technology and a remarkable software inventor, John Carmack has lots of interesting things to say about technology, patent laws, mobile platform gaming, business, freedom, aerospace development, the OpenGL architectural review board, the difficulties of programming on the PS3, open source, rising development costs, Rage (their upcoming game) and many other subjects. The full talk is over two hours in length.

I must say his talks are pretty humbling. I was feeling pretty proud of myself for my cute little city thing until I realized that with just slightly more time he’d written an entire graphics engine for unfamiliar hardware. I made pretty buildings and a memory leak, and he made something that was robust enough to serve as the foundation for a multimillion dollar game.

Here is the full talk in playlist form:

I am eagerly awaiting the release of the Doom3 engine. In the past they’ve released their engines as open source as the software reached the point where it still had great academic value and little commercial value. But the graphics plateau we’ve reached might slow down this process. Doom 3 turns five this year, and it barely looks dated. It has certainly aged better than the original, which was very out of date by 1998.

Still, I’m hoping we see the Doom 3 engine not too long after Rage comes out. The unified lighting system is an exciting technology that I don’t think has been fully explored, even all these years later. It was one of those very rare advances that made things look better and made them easier to produce. It’s possible for the software to build (or load) geometry on the fly, which suggests that you could make procedurally generated maps. Barring that, it should at least be possible to make a game without any loading screens.

* Captivity not guaranteed. Well-adjusted people may find this to be dry and dull.

 


 

Experienced Points: Griefmonkeys

By Shamus Posted Friday May 8, 2009

Filed under: Column 38 comments

The topic this week at The Escapist is griefing. Here the staff weighs in on the subject:

But my place as the Friday columnist lets me get in the last word. (Maniacal laughter.)

 


 

Stolen Pixels # 88: Left 4 Dumb: Part 10

By Shamus Posted Friday May 8, 2009

Filed under: Column 27 comments

Yay! The first safehouse!

 


 

Pixel City, Test

By Shamus Posted Friday May 8, 2009

Filed under: Programming 133 comments

If you’re one of the people who has reported 5 minute loading times with Pixel City, would you be so good as to try this download and report the results?

I’m not sure what’s causing these slowdowns, but the program should be running orders of magnitude faster than what you’re seeing and I’m sort of groping around looking for possible causes.

Thanks.

Also, the YouTube demo of the program seems to have taken off. It’s now the #6 top favorited movie this week under “Gaming” on YouTube. It’s also the #6 most watched gaming video in New Zealand. (Far outpacing interest in other countries.) I had no idea I had so many fans down there. Hello, New Zealanders. I love your accents. Your country is beautiful.


Link (YouTube)

Anyway, thanks to everyone for spreading the thing around. I do think that lots of public interest is a great motivator for taking care of a project after the fun parts are over with. We’ve very much entered the dull grounds keeping and janitorial phase of software engineering here, and knowing people are still using the software and following the project gives me a reason to make sure everything is as polished as possible given my miserly time budget and general indolence towards projects that have left the experimentation stage.

Finally, thanks to those who have worked on the project over at GitHub. I’ve brought some of your changes back into my own codebase. If we had a forum over there we’d be golden.

 


 

Procedural City, Part 14: Feedback and Assessment

By Shamus Posted Thursday May 7, 2009

Filed under: Programming, Projects 63 comments

Short version:

Thanks for all the feedback on Pixel City. Stating your version of windows and graphics chipset along with problem reports is invaluable. The current release version has a rather embarrassing memory leak in it, so prolonged use will make the system thrash for a while when you exit it. For those of you compiling along at home, this is already fixed in the codebase and you should integrate revisions #11 and #12, regardless of what else you’re doing with your own forked version.

For this reason, I’ll be issuing at least one more build of Pixel City that fixes this problem. I’d like to kill a few other issues in that same release if I can gather the data needed to do so.

Long version:

I want to start with this comment from Brandon:

I'm using an ancient machine (think 2003 or 2004). Barely 1GB of DDR RAM across three sticks, I don't even want to know what my processor is like, and the best thing in here is a 512mb AGP graphics card. But the screensaver runs relatively smoothly, provided I have absolutely nothing else running on my computer. With about four other applications open I average 15-20fps and managed to get up to 50fps when the camera swooped low and followed a street

This is very much what I expected: Just barely useful on a five year old machine. That fits with the my impressions on what we should be seeing, which is why I was very taken aback by reports from people with two or three year old machines that said the thing took ten minutes to start and ran at 2 frames per second. This was very alarming and had me worried that I’d somehow grossly misjudged what I was asking of the graphics hardware and the CPU. Brandon’s comment hints that I was probably right in the first place, and that these extreme slowdowns are coming from somewhere else.

Also interesting are reports from people claiming that it doesn’t work with multi-monitor setups, and other comments saying that it does.

The screensaver functionality was added late in the project, and was thrown together more or less at the last minute. I was slightly dubious about taking a system I’d built carefully (but not adequately tested) and setting it atop a system I’d built in great haste and hadn’t tested at all.

For the record, the program makes no special effort to support or not support multi-monitor setups. How Windows screensavers work is that your program is invoked and instead of manually creating a window yourself like you do in most programs, you are simply given a pre-existing window to use. This can be a bit strange when you’ve got a 1920×1200 monitor in front of you and (say) a 1024×768 monitor to one side and Windows is creating a single frame to encompass them both. One obvious problem is that windows must be rectangular. Assuming the small window occupies the same vertical space as the larger one (which is by no means certain) then your program is going to have a 2944×1200 region to fill. Even worse, within that render-hungry expanse is going to be a 1024×432 rectangle that’s being rendered and then discarded.

(EDIT: And just to be clear, the program doesn’t really have any idea that it IS on a multi-monitor setup. It’s just handed a window. I’m sure it’s POSSIBLE to query the setup and the monitor sizes and their geometic relationship, but I’m sure that would be a lot of work, and I’m not even sure what benefit it would be. The program still has just one window and one render context.)

How that window behaves and what monitors is spans is very much open to how multi-monitor support has been implemented. I know some graphics cards have their own multi-monitor setups that exist outside of the same functionality as provided by windows. Couple this with the fact that different versions of windows probably have different ideas about how window regions are stitched together and you have a recipe for something that will take a lot of time and experimentation with different monitor setups to understand. Keep in mind that I was never really that interested in wrangling with the Windows screensaver functionality. My real goal was the procedural city stuff, and the rest of the project was just scaffolding to support that idea.

The extreme slowdowns are a little more perplexing, and right now my instinct is to again blame the unknown behavior of the Windows screensaver functionality.

The directions I’d read online indicated that Windows would provide your program with a pre-existing window, and would then call WM_PAINT as fast as possible. I was a bit surprised at this, as this is a break from the behavior we see elsewhere in the operating system. Normally a window only gets a WM_PAINT when its contents need to be redrawn. If you move a window around the screen, resize it, or bring it out from behind other windows, it gets a WM_PAINT message letting it know that it needs to redraw. But here we have a situation where WM_PAINT is supposedly being called indiscriminately, and at an unknown (or undocumented) interval.

I’m strongly suspecting that WM_PAINT isn’t getting called very often on some systems. In screensaver mode, everything is bound to that one WM_PAINT message, which is putting a lot of trust in a feature that I don’t know much about and didn’t make sense to me in the first place. If Windows only calls WM_PAINT twice a second, then the program will take ~512 seconds to build the world and will run at two frames a second no matter what hardware you have. This seems to meet with observations.

One solution is to set up a WM_TIMER and see if that solves the problem. This would let me direct windows to call me every (say) 17ms or so, which would give me the desired 60fps framerate.

 


 

Another XKCD Ripoff

By Shamus Posted Wednesday May 6, 2009

Filed under: Pictures 32 comments

I don’t know why, but here is another one. With apologies to Randall Munroe.

Fine! No more rhymes if you feel so strongly about it.