01 February, 2025

Prehistory XXII: Battle(Ship)


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:

"Congratulations -- A direct hit every time."

Nice to see an acknowledgement for a perfect game. I'm not likely to try this, as there's always going to be a large degree of luck involved, but it's certainly possible to achieve.

That does it for Battle. Now to do the scores.

Time Played: 45 minutes
It takes a lot longer to complete a round than almost all of the other games I've played to date. My first run (which I took notes while playing) took roughly 33 minutes, and my second about 8-and-a-half, so I'll round it up to make things easy.

Difficulty: 3/10 (Easy)
It wasn't particularly difficult for me to figure out how to decode the matrixes I was given. The first one was a bit more challenging, as I didn't know how the game was going to code the fleet's position, but once I started to understand how the game did things, it was fairly easy to figure out the code.

Gameplay: 7/20
I'm actually fairly impressed with Battle from a game design standpoint. It's a clever twist to convert Battleship into a code-breaking puzzle game, and it works well. Each round is different from the last, meaning it has some replay value. While still very simple, it's miles better than the glorified RNG simulators that I've been playing recently.

Controls: 10/10
Each move only consists of 3 inputs, with the second always being a comma, and the first and third always being a number between 1 and 6. No issues with inputs on this one, full marks.

Visual: 4/10
It's roughly down-the-middle as far as text-based games are concerned. The fleet matrix is nice and clear, but the text generated upon destroying a ship is a lot, and feels quite cluttered. I think it would've been easier to digest if each type of ship was on its own line, instead of all three being on the one line. There's a little bit of charm and personality in the writing, but not enough to give it another point.

Functionality: 5/5
As with most text-based games of this ilk, everything works perfectly.

Accessibility: 3/5
It helps that Battle is based off a highly recognisable game, so that gets it an extra point, but text games still aren't an easy thing to get into.

Fun Factor: 8/20
I enjoy numbers and patterns quite a bit, so Battle appeals to me quite well as a puzzle game. It's simple but enjoyable, and has genuine replay value.

With these scores, Battle earns the second-highest position on the tier list (at the time of this blog), with a final score of 37/70 (52.85%). It just barely misses out on a C-tier placement, having to settle for a spot at the top of the D-tier. It's nice to see some improvement on the game design front, and something with actual gameplay to talk about instead of yet another RNG simulator.

I'm contemplating some re-scores once the Prehistory series is done, as I need to re-evaluate how I score controls and visuals on text-based games. I'll do a score change round-up blog once I complete the final games from 1970.

Don't forget - if you enjoy my blog, be sure to leave a comment and follow so you don't miss any updates!

No comments:

Post a Comment