The ultimate spinning wheel view that supports dynamic content and rich customization.

Overview

SwiftFortuneWheel

CI Status Swift Version Version Support Platform Documentation

The ultimate spinning wheel control that supports dynamic content and rich customization.

Main Features
🏵 Dynamic content, supports texts, images, and lines
🎯 Adaptive text size with support multiline, alignment and line break mode
🎇 Supports background Image for each Slice (sector)
🧮 Supports vertical and horizontal text orientation
🌈 Appearance customization
🔊 Sounds and haptic feedback
🌋 Collision callbacks and effects
🎨 Drawn and animated using CoreGraphics, CoreAnimations
🔋 High performance, low memory usage

Layout Preview

Taken from example projects

Dynamic Content and Rotation Preview

Taken from example projects

Collision Effect Preview

Taken from example projects

Screenshots

from iOS Example Project

from macOS Example Project

from tvOS Example Project

Documentation

Installation

When you are ready to install, follow the Installation Guide.

API Documentation

You can find the docs here.

Documentation is generated with jazzy and hosted on GitHub-Pages.

Requirements

App name Swift Xcode Platforms
1.1.x - current version Swift 5.0 Xcode 11 iOS 9.0 / macOS 10.11 / tvOS 9.0
0.x.x - 1.0.x Swift 5.0 Xcode 11 iOS 9.0

Migration

Changelog

See changelog here

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

Donation

Thank me with a cup of coffee for my work and time spent on supporting the project

Buy Me A Coffee donate button

Author

Sherzod Khashimov

License

MIT

