The goal of this project was to develop a game within MATLAB to suit a specific type of user, create a website supporting that game, and promote the game using advertisement and elevator pitches. To accomplish those goals, the project team decided to code the game “Battleship” with advanced user controls, good graphics, and a smart computer AI to play against the player.
In order to determine which game to develop, the team conducted two different user interviews on people who were above the age of 7 (since younger players would be suited better for very different types of games). Using such an age group (7+), the game decided to program Battleship because users interviewed wanted a game that take approximately 5-10 minutes to play and that involved some competitiveness and strategy. Furthermore, the team determined that Battleship can be optimized with a few simple additions to make it better than a typical version of the game.
As mentioned previously, the team elevated the typical game of battleship by focusing on advanced user controls, good graphics, and a smart computer AI. Advanced user controls simply means that the game can be played using only mouse-inputs. The team chose to do this to make the game easier to play, since the use of key-inputs was determined to be less intuitive and more time consuming for the player. Good graphics simply means that the water and ships are depicted semi-realistically, and the board updates in real-time with user-inputs. Finally, the team programed a computer AI to play against the player. The program is smart because it acts as a human would if it gets a hit (by ensuring to destroy the entire ship before returning to shooting at random spaces). The combination of all three of those factors makes this version of Battleship far superior to other versions available on the market.
In conjunction with development of the game, the team also created elevator pitches in an effort to persuade software developers to work on the game, as well as to persuade potential buyers as to why they should purchase the game. To summarize those findings, developers have an opportunity to gain valuable coding experience (with no previous experience required), work on real-world problems, and in a team setting by working with the team on Battleship. Buyers have an inexpensive way to occupy their child’s time while simultaneously teaching them strategy, patience, and critical thinking all in a fun and engaging way. In conjunction with those pitch videos, the team also made a website documenting the project and a one-page graphic advertising the game.
Throughout the process of developing the program for Battleship, the team ran into a number of issues and places where the program could be improved. One major issue upon initial testing was that the player didn’t know how to play the game (how many ships to place, where to place them, how to place them, how to shoot, what the spaces meant, etc). Luckily, that issue was quickly and easily fixed by including onscreen text prompt throughout each major stage of the game guiding the user on how to play. Despite such an easy fix, other elements of the game have potential to be improved, but would require much more time to do so. For example, when the user places their ships onto the board, the ship will be places to the right of their click (if horizontal) and below their click (if vertical). To make that more evident, a feature such as highlighting the spaces the ship would be placed onto if clicked in green would make it more clear to the player. Another recommended change would be to make the AI slightly more advanced. Currently, if the AI gets a hit, it will test the 4 spaces immediately surrounding that hit until it gets another one. At that point, it will continue shooting in that “line” until a miss, and then shoot in the other direction until a miss. That system works incredibly well and is very similar to how a human plays the game. However, there is a weakness with such a system. If the player places their ships horizontally stacked on top of one another, the AI will shoot vertically up the centers of the ships and then stop (believing it has destroyed one vertical ship as opposed to 1 hit on 5 different horizontal ships). To fix such an issue, the AI could utilize onscreen information which displays whether a ship has been destroyed or not (currently the AI does not utilize such information – but the player does). By using that information, if the AI thought it destroyed a ship, but a message saying that the ship was destroyed does not pop-up on screen, the AI would know it should continue taking shots in the same area before returning to random guessing. One final recommended addition to the game would be to add sound effects to the game. That would make the game slightly more fun to play, as well as adding another element to differentiate it from similar versions of the game.