Slots

Slots Slots

My first game, this app supports iOS and Mac Catalyst devices, bringing simple game logic, animations, and UI to Apple devices.

  • iOS 15+


  • SwiftUI 2.0

Concept

Building a video game can be a monumental task. Designing assets, complex interactions, and game logic requires a high level of expertise. Fortunately there are game designs which limit the complexity required to create a successful, entertaining experience. Games of chance, such as many casino or lottery style games rely on a strict set of rules and parameters which reduce the complexity required to develop. Slots is a basic match-3 style game, built natively in Swift, which tracks betting value, session score, and a global high score.

Solution

The foundation of Slots is built natively using SwiftUI, pairing a simple implementation of sound effects running through AVKit's AVAudioPlayer functionality, with game logic driven by Swift's Int.random() which generates a random integer within a specified range which corresponds with the various game assets.


Once each of the three Int values have been generated, they are compared against each other using an if { else } conditional statement to determine whether there are matches between any two or three of the generated values. If a match is determined, then the user is 'paid out' either 5x or 10x points proportionate to their initial betting value. If a user depletes their entire amound of coins, a 'Game Over' modal is displayed to the user, which also triggers a global reset of the game environment, while maintaining the High Score value, if applicable.

To create a more interactive experience for the player, the app uses a combination of animations, triggered by an onTapGesture() interaction with the 'Spin' button. By using ternary operators to provide multiple states for transformations such as .offset(), .opacity(), and a .animation(.easeOut) modifier, the illusion of a spinning slot machine is achieved.

Reload

Analysis

As an inital foray into the world of iOS game development, the Slots app successfully utilized the basic concepts in the underlying Swift framework. By using basic, but comprehensive game logic and effective animations, a fun and engaging experience can be created with comparitively minimal effort.

Slots, and other casino style games like it, are simple enough to be built in such a manner, but more complex efforts would benefit from a more robust platform. Complex game engines such as Unity or Unreal, or simply deeper frameworks such as C/C++ or even Apple's SpriteKit would provide a much more robust platform to develop future projects.