Comments
  • External audio stops right after fortune wheel initialization

    External audio stops right after fortune wheel initialization

    Navigating to a view controller that hosts a SwiftFortuneWheel stops any external audio that might have been being played within Music application.


    https://github.com/sh-khashimov/SwiftFortuneWheel/blob/883669528b6249cf9f5c9edf91e9b581876f6e40/Sources/SwiftFortuneWheel/Utils/Audio/AudioPlayerManager.swift#L36

    Commenting the init() of AudioPlayerManager seems to fix this problem. But this might have other consequences somewhere else.

    Note: I also need the collision sound effect to be enabled.

    opened by M-I-N 10
  • Bridge UIViewControllerRepresentable SwiftUI

    Bridge UIViewControllerRepresentable SwiftUI

    Is there currently any documentation on how to get the wheel implementation wrapped in an UIViewControllerRepresentable such that the package can be used in SwiftUI environments? I have tried to create a bridge myself and initializing a static wheel succeeded but did not manage to bridge the controls of the wheel. Thanks in advance!

    opened by bjornkoemans 9
  • Delay when presenting new VC

    Delay when presenting new VC

    There is a delay when presenting a new ViewController that contains the wheel, specifically when updateSlices() gets called. I tried calling updateSlices() in viewDidAppear and the wheel shows but the slices are not drawn yet. They appear after about 1 second.

    opened by IDontEatMeat 8
  • Oscillating pin image when it collides with any of the separator

    Oscillating pin image when it collides with any of the separator

    Can the pin image be oscillated?

    Actually it should be like, the pin image rotates +θ / -θ degrees (depending on the direction of wheel rotation) and move back to original immediately after the collision imitating an oscillation effect.

    I think a better visualisation would be these screenshots: Screenshot 2020-07-07 at 12 18 02 AM Screenshot 2020-07-07 at 12 22 04 AM

    enhancement 
    opened by M-I-N 7
  • UI Customization: adding custom image, rotate and stop at fixed angle range

    UI Customization: adding custom image, rotate and stop at fixed angle range

    The circular image is coming from server we need to add and rotation and set after certain rotations to particular angle range how can we achieve that

    help wanted 
    opened by Abhishek9634 7
  • How to adjust indefinite spin speed

    How to adjust indefinite spin speed

    First, thank you so much for this project. I have been waiting for something like this for years!

    Could you tell me what the best way is to adjust the initial speed of the wheel when it is in the indefinite spin mode?

    enhancement help wanted 
    opened by delucamike 6
  • can we set image (dynamic size --> fit to slice segment frame) and text in center for slice for any no. of slices in wheel?

    can we set image (dynamic size --> fit to slice segment frame) and text in center for slice for any no. of slices in wheel?

    Hi, is it possible to set image (dynamic size --> fit to slice segment frame) and text in the center of the slice for any no. of slices in the wheel? I actually tried and get the following output but not able to set image and text in the center but with a vertical offset, we can not get desired output. Any help would be appreciated. can you provide some guidance? wheel_image

    opened by kishanbh 5
  • Slices are empty in class SwiftFortuneWheel

    Slices are empty in class SwiftFortuneWheel

    When using SwiftFortuneWheel without storyboard, startAnimating(finishIndex) vanishes with the wheel. I've did a little research and found out that slices are not assigned on to the SwiftFortuneWheel class, only to WheelView. When startAnimating(finishIndex) tries to calculate the sliceDegree, it tries to divide by zero, hence the bug.

    I've fixed this in my code by reassigning to SwiftFortuneWheel slices variable

    self.fortuneWheel = SwiftFortuneWheel(frame: frame, slices: mappedSlices, configuration: configuration)
    self.fortuneWheel.slices = mappedSlices
    

    But I think this can be easily be solved by assigning it at the init function of the SwiftFortuneWheel

    bug 
    opened by brunodornelesbr 4
  • Cannot build on Xcode 14: Stored properties cannot be marked potentially unavailable with '@available'

    Cannot build on Xcode 14: Stored properties cannot be marked potentially unavailable with '@available'

    Hi everyone, before working on a simple fix, just just wanted to check whether everyone is encountering this issue with Xcode 14?

    Lines 128-131 of SwiftFortuneWheel.swift

    #if os(iOS)
        @available(iOS 10.0, iOSApplicationExtension 10.0, *)
        private(set) lazy var impactFeedbackgenerator = UIImpactFeedbackGenerator(style: .light)
    #endif
    

    Error: Stored properties cannot be marked potentially unavailable with '@available'

    Other librairies have encountered the same issue, the fix is not too difficult. Could someone confirm they have the same issue? Thanks.

    opened by KevinQuisquater 3
  • positioning on slice after update

    positioning on slice after update

    Dear @sh-khashimov thanks for creating this library, its very useful.

    I'm facing two issues right now can you please let me know how to solve them.

    the first thing is that i need to text and position like that as image i did it with some hardcoding values so is there any better solution for that as you can see code its not look good. Simulator Screen Shot - iPhone 11 - 2021-09-02 at 11 30 23

    second issue is that im getting correct value as you mention in other solve issue the value after rotation, and pin is also correcting a correct value but now i have to update the color for the winning and losing slices for this i try to do add update slice function and checking condition, the issue is that color is updating for all but now position is shifting from the pin. like here the pin should point "Graphic" can you let me know what im doing wrong here.

    Simulator Screen Shot - iPhone 11 - 2021-09-02 at 11 30 33

    here is the code which im using right now:

    `import UIKit import SwiftFortuneWheel

    class VariousWheelPodiumViewController: UIViewController {

    var selectedIndex = -1
    
    
    @IBOutlet weak var wheelControl: SwiftFortuneWheel!
    
    var prizes = [(id:0,name: "MONEYMONEY", color: #colorLiteral(red: 0.9607843137, green: 0.768627451, blue: 0.568627451, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1),losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1), textColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)),
                  (id:1,name: "GRAPHIC", color: #colorLiteral(red: 0.9843137255, green: 0.9098039216, blue: 0.8274509804, alpha: 1),winningColor: #colorLiteral(red: 0.9607843137, green: 0.768627451, blue: 0.568627451, alpha: 1), losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)),
                  (id:2,name: "HOME", color: #colorLiteral(red: 0.9607843137, green: 0.768627451, blue: 0.568627451, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1),losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1), textColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)),
                  (id:3,name: "IDEA", color: #colorLiteral(red: 0.9843137255, green: 0.9098039216, blue: 0.8274509804, alpha: 1), winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1), losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)),
                  (id:4,name: "MANAGMENT", color: #colorLiteral(red: 0.9607843137, green: 0.768627451, blue: 0.568627451, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1), losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)),
                  (id:5,name: "SEARCH", color: #colorLiteral(red: 0.9843137255, green: 0.9098039216, blue: 0.8274509804, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1),  losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)),
                  (id:6,name: "TARGET", color: #colorLiteral(red: 0.9607843137, green: 0.768627451, blue: 0.568627451, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1),  losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)),
                  (id:7,name: "TIME", color: #colorLiteral(red: 0.9843137255, green: 0.9098039216, blue: 0.8274509804, alpha: 1),winningColor: #colorLiteral(red: 0.9333333333, green: 0.6078431373, blue: 0.2705882353, alpha: 1), losingColor: #colorLiteral(red: 0.737254902, green: 0.2901960784, blue: 0.6156862745, alpha: 1),textColor: #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1))]
    
    
    
    var slices = [Slice] ()
    
    var finishIndex: Int {
        return Int.random(in: 0..<wheelControl.slices.count)
    }
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        wheelControl.configuration = .variousWheelPodiumConfiguration
        wheelControl.spinImage = "center"
        wheelControl.isSpinEnabled = false
        updateSlice()
        wheelControl.slices = slices
        
        
    }
    
    @IBAction func rotateTap(_ sender: Any) {
        let finishingIndex = self.finishIndex
        print(finishingIndex)
        wheelControl.startRotationAnimation(finishIndex: finishingIndex, continuousRotationTime: 1) { (isFinished) in
            guard isFinished else { return }
            print(self.prizes[finishingIndex])
            self.selectedIndex = finishingIndex
            self.updateSlice()
            self.wheelControl.slices = self.slices
            self.wheelControl.rotate(toIndex: finishingIndex)
        }
    }
    
    func updateSlice(){
        slices = []
        for (index,prize) in prizes.enumerated() {
            print(index,prize.name)
            
            var titleTextPreferences = TextPreferences(textColorType: .customPatternColors(colors: nil, defaultColor: .black), font: .systemFont(ofSize: 10, weight: .bold), verticalOffset: 20)
                titleTextPreferences.horizontalOffset = 10
                titleTextPreferences.orientation = .vertical
                titleTextPreferences.spacing = 0
                titleTextPreferences.alignment = .left
                
            var descriptionTextPreferences = TextPreferences(textColorType: .customPatternColors(colors: nil, defaultColor: .red), font: .systemFont(ofSize: 10), verticalOffset:-75)
    
            descriptionTextPreferences.horizontalOffset = 0
            descriptionTextPreferences.orientation = .vertical
            descriptionTextPreferences.spacing = 0
            descriptionTextPreferences.alignment = .left
    
            let content: [Slice.ContentType] = [.text(text: prize.name, preferences: titleTextPreferences),.text(text: prize.name, preferences: descriptionTextPreferences)]
    
            var slice = Slice(contents: content)
            if selectedIndex == -1{
                slice.backgroundColor = prize.color
            }else{
                slice.backgroundColor = index == selectedIndex ? prize.winningColor : prize.losingColor
            }
            slices.append(slice)
        }
       
    }
    

    }`

    opened by farazhaider88 2
  • IB Designables issue

    IB Designables issue

    Error on console - Fail to render and update auto layout status for viewController(Tsg-HD-LBo): Failed to launch designable agent because tool was shutting down. check the console for a more detailed description and please file a bug report at feedbackassistant.com

    on creating build the archive of app. work fine in debug mode. Please check this issue

    Process: IBDesignablesAgent-iOS [49639] Path: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/IBDesignablesAgent-iOS Identifier: IBDesignablesAgent-iOS Version: 12.3 (17703) Code Type: X86-64 (Native) Parent Process: launchd_sim [28516] Responsible: SimulatorTrampoline [455] User ID: 501

    Date/Time: 2021-05-25 14:56:38.077 +0530 OS Version: macOS 11.1 (20C69) Report Version: 12 Anonymous UUID: BFE8C29E-ACEE-3C30-748C-C5DF75B4B9C5

    Time Awake Since Boot: 10000 seconds

    System Integrity Protection: enabled

    Crashed Thread: 0

    Exception Type: EXC_BAD_INSTRUCTION (SIGILL) Exception Codes: 0x0000000000000001, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY

    Termination Signal: Illegal instruction: 4 Termination Reason: Namespace SIGNAL, Code 0x4 Terminating Process: exc handler [49639]

    Application Specific Information: CoreSimulator 757.5 - Device: iPhone 12 mini (1DD1CAF0-0420-4DAD-8DD0-5CDCE573BC9C) - Runtime: iOS 14.3 (18C61) - DeviceType: iPhone 12 mini SwiftFortuneWheel/SwiftFortuneWheel.swift: 17: 14: Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'SwiftFortuneWheel.SwiftFortuneWheel'

    opened by DeepakpalMakeMyIdea 2
  • The result will spin back to default, exit and enter to App on onetime.

    The result will spin back to default, exit and enter to App on onetime.

    Hello, @sh-khashimov. I have an issue that needs you to help with, can you spare time to fix it. Thank XD... When finished spinning, exit and enter to App on onetime. The result will spin back to default.

    https://user-images.githubusercontent.com/38234750/174224825-7e3063c4-d7bc-43e0-b482-1b948898b117.mp4

    opened by SSETong 0
  • Can we shrink or scale the slice text? Some of slice Word is skipped

    Can we shrink or scale the slice text? Some of slice Word is skipped

    Hello, @sh-khashimov thanks for your awesome library.

    I am using Podium Wheel Layout using variousWheelPodiumConfiguration

    - What is the issue I am facing

    • In the slice, the text does not fully appear it's cropping somehow, I have also added an image for your reference

    - What I have tried

    • I have set up the content margin & TextPreferences as well
              var wheelPreferences = SFWConfiguration.WheelPreferences(circlePreferences: circlePreferences,
                                                                     slicePreferences: slicePreferences,
                                                                     startPosition: .right)
            wheelPreferences.contentMargins = Margins(top: 0, left: 0, right: 0, bottom: 0)
    
           var preferences = TextPreferences(textColorType: textColorType,
                                             font: font,
                                             verticalOffset: 0)
           preferences.alignment = .left
           preferences.orientation = .vertical
           preferences.isCurved = false
           preferences.spacing = -1
           preferences.numberOfLines = 0
    
           public extension ImagePreferences {
              static var variousWheelPodiumImage: ImagePreferences {
                 let imagePreferences = ImagePreferences(preferredSize: CGSize(width: 50, height: 50), verticalOffset: 0)
               return imagePreferences
             }
          }
    
    • I have decreased the font size but the large screen device shows a really small size of the font

    - Questions ❓

    • Can we auto-shrink the font according to the device?
    • Do you have a temporary solution for it? If yes I will add it and also work on this project and I will create the PR
    • Could you please quickly suggest to me a file where I can review and temporarily fix my problem in the project?

    Issue Reference:

    Screenshot 2022-06-16 at 11 32 55 AM
    opened by chirag05k 2
  • SwiftFortuneWheelDemo-SwiftUI SFWConfiguration example not working

    SwiftFortuneWheelDemo-SwiftUI SFWConfiguration example not working

    Changing the two examples to other implementations in the lib such as

    @Published var wheelConfiguration: SFWConfiguration = .blackCyanColorsConfiguration to @Published var wheelConfiguration: SFWConfiguration = .variousWheelPodiumConfiguration

    does not seem to work for me. A blank wheel is shown with the blackCyan layout.

    opened by bjornkoemans 0
