Spoiler Warning 10: Welcome to Feros

By Shamus Posted Tuesday Mar 9, 2010

Filed under: Spoiler Warning 32 comments

We’ve given composer Kevin McLeod credit in the video for the groovy credits music, but I don’t think I’ve ever given him a proper link… UNTIL NOW!

I think I’m starting to get beige fatigue. Really. How many brown tunnels can a team of artists make before they all decide to commit ritual mass suicide? We must be nearing that threshold by now. Throw some colored lighting in there. Some greenery. Maybe give the colonists non-brown clothes? Maybe they paint their cargo container houses? The monotony really struck me when I re-watched this episode prior to posting. I guess the pervasive brown makes sense here in a world of ruins. But after Noveria it just feels like too much. Since Noveria was a modern inhabited place, they should have added some color, particularly to the bunker-like hotel and lounge area. It makes the races of the galaxy feel sort of culturally dead.

So, I guess I’m complaining about the brown, even though this is the one place in the game where it actually makes sense. I’m unreasonable like that sometimes.

 


 

Stolen Pixels #175: Ubisoft!

By Shamus Posted Tuesday Mar 9, 2010

Filed under: Column 87 comments

Levels of failure:

5) I laugh at you.
4) Everyone laughs at you.
3) I make a joke about you.
2) I make a series of jokes about you.
1) You transcend joke made about your failure and become a joke yourself.

Nice one, Ubi.

 


 

My Version of Tetris

By Shamus Posted Monday Mar 8, 2010

Filed under: Programming 72 comments

In 1990 I was given my first IBM PC as a graduation gift. The machine came with a copy of Borland Turbo C, which was a programming environment. I didn’t know the C programming language at the time. Before then, I’d been using Basic. I realized that Basic wasn’t going to cut it in the professional world, and it was time for me to learn a grownup programming language.

The machine came with the Borland reference books. You could use these to look up individual functions and remember their syntax. And that’s all. They contained no real instruction on the structure and behavior of the language itself. Learning C with these books was like trying to learn English using only an English dictionary, or learning to drive using only the owner’s manual for your car.

This was also pre-internet (for me) so I couldn’t look up anything online. I didn’t even know any C programmers. I’d graduated and it was summer, so I no longer had any teachers to ask. Looking back, I suppose a trip to the library might have been worth a try, although that didn’t occur to me and I’m not sure if they would have kept any relevant books on hand.

So my only way forward was to sit in my bedroom and try to puzzle out the language based on my own guesses and whatever truths could be gleaned from the three-line code snippets scattered throughout the book.

So I wound up with some gaps in my knowledge. Specifically, I didn’t know you could make your own functions. This is a hilarious thing to not know. A C program might look like this:


void DoAwesomeThing ()
{
     be awesome here;     
}
 
void DoNeatThing ()
{
     do some stuff;
     DoAwesomeThing ();
}
 
void main ()
{
     do some stuff;
     DoNeatThing ()
     do some more stuff;
     DoNeatThing ()
     do still more stuff;
     DoNeatThing ()
}

But if you don’t use functions – if you can’t (or don’t know how to) make DoAwesomeThing or DoNeatThing – then the program will turn into this:


void main ()
{
     do some stuff;
     {
          do some stuff;
          {
               be awesome here;     
          }
     }
     do some more stuff;
     {
          do some stuff;
          {
               be awesome here;     
          }
     }
     do still more stuff;
     {
          do some stuff;
          {
               be awesome here;     
          }
     }
}

If you find a bug in awesome thing, then you need to fix it in three different places. Copy & paste errors will propagate and the code gradually becomes an unreadable mess. Doing things this way basically defeats the most important features of the language. (I did things this way because I was trying to map my knowledge to C to my knowledge of Basic.)

Most programmers will look at the above code and get all twitchy. It’s just so perfectly wrong.

Never one to settle for small, reasonable goals, I decided that the best project after Hello World was a full-featured graphical version of Tetris.

I wrote Tetris without a single function call. The entirety of the program was contained within main (). Start screen, the game loop, user input, line removal, scoring, increasing levels of difficulty, game over, high score list. Everything. All in main (). I cannot stress how convoluted this was. The code indenting was so deep that if you scrolled halfway down the (terrifyingly long) page, you would see nothing but blank space. The line indents were all the way off the right side of the screen. You had to scroll a full page width horizontally in order to see the code.

I finally got my hands on real C code and learned how things are supposed to work. I wrote and re-wrote Tetris a few times over the next few years. I had a friend who would put the new versions up on a BBS for me. When you exited the game, it printed out my real, actual home address and invited you to send a postcard. (I got three. Furthest away was from Japan. I was so excited. I communicated with someone in Japan! I’m sure I do that every single day now.)

