Saturday, May 18, 2019

Spacewar!, exclamation point and all

I am fortunate to be Facebook Friends with Matt McIrvin - as you can see on his blog we share interests in old video games and he has lots of interesting things to say on the topic, not all of which makes to his blog.

He recently posted this video on the PDP-1. The PDP-1 was a computer system of a lot of firsts, including the first programmed video game, "Spacewar!" (in the 1980s, may aspiring geeks learned the story of its development in Steven Levy's book "Hackers: Heroes of the Computer Revolution" - I'm also lucky enough to share a Science + Spirituality reading group with Jack Dennis, one of the characters in it.)

I cued up this video to the Spacewar! section:


The game had a huge influence; you see it's sense of space motion and blasting in the early 80s hit Asteroids and then its 1;1 combat explored deeply in the 1990 game "Star Control", to name the two most obvious examples.

I found some interesting blog posts by Owen Macindoe on the MIT Game Lab site, back in its heyday as Gambit, as they go on a deep dive of the old MIT code:
Investigating the Spacewar! Source
The Night Sky in Spacewar!
Reconstructing the Vector Graphics in Spacewar!

In the video, we see bullets colliding and cancelling each other out - that's a detail that cheap duplicates of the game often miss (possibly being computationally expensive!) but that adds an important defensive aspect. It's also related to something that's always bugged me about the game: if one rocket ship is short stubby and the other long and sleek, isn't that unfair to one player? The answer is probably related to this explanation given by undergraduate Kaivan Wadia in a final blog entry on their work to reconstruct the game on Arduino, The Peculiar Spacewar!:
We finally decided to implement the collision algorithm used in the original game. The original algorithm considered imaginary circles around the spaceship and detected whether any object capable of blowing it up was within that circle. This resulted in a slightly mysterious effect where torpedoes could pass through the spaceship occasionally. Sometimes two spaceships could pass through each other at certain angles. A spaceship could also be blown up by a passing torpedo that was not going to hit it, but was simply within the circle. 
That jives well with this line in the commented source:

 000016 006000 6000  / collision "radius"

from my experience handcoding a lot of games, that's usually a telltale of some fast to calculate but rarely distractingly inaccurate math to know when things hit.

No comments:

Post a Comment