Releases(1.4.3)
  • 1.4.3(Oct 27, 2022)

  • 1.4.2(Oct 27, 2022)

  • 1.4.1(Oct 27, 2022)

  • 1.4.0(Oct 27, 2022)

  • 1.3.3(Oct 27, 2022)

  • 1.3.2(Oct 27, 2022)

  • 1.3.1(Oct 27, 2022)

  • 1.3.0(Oct 27, 2022)

  • 1.2.0(Oct 27, 2022)

  • 1.1.3(Oct 27, 2022)

    • characterWrap type added to the TextPreferences.LineBreakMode;
    • maxWidth added to the TextPreferences. With maxWdith possible to set maximum width that will be available for text;
    • Fixed text margins;
    • Fixed when numberOfLines = 0 may not work properly;
    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(Oct 27, 2022)

  • 1.1.1(Oct 27, 2022)

  • 1.1.0(Oct 27, 2022)

    • Added support for macOS 10.11 and above;
    • Added support for tvOS 9.0 and above;
    • TextPreferences initialize process changed;
    • ImagePreferences initialize process changed;
    • WheelPreferences initialize process changed;
    • SpinButtonPreferences initialize process changed;
    • PinImageViewPreferences initialize process changed;
    • AnchorImage initialize process changed;
    • Fixed image flipUpsideDown from not working;
    • See migration process here: from 1.0.x to 1.x.x;
    Source code(tar.gz)
    Source code(zip)
  • 1.0.3(Oct 27, 2022)

    • When you using startAnimating method to start indefinite rotation animation, it’s possible now change optional rotationTime and fullRotationCountInRotationTime parameters to change the rotation speed;
    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(Oct 27, 2022)

  • 1.0.1(Oct 27, 2022)

    • Fixed layout warnings;
    • Fixed incorrect spinButton background image setting;
    • Fixed incorrect spinButton isEnabled setting;
    • Fixed incorrect content image position;
    • Fixed incorrect content line position;
    • Fixed incorrect slice border width;
    • Fixed incorrect content position after setting circle border height;
    • Fixed horizontal position in the vertical text;
    • Other small improvements are made;
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Oct 27, 2022)

  • 0.9.0(Oct 27, 2022)

    • Added rotation API: rotate(toIndex index: Int), rotate(rotationOffset: CGFloat);
    • Added parameters full rotations until start deceleration and animation duration to animation API;
    • startAnimating(fullRotationTimeInSeconds: Int, finishIndex: Int) changed to startAnimating(indefiniteRotationTimeInSeconds: Int, finishIndex: Int)
    • Internal code refactoring;
    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Oct 27, 2022)

  • 0.8.0(Oct 27, 2022)

    • Text now can be separated into lines;
    • Added line break mode to the TextPreferences;
    • Added spacing between lines to the TextPreferences;
    • Added alignment to the TextPreferences;
    Source code(tar.gz)
    Source code(zip)
  • 0.7.0(Oct 27, 2022)

  • 0.6.2(Oct 27, 2022)

    • Fixed bug during the init process;
    • In TextPreferences, flipUpsideDown now default value is true;
    • Playground added to SwiftFortuneWheel project;
    Source code(tar.gz)
    Source code(zip)
  • 0.6.1(Oct 27, 2022)

  • 0.6.0(Oct 27, 2022)

    • Added line to Slice.ContentType and LinePreferences. Now supports a curved line inside a slice;
    • Optional backgroundColor added to Slice. You can now override a background color for specified Slice, during Slice initialization;
    • Optional centerImageAnchor added to WheelPreferences. You can now add a secondary anchor image for each slice that will be located at the center of wheel’s border;
    • Examples updated;
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Oct 27, 2022)

