The Backstory
The Internet Archive is an amazing resource. Any time I want to find texts on anything I’m interested in learning about, I love having a look there through old books, magazines, software and other media to see if there’s anything cool I can find. In my search for games-related content, I discovered GAMES Magazine and within the very first issue I came across this contest that truly captured my imagination.
The Idea
The issue of GAMES Magazine that this contest appeared in (Issue #1) was from 1977, and largely focused on games and puzzles in a physical context (primarily board and card games). What I was keen to do was to see if there was anything I could find that would inspire me and that I could work into a digital form. Millionaire was a perfect first project to take on for a couple of reasons:
- The rules are incredibly simple.
- I was immediately able to identify how I would go about coding the game as set out in the magazine.
- I could see opportunity to iterate on the base concept to expand modes of play to keep players interested once the initial challenge had lost its novelty.
The Game
I have included the scanned image of the Millionaire contest feature from GAMES Magazine above, but to summarise, the flow of Millionaire goes as follows:
- Each letter in the alphabet is assigned a numerical value from 1 to 26. In its original form, the values increment in alphabetical order (A = 1, B = 2, so on).
- The player guesses a word.
- The values of each letter in the word are multiplied together to give the result.
- The player wins if they manage to find a word with a value of one million.
The Basic Implementation
Given that I was learning C++ primarily at this point in time, I wrote up a code snippet in C++ to cover the basic functionality required to calculate the value of a word input by the user
| |
Missing Functionality
This initial snippet, while capable of facilitating the basic flow of the game, is currently missing some important functionality. I intend to work on these in the near future.
Player Instruction
The initial text on running the code snippet does not indicate that the player has the ability to or should provide an input. This should be made more clear, and not assumed to be obvious to the player.
Input Validation
The player is able to enter any text input, including characters which have no assigned value. If the player attempts to input other characters, the program should handle this by explaining the error and prompting the player for another input.
Handling of Capital Letters
If the player enters their word using capital letters, that is currently treated as characters with no assigned value. This can be handled either by making sure capital letters are also assigned values, or more elegantly converting text inputs to all be lower case before values are assigned.
Dictionary Look-Up
The player is able to enter strings of characters that would not satisfy the rules of the game because they are not a valid word. Adding a dictionary to check words against would help to ensure that guesses are valid words.
Extensibility
Score Attack
Instead of trying to find a word that scores as close to 1,000,000 points as possible, the player is instead trying to find a word that gives the highest score possible.
Implementation
This should be easy to implement. The changes required would be as follows:
- Creating a variable to store the player’s high score, initialised
- Adjusting the if statements that check if the value is one million to instead check if the value is greater than or equal to the current high score, and then updating the high score variable
Alternate Letter Values
The amount of valid words that can be used to find a value of exactly one million are extremely limited with the letters of the alphabet assigned as they are in the initial contest and code snippet. To allow for more replayability, the player could be allowed to shuffle the values of letters, adding new challenge to the game.
Try It Out
Replit
The code sample above is also on Replit, where it can be run in a browser simply by pressing the green ‘Run’ button at the top of the browser window. You can find it at the following link: Replit Code Snippet
Summary
I think there’s something beautiful in being able to look at a page of a magazine that was published when my mum was only 7 years old, and being able to not only find fun in the simplicity of the concept but to use that as a jumping off point for thinking about how I might create it in a digital form, and how it could be extended to add increased replayability.
It can be easy to get bogged down in layers of complexity when it comes to thinking about games. We’re so used to games in the spotlight having incredibly involved systems and mechanics, and there are great things about that, but there’s still something special to be found in simplicity.
Next Steps
I think this would be a fun project to rework in the form of a more polished game that the player would interact with via a more polished UI. This game’s simplicity makes it an ideal candidate for being a pick-up-and-play sort of game that would be best accessed either via a browser or on a smartphone. It requires little up-front commitment from the player, allowing for short play sessions that would be absolutely ideal to pass some time on a portable device while there are a few minutes free between tasks, or to have on a second (or third if you’re fancy) monitor while another task is the primary focus.