Casual slot-style gambling games are great distractions while working out because they are addictive and require little to no mental effort to play and enjoy. As a result, they are an excellent choice for the [adult swim] show FishCenter Live, which takes place in an indoor pool. Tropical Treasures is a game of this type, and I was able to get it from the idea stage to the production stage in just over a week. This provides information about the procedure and the overall experience.
Context
FishCenter Live is a one-hour live call-in show that streams online. It is obvious that it has a low production value in comparison to the rest of the network’s programming; however, this contributes significantly to its appeal. During a typical week, Matt Harrigan, the co-host, would sarcastically estimate that “upwards of 20-30 people” would watch the show. Many people participate in live chats on tlk.io and twitch. tv and some of them call in to play games and earn points for a fish of their choice. As the day winds down, it’s the equivalent of hanging out with “the guys.”
There are a few chance-based games at FishCenter; some of these games are played by fish, while others are played by callers. “Tropical Treasures” immediately came to mind after Matt briefly mentioned on the show the previous Thursday that he would like to see more gambling-type games on the show. This is due to Matt’s daily participation in workout session slot games over the last few weeks.
Game Development
Coin Quest is the most popular game in FishCenter Live. Different coins are placed over the tank in this game, and the fish score points based on whether or not they “hit” the coins. The same is true for the game Tropical Treasures. When a fish “hits” one of the red negative coins, it loses a point and triggers a spin with the active pay line corresponding to the position of the coin that was hit.
On Wednesday’s show, the hosts modified the game by asking a caller to select a fish to play with. While I imagined it as a game of Coin Quest, with fish taking turns spinning, they asked a caller to choose a fish to play. This worked, and the fish Tang spun twice and won 15 points, for a total of 13 points, which is slightly more than the average bonus win.
Because the primary goal of FishCenter is for fish to accumulate points rather than lose them, I knew the game would need to offer significantly higher payouts than a typical slot machine to be successful. Because The Wizard of Odds is an incredible resource for anything and everything related to probability, I used their analysis of the Australian Reels slot game as a starting point for the design of this game. Finally, I was successful in creating a game that, according to statistics, offers a 400 percent return. If statistics are of particular interest to you, the spreadsheet may be of assistance.
Regardless of the production value of the content, the nostalgic 8-bit, glitch and low-fi themes are embraced in the graphic design of [adult swim] content. Graphic design is frequently well-executed but rarely polished. FishCenter is no exception, so I had no qualms about keeping the graphics of this game simple but not simplistic. The slot symbols were all repurposed from the show’s main webpage, and the rest of the graphics were created in Photoshop using a variety of fonts and clip arts.
Although the finished product has three trigger coins, the original design called for coins to surround the reels in all directions. This would have allowed both horizontal and vertical spins to be initiated. We could only show three coins on the screen due to space constraints.
Development
Angular has truly achieved its goal of reducing the amount of time spent on development. However, because it is a framework that I am familiar with and have used in the past, I decided to use it for the development of Tropical Treasures, even though it is gross overkill for such a simple game. It’s also effective.
Having said that, as a result of this project, I’ve become more aware of and learned to avoid some pitfalls.
The most obvious issue with Angular was the method I chose to highlight the active pay line. This was accomplished by modifying the background-URLbackground URL with the ng-style directive. Because ng-style cannot possibly anticipate all of the background images it will ever set, those images are not requested until the style is changed or initialization occurs. There are some JS-based solutions for preloading the image nodes and including them in the directive; however, I figured that for such a small project, preloading them directly via HTML wouldn’t be an issue. There are some methods for preloading image nodes and incorporating them into the directive.
Angular is running several background tasks, one of which is monitoring the variables for changes. The primary variable in this game is an array of reels that are generated independently of the rest of the game. I was pushing each new reel to the $scope.reels variable when I first started using the controller. Because this caused some minor performance issues, I separated it into a new function that only mutates $scope. reels once rather than three times. It is recommended that when working with Angular controllers, you construct your objects outside of the $scope variable so that you can make as few changes to the $scope object as possible.
Takeaways
Programming is fascinating because it allows you to turn your ideas into reality. You have the option of having the vision and putting it into action rather than having the vision and wishing for it.
This was the first time I had purposefully started coding with unit tests, and it was both wonderful and strange. When you’re used to a workflow that doesn’t include testing tools, being forced to learn how to use them can feel like a chore. It can double the amount of code you have to write, requiring significantly more effort to complete.
But, in the end, testing was a huge help to the development process. The initial version of the scoreLine() function did not account for all of the wild values. Even though I hadn’t specifically written a test for all wilds, the other tests brought the issue to my attention much sooner than it would have if I hadn’t done those other tests. Who wants to wait until the payouts for all possible combinations have been checked and double-checked before playing the game?
Test-driven development compelled me to modularize my code and become more intimately acquainted with it. Testing from start to finish was something I was unable to complete for this project, which is understandable given its goals. When I move on to the next project, I will make it a point to include not only the functions that I write but also end-to-end angular tests.
- Cybersecurity Essentials To Defend Your Business - January 24, 2024
- The Trends & Benefits of BPO Innovation - January 19, 2024
- The 20-Move Rubik’s Cube Challenge Unveiled - November 28, 2023