The program and the source vanished ages ago in one of my early computer migrations. Shame. I would pay good money to see the no-function version of the Tetris source again, if only to gape at the horrifying awfulness of the thing.

On a whim, I Googled around to see if it had made the jump from BBS to internet. It did:

shamus_tetris.png

That’s a 16 color graphics mode. I made it look like it had more colors by using dithering. (I was SO proud of figuring that out. Wrote a whole bunch of code to do smooth dithered fades. Spent ages on it, experimenting and looking for ways to make the blend as natural as possible. But the whole system was obsolete before I wrote the first line of code. 256 color mode was all the rage and 16 bit color mode was on the horizon.)

The program was more future proof than many. It still runs on my computer and is still playable. The only thing that breaks is that there was no CPU throttle on the PC speaker based sound effects, so the sounds are reduced to almost completely inaudible millisecond long blips. (Sounds work right under Dosbox, though.)

You can get it here.

Controls:

Arrow keys. And you use the < and > keys for rotate left and right. For some reason.

And the source is gone. If it doesn’t work for you, then there is nothing to be done. Good luck.

 


 

Lord of the Demolitions Online

By Shamus Posted Sunday Mar 7, 2010

Filed under: Pictures 40 comments

This is not a photoshop.

lotro_auctionhouse.jpg

I have issued a list of demands to the developers at Turbine. They must give my character exclusive access to a new “I fart in your general direction” emote, deliver me 100 bottles of black dye, rename Bree to Lulzytown, and let me use Gandalf as a ride-able mount. If they fail to meet these demands by midnight tonight, I will destroy the shire auction house.

Continue reading ⟩⟩ “Lord of the Demolitions Online”

 


 

OK Go – This Too Shall Pass

By Shamus Posted Saturday Mar 6, 2010

Filed under: Movies, Random 60 comments

As soon as I saw this on Monday, I knew it was going to be the Saturday morning video for this week.


Link (YouTube)

(For context: These are the same guys who did the treadmills video that was such a huge sensation a couple of years back.)

I’ve mentioned before that I hate DIAS videogames where you have to overcome a series of obstacles and any failure whatsoever means you have to do the entire thing again. And again. I don’t feel excitement when I’m playing. I feel a mounting sense of stress. I don’t feel exhilaration when I win. Just a grudging sense of relief.

I actually get that same panicky feeling when watching this video. Look at how complex and destructive this mess is. And how many places it could go wrong. This would take ages to reset. They made things even harder on themselves by integrating the timing of the song into the sequence, so that the gap in the song needs to line up with the glass-of-water “chimes”. Any alteration in speed before that point would ruin the take, even if the chain reaction wasn’t broken. And then you have the camera work: I still can’t figure out how the camera operator did his job. Look at how often he has to step over rails and tracks and possible debris. In some places – like the transition from the second floor to the ground floor – it’s not at all clear how a human being is doing this unless it’s someone who can fly. Or at least hover. So while this entire contraption is playing out, it’s pitted against whatever convolutions they’re going through to move the camera around smoothly.

They leave so much to chance. At the 3:15 mark, it would be easy for one of those little yellow balls to be in the way of the basketball, which would foil the entire take. And this is just seconds from the end! I would want to make sure the chancy stuff was at the beginning. I wouldn’t want anything doubtful going on in the later bits. Particularly after those destructive later steps.

As the video plays, I can’t help trying to calculate the odds of failure and multiplying that with the odds of failure from all previous steps and trying to deduce how long they spent in this Rube Goldberg purgatory. According to this article, it was 60 takes. The entire project took months.

How many TV’s were smashed? Did they patch the same piano up for every take, or did they have to get a new piano at some point? How long would a reset take if it failed near the end?

Much love to OK Go for bringing us so much entertainment.

 


 

Experienced Points: MMOG Crowd Control

By Shamus Posted Friday Mar 5, 2010

Filed under: Column 46 comments

A bit about MMOG’s as they age.

If you follow my Twitter you probably saw my comment last night that I hated the column I’d written and was scrapping it. A few people expressed interest. In order to prevent you from being eaten alive by speculation and curiosity, it was a bit on the fact that the Game Developers Choice Awards would be giving id Software co-founder and technical director John Carmack a lifetime achievement award. I’d intended to do a sort of tribute to the guy. Sort of, “For you young people, here is who this guy is and why you should care.” But it ended up coming across as kind of creepy and fanboyish instead of informative.

 


 

Stolen Pixels #174: Better Than Aquaman

By Shamus Posted Friday Mar 5, 2010

Filed under: Column 41 comments

Go read the comic, then come back if you like and read a bit about the humor in this strip.

Continue reading ⟩⟩ “Stolen Pixels #174: Better Than Aquaman”