Release Date: October, 1970
Platform: Unspecified Mainframe
Genre: Puzzle
Developer(s): Ray Westergard
Publisher(s): DECUS
I haven't had to skip a game on my list this time, which is a welcome change to what I've become accustomed to during this series of blog posts. What isn't different here is that it's yet another pre-existing game getting the digital conversion treatment: Battleship. I suspect most people would have played this classic guessing game at least once in their life - I know I did. I think this is the first time I've really had a personal connection to the core idea one of these games is based on, as I have a real fondness for Battleship thanks to my childhood memories of it. I played it quite a lot as a kid, actually. It was one of those games I had a fascination with, I don't know why, but I played many different physical and digital versions of it growing up. I never played any versions of Electronic Battleship, however. It was either fully digital, or fully old-school with the plastic pegs.
Having said all of that, this game, which is probably the first video game adaptation of Battleship, is a bit different. While it still retains the core Battleship gameplay concept, it comes with a twist, one that I'll discuss a little bit later on.
First, as per usual, I'll discuss authorship. The good news here is that we have an undisputed author for Battle: Ray Westergard, of the Lawrence Hall of Science, situated at the Berkeley campus of the University of California. He even wrote the program description found in BASIC Computer Games. I couldn't find much more certain info on Westergard, as he has no other game credits, and there appear to be multiple people of that name: one appeared to be a Unitarian theologian (awkward), and another an abusive university professor (extra awkward.) There's a possibility that neither of these are the Ray Westergard that programmed Battle, considering that the game is near 55 years old, so the Ray Westergard in question may very well have passed away during that time. At least this short dig was an interesting one.
Now, back to the twist I mentioned. It seems that, since this is a singleplayer implementation of Battleship, that Westergard felt that some modifications needed to be made to make it function properly. So, what he decided to do was add some codebreaking into the mix, which transforms the classic strategy board game into more of a puzzle game.
The concept is this: the game provides you with a 6x6 matrix of the enemy fleet, consisting of 6 ships. However, it's a coded matrix, meaning that the supposed positions of the ship on the matrix the game gives you are not the actual locations of the ships. Your job is to simultaneously decode the matrix while sinking the enemy fleet in as few turns as you can.
![]() |
Battle's BASIC Games page might do a better job of explaining things. |
The instructions of the game expect you to write out your own matrix as you play, which is exciting for me as it's the first time on the blog I get to use spreadsheets. Believe me, I will be making liberal use of the mighty spreadsheet in the future, especially with RPGs... In this game's case, I'll simply use a spreadsheet to write out my own matrix as the game suggests.
![]() |
You must decode the matrix. |
Upon opening the game, you're presented with the coded matrix of the fleet's positions. To make a shot, you input first the X-axis (horizontal co-ordinate) followed by a comma, and then the Y-axis (vertical co-ordinate.) I opt for 1,1, suspecting that the code may involve the 0 spaces. It does not, and I hit open water.
Next, I try 1,6 (top left,) seeing as the matrix says there's a ship there...
![]() |
It's not a great code if the ship is actually where it says the ship is... |
It's a hit! I successfully strike ship 1, one of the destroyers. The matrix says the other spot should be on the right, so I go for 2,6, but that's a miss. That gives me a clue about how this matrix is coded. Perhaps the ship positions are perpendicular to how they're presented on the coded grid?
Armed with this theory, I go for 1,5 next.
![]() |
Hurrah for the good guys indeed. |
My theory was correct! One ship down, five to go.
I decide to go for the other destroyer next, ship 2. It's highest position is 3,6, so that's what I select. My theory at this moment is that the topmost co-ordinate is correct, but the ship's alignment is perpendicular to what's presented on the grid. Turns out this was incorrect. It's a miss. I try 3,5 instead.
![]() |
An unexpected surprise, but a welcome one. |
Something unexpected occurs - I get a hit, but not on the ship I was aiming for. I hit ship 6 (a carrier) instead. Interesting...
Next I opt for 2,4, suspecting that the carrier is aligned north-east. Another unexpected occurrence! I hit ship 2! That makes me curious, could ships 2 and 6 have their positions switched? I try 2,3 next, but I miss. 2,5 also accrues a miss.
Here is what my spreadsheet matrix looks like at this point. |
At this point, I realise that ship 6 can only be going eastward, as that's the only 4-long space available (assuming that ship 5 is where it says it is). I am correct, and take out ship 6 (while accidentally putting a miss on 6,6.) It's also helpful in ruling out the rest of row 6, as no other ships are small enough to fit in that gap now. At least for ships 2 and 6, my theory of perpendicularity has proven true. In the case of the vertical ship (6), it was also shifted up one space north-east as well.
The thought now is that, perhaps the opposite is true of ships aligned horizontally on the coded matrix? Perhaps they are also shifted, but one space south-west? It proves true in the case of ship 2, as 1,4 is its other position. Halfway there.
![]() |
Insert Bon Jovi reference here. |
I look to ship 4 next, as the other two are diagonals, and I'm not sure how to deal with them yet. If my theory is correct, 4's true position should be 3,4 - 4,4 - 5,4.
![]() |
Hmm... |
Another curveball is thrown, as I hit ship 5 instead of 4. Hm. Well that changes things a bit. There's only two potential locations for 5 - straight west, or straight south. Going south could potentially land me a hit on 3, while confirming the position of 5, so that's what I decide to do, and go for 3,3.
Miss. That's frustrating. The silver lining is that I've confirmed 5's position as westward.
![]() |
Except I hadn't. |
Or so I thought. I go 4,4, and I hit ship 3 instead. What? That's not what I expected at all! That means that 5's position hasn't changed at all... Does that mean 3 has simply been shifted to the opposite side of 5? It has, as 5,3 registers a hit, and 6,2 sees the cruiser fall to the bottom of the ocean.
Where the heck is 4 supposed to be? |
So where on earth is 4, then? It can't be anywhere near its original position. There are a few potential spaces for it left on the grid in the south-west section. I come up with the theory that it's in the same spot, but on the perpendicular side. I try 2,1 to test this theory, and am correct. The fleet has been successfully dispatched. My final splash/hit ratio is .3888889. If I'm reading the instructions correctly, that's pretty good, as it's calculated as a fraction (splashes/hits), meaning a smaller ratio is better.
![]() |
A job well done. |
The true positions of the fleet. |
Now, having had the first run help me get my bearings, I had to find out whether the code algorithm was consistent or not.
Upon starting my second game (seen in the video up top), I could definitively say the answer to that question is no - the code is different each time. For my second game, the positions of all ships were essentially opposite to what the matrix said. For visual reference, here's my finished spreadsheet for game 2:
It was opposite day for this fleet. |
The game matrix is on the left in this image, with my completed game on the right. You can see this "opposite" code most clearly with ships 2, 4, and 5 - with 4 being in the opposite corner, and 2 and 5 also being in their opposing corners, and rotated. 3 is the odd one out in this set, as it doesn't move into its opposing corner, but is just rotated 90 degrees. My splash/hit ratio was the same as the first game, in case you were curious.
I think this is enough evidence to suggest that the game changes the code for each game. I could play a few more rounds to see if it randomises or selects from a limited set of rules, but I don't see much point in doing that. I can't read BASIC, either, so I couldn't tell you from looking at the source code how the game determines the fleet positions and matrix code.
What I can tell you from the code is that there is a little congratulations message programmed if you take out every ship without missing. It simply reads:
No comments:
Post a Comment