Owner
Sherzod Khashimov
Sherzod Khashimov
Gravity Switch - A dynamic game that integrates swiping and tapping to create a fun interactive game

GravitySwitch Gravity Switch is a dynamic game that integrates swiping and tappi

null 3 Nov 19, 2022
An iOS / Mac view controller for chess boards

FDChessboardView Features High resolution graphics Customizable themes and game graphics Supports all single board chess variants: suicide, losers, at

William Entriken 75 Jul 16, 2022
The one and only open source 4X MMO mid-core strategy game for iOS. Similar to Game of War and Mobile Strike

4X MMO Strategy Game for iOS I have spent 4 years of my life and a significant amount of money into completing this game and I hope you enjoy it. For

shankqr 69 Nov 16, 2022
iPhone and iPod Touch version of Skeleton Key: is an addictive and unique puzzle game in which you shift keys around the board unlocking treasure chests. Made with cocos2d-iphone.

Skeleton Key (iOS) Skeleton Key is an addictive and unique puzzle game in which you shift keys around the board unlocking treasure chests. It's availa

null 117 Jun 6, 2022
Recreating the Poketch from Pokemon Diamond and Pearl on the Apple Watch with SwiftUI and WatchOS 8

Apple Watch Poketch What is it? It's an Apple Watch remake of the "Poketch" from Pokemon Diamond and Pearl made with SwiftUI! Check out the YouTube vi

Idrees Hassan 297 Dec 31, 2022
XCode and Swift game based on the generation of random cards and some functions related to the comparison of the results.

war-card-game-V1 XCode and Swift game based on the generation of random cards and some functions related to the comparison of the results. Once a card

Eduard 1 Dec 10, 2021
Gamer-s-Collection - An app for searching and saving favorite games using rawg.io api and Core Data

Gamer-s-Collection - An app for searching and saving favorite games using rawg.io api and Core Data

Rıdvan İmren 1 Aug 19, 2022
Glide is a SpriteKit and GameplayKit based engine for building 2d games easily

Glide is a SpriteKit and GameplayKit based engine for building 2d games easily, with a focus on side scrollers. Glide is developed with Swift and works on iOS, macOS and tvOS.

null 433 Jan 6, 2023
A game engine built with SDL and Swift.

Lark A game engine made with Swift and SDL. This is a pre-alpha work-in-progress. Don't try to use this unless you really know what you're doing. I ba

June Bash 41 Mar 11, 2022
Solitaire mahjong game with several themes and layouts. For android/iphone/ubuntu/firefoxos

green-mahjong Green Mahjong is a HTML5 based GPLv3 solitaire mahjong game. It features three nice themes, six different layouts and works accross all

Daniel Beck 82 Dec 25, 2022
🦁 🃏 📱 An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web

