Last year I rambled about making a major update to the rendering and netcode in Sky Checkers. This week I uploaded an even newer update that supports playing on Apple’s mobile platforms! Big architectural changes were made along this journey to iOS, but I will focus on just one interesting challenge I encountered for creating this port.
The challenge in making the mobile port play well is all in the controls. The desktop version of Sky Checkers uses the arrow keys and space bar for the primary player by default so I needed a way to map that experience to iOS. I thought of two possible approaches:
The first approach seemed obvious due to being seen commonly in arcade ports and emulators. However, I really liked the second approach because I didn’t want fixed virtual controls on the screen and I wanted the flexibility of using the controls anywhere.
So I implemented the swipe and tap gesture controls. The controls worked out much better than I had anticipated; they even felt competitive to the desktop experience. I was relieved and hopeful. For testing, I handed the game over to a couple friends to try.
They couldn’t move 🙁.
They tried moving by touching and dragging the character along a direction. In this case, the character would soon stop moving as they released the touch. They didn’t realize characters are not touch interactive in this game and that the touch gesture had to be held down for continuous movement. I realized quickly I needed to make a tutorial.
I set out to create the tutorial with several stages. First a player learns how to move, then the player learns how to move efficiently without halting, and lastly the player learns how to knock off enemies. I displayed written instructions to swipe a direction to begin movement and release to stop movement.
My testers still couldn’t move.
In another attempt, I added visuals showing the potential changes in movement a player could make. These visuals changed position on screen dynamically based on the current touch input.
This confused players instead of aiding them. They were also still trying to drag the character.
So despite not wanting to convey a fixed d-pad, I gave up and added one to the left side of the screen that lit up the active direction:
This helped quite a bit. But players still tried to drag the character by touch even despite the written instructions. So I added a boundary by disabling touch recognition in the middle of the board for the beginning tutorial stages. This eventually guided a confused player to try touching on the side of the screen because the game was no longer responding in any way to dragging a character from the center.
After adding this, my friends were able to learn the controls and the success rate became higher. I did not want to convey the controls only functioned on a fixed part of the screen, however, that approach became easier to illustrate visually.
One last major problem: some players were still learning inefficiently because they were not reading the instructions. They were too concentrated on the scene and touch interactivity to read the text. I finally addressed this by adding a black cover to direct the eyes towards the instructions at the beginning of each tutorial stage:
Overall I explored two potential approaches to controls. One is using swipe gestures and the other is using a fixed control pad. Sky Checkers uses swipe gestures and flexible touch controls, but after much experimenting, a fixed control pad became valuable for instructing. Additionally, touch input boundaries and guides on where to focus attention were added.
With incorporating all these details, my new friends gave me good feedback on learning how to play. Or they just didn’t want to make me feel bad 😉. Over the past few months, other changes were made in this update as well such as adding a pause menu and overhauling the controller support.
If you have an up to date iPhone or iPad, give my game a test run on the App Store. Otherwise, check out my game for other platforms. This may even be a great time to play online with friends during the lockdown.
I will welcome any feedback 🙂.