Matchimals.fun an animal matching puzzle card game ?? ?? ?? Download for iOS from the App Store ?? Download for Android from the Google Play Store ??

iGravity Studios 137 Nov 24, 2022
A Modern MUD Client for iPhone and iPad.

MUDRammer — A Modern MUD Client > invoke incantation of build status divination You move a hand through a series of quick gestures, your digits twin

Splinesoft 70 Aug 26, 2022
3D Shoot'em Up written with OpenGL ES 1.1/2.0 running on iOS, Android, Windows and MacOS X.

SHMUP This is the source code of "SHMUP" a 3D Shoot 'em up that I wrote in 2009. It is very inspired of Treasure Ikaruga, the engine runs on iOS, Andr

Fabien 242 Dec 16, 2022
Spare Parts is a 2D physics game that lets you build silly contraptions and machines.

Spare Parts Spare Parts is a 2D physics game that lets you build silly contraptions and machines. The goal for this project is: 100% of the code is op

Adam Wulf 14 Feb 9, 2022
Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Astrian Zheng 55 Jun 28, 2022
Mobile IOS Game App Developed by Haemi Lee, Dominika Popov, and Dylan Walsh

VroombaWars Mobile IOS Game App Developed by Haemi Lee, Dominika Popov, and Dylan Walsh Why clean your room in real life when you can have a virtual v

Haemi Lee 1 Oct 16, 2021
PokaPlayer's native client for iOS and macOS

PokaNative PokaPlayer's native client for iOS and macOS Installation Get the ipa file from Releases. Use some software like AltStore to install the ip

PokaPlayer 5 Feb 12, 2022
The Classic game TicTacToe made using SwiftUI and MVVM architecture

The Classic game TicTacToe made using SwiftUI and MVVM architecture

Mehrdad 0 Oct 20, 2022
This project is a 2D game for iOS users built with Swift and SpriteKit.

PANDA CLICKER Description Panda Clicker is a 2D game and the aim is to touch the Panda image on the center of the screen. In each touch of the panda i

iremkaraoglu 6 Dec 21, 2022