Part 1 focuses on the design of platform-specific controls, whereas Part 2 will deal with graphical techniques and optimization.
Written by Mattieu Bégin and Jonathan Guillemette.
When we first started on Leap of Fate, our original goal was to make a hardcore action game that would play equally well on PC and Mobile. We knew that many action games had failed on Mobile because of the controls, so not only did we want to avoid the same fate, but we also wanted it to establish a quality benchmark for touch controls on that platform. This lead to many interesting design decisions, some of which we're discussing here.
Shadow walking and shooting like a madman in Leap of Fate
To give you an overview, Leap of Fate is a top-down, dual-stick shooter. It is a game that requires an equal dose of quickness and precision in terms of controlling your attacks and self-positioning. As you might expect, quality of the controls is crucial to Leap of Fate's experience.
Here is the list of the combat actions available to the player.
For this type of game, the easiest platform to design for, in terms of controls, is the PC with keyboard and mouse. We immediately chose to go with the well established "dual-stick" control scheme; WASD + mouse.
The reason for this choice came from our two main gameplay influences. We wanted the direct character control that you get in The Binding of Isaac, which allows avoiding traps and projectiles precisely, and mixed that with the mouse targeting system of League of Legends, where ability targeting is decoupled from character movement and facing. We really liked how the resulting control scheme allows simultaneous attack and defense, and therefore makes the game all the more skill-based.
The other important reason for this choice was to ensure a good distribution of input load on both hands and to avoid any finger gymnastics. In fact, in Leap of Fate, your fingers never need to move from the buttons they are naturally placed over, which is also directly related to our choice of minimizing the number of player actions. All of this to make sure the player can focus on playing the game instead of thinking about the controls, and to facilitate porting to other platforms.
Although the control scheme for PC was a natural choice, our very first Leap of Fate prototype was rather on Mobile, because we knew that touch controls for a fast-paced action game would be our biggest challenge.
Indeed, anybody who's ever played an action game on Mobile has probably had many bad experiences with controls. Unresponsive input, misclicks, loss of control, the list goes on. While we set to avoid all of these pitfalls, our #1 priority was to design a control scheme which did not ever require you to look at the HUD (the in-game interface). Just like when playing on an Xbox or Play Station console, where you never need to look at your fingers, we wanted a mobile experience where the player's eyes would be on the action 100% of the time, which is crucial for a high-difficulty and fast-paced action game.
Mobile is a natural fit for dual-stick shooters. Nonetheless, you could easily argue that a large portion of such games failed to deliver good controls. So our first endeavor was to rethink the dual-stick scheme. We quickly came to the conclusion that we needed dynamic virtual sticks (sticks that are not fixed to a screen location). This was to avoid the main problem of the more typical static sticks; which is that you constantly need to look at the HUD to reposition your thumbs. According to our playtests, this problem is expressed in two ways:
Our dynamic sticks were designed to avoid these problems. They allow the player to plant their thumbs wherever feels natural to them on the screen. If for any reason, that position changes during play, the sticks follow the thumbs, and no change in input reactivity ever occurs. The player can concentrate on the game instead of on the virtual stick.
Leap of Fate's dynamic virtual stick
Interestingly, this was only possible by making the sticks extremely sensitive. In fact, it takes only about 1cm of thumb displacement to reach the point of maximum input, after which the stick's center starts following. The advantage here is that it effectively eliminates half-input and the nebulous mental tracking space it puts the player into. Moreover, it makes sure that you are never more than 2cm away from a full 180 degree turn. In other words, the most extreme input in Leap of Fate is extremely quick to perform, and can be performed from anywhere on screen, thus ensuring the high reactivity needed to play this fast-paced action game.
We now had an efficient dual-stick basis, but the inherent constraint of this control scheme is that it only lets you shoot directionally, and does not allow the pinpoint targeting we needed for this game. Adding this required several iterative steps.
First, we needed to add virtual buttons for triggering special attacks and the shadow walk. A lot of mobile games do use virtual buttons, but these typically are small and have a severe misclick problem. Our solution was to make the buttons so huge that even a blind attempt would never miss. In fact, each of our two buttons takes up around 15% of the whole screen! Of course, we made them visually unobtrusive, with just a demarcation line in the HUD. To trigger an ability, a player simply needs to tap anywhere "up", for an almost perfect input success rate, and no need to look.
Once the ability triggers, the player is then prompted to tap anywhere on the screen to choose a target. This felt perfectly natural with a touch device and matched the pinpoint targeting precision of a mouse on PC.
Activating a special ability triggers a bullet time effect
So the dual-stick portion worked well, and the targeting was easy and natural, but the remaining problem was the transition between the two. More precisely, the time required for hand repositioning made it so that you would often get hit during transition, in addition to risking a suboptimal hand position if you went too fast and partially lost hold of the device. Our solution was quite innovative: we added a bullet time effect (on Mobile only). Every time you activate an ability, the bullet time triggers, slowing down the game to 10% speed, including your own character. This means that once the button is hit, the player has ample time to move his hand over the device and select a target without risk of being damaged by enemies. Once the target is selected, instead of stopping the bullet time immediately, we let it go back progressively within 0.5sec, to provide time for going back to the dual-stick position.
Overall, this innovative design produced a mobile experience very similar in essence to the PC version. Note that this also involved creating a distinct game balance and adding some aim-assistance to account for the inherently lower input precision on Mobile. But the end result played with extreme fluidity.
The key to our design process was that we questioned the accepted standards and were ready to innovate as required by the needs of the game. We ended up with surprisingly effective control elements such as hyper-sensitive dynamic sticks, huge buttons, and bullet time. And the results speak for themselves; many players left very positive comments concerning the controls, and said that they never thought such as fast action game could work on Mobile.
Although Leap of Fate was not released on consoles, we ended up supporting gamepads for PC. This was not part of our initial plan, because we knew gamepads were not ideal for this type of game, but a lot of our Early Access players on Steam kept asking for it. The typical rationale was "Hey, this is a dual-stick shooter, it will naturally work super well with gamepads. Just do it!". However, what they forgot about was the pinpoint targeting. If there is one thing gamepads don't do well, it's to emulate a mouse.
This would be another design challenge for us. As you'll see, it was an exercise in eliminating unsatisfactory prototypes until we found one that worked.
Contrary to our initial expectation, implementing a pure dual-stick scheme (i.e. no buttons, only the two sticks) did not work. This is because we needed a cursor, and moving the cursor necessarily meant shooting in that direction. Since there is a variety of reasons in Leap of Fate why you'd want to be able to move the cursor without shooting, that was not a valid option for us. Consequently, we needed to use a scheme where the basic attack was controlled by a combination of the stick and a trigger button. Note that we had to add a tiny bit of aim-assistance on the basic attack, because a directional stick input is necessarily less precise than placing a mouse cursor over an enemy for perfect aiming.
Next step was to figure out how to do the targeting (target lock or target cycling did not make sense in this game, since you typically target ground positions, not enemies). Instead, targeting had to work with a cursor, but what's good in terms of cursor for the directional basic attack was not so good for the targeted special attack, and vice versa. For instance, when using the basic attack, you don't want to have to manage distance of the cursor because that's useless, and you actually prefer to have the cursor always in view, at a comfortable distance. Moreover, when you need to suddenly switch the direction of shooting, you need that to happen immediately. On the contrary, when aiming a special attack, you prefer a free roaming cursor to reach the desired location. You also care much more about precision, and so the cursor can't move too quickly or feel nervous.
To account for those very different needs, we decided to toggle cursor modes between the two types of action. Our first try was to give each cursor its optimal behavior. But that proved not to be practical because there was too much difference between the two, which made transitions difficult to adapt to. Moreover, using a free roaming cursor for special abilities did not work so well after all, because that cursor could not possibly be precise enough for targeting while also being fast enough for switching targets on the fly. We needed a compromise.
The basic attack cursor, followed by the special attack cursor
What we ended up doing was to make the targeting cursor a modified extension of the basic attack cursor. So the basic cursor was made to rotate on a fixed radius around the character, with a minimal amount of lag relative to the physical stick's position. Then, when the special attack button is pressed, the radius increases by around 30%, and cursor speed decreases a bit. Of course, the drawback here is that this system does not allow targeting on the whole screen. However, it compensates with the following advantages;
Although this solved the basic attack VS special attack problem, shadow walk targeting was still an issue. When a player gets in a bad spot during combat, the best thing to do is often to shadow walk away to safety. This is an action that you typically want to execute as fast as possible. However, the current targeting cursor system was too slow for this.
We first tried another system altogether for the shadow walk, a system in which you did not need to target. Instead, the player would immediately start shadow walking upon button press in the cursor's direction, and keep going forward until the button was released. That actually worked very well. The problem was that it worked completely differently to everything else in the game, and therefore would have required full tutorial explanation plus very clear feedback. But if someone started the game with a keyboard and mouse, and later switched to gamepad, he would never see this tutorial, and probably would not understand how to shadow walk.
Shadow walking through enemies makes them go BOOM
So we went back to the standard cursor system, and instead introduced a special case modifier. When triggering a shadow walk, the cursor gets a substantial speed boost, but only within the first 0.2 sec, and only if the stick receives full input strength. This effectively covers most cases where the player needs to make an immediate escape, and works well enough.
Overall, the result is a unique gamepad control scheme that, admittedly, requires a bit of getting used to. It represents no more, no less than our best effort at solving a difficult design problem imposed by our players. Fortunately, comments on Steam were very positive about our gamepad support, so all's good in the end.
This is a very small part of Leap of Fate's gameplay which, surprisingly, is a major factor in how much people enjoy our controls. At the end of each combat sequence, the player must go back to the level hub to pick another level to explore. To do that, the player must hold the teleport controls for one second, while the character charges. Most people really enjoy this interaction and associated camera zoom. Interestingly enough, this fun input is at its best on Mobile. There seems to be something really satisfying about physically pressing your two thumbs on big magical spheres to charge up the teleport.
When exploring the design space of your controls, keep an eye out for interactions that are just fun to perform. This will give a small additional edge to your game.
I'm outta here.
Developing a game across multiple platforms can be a real challenge. Nothing's worse than being told that one of your versions is "just a port". Players demand that developers design for the native constraints of their favorite platform, and that is a great way to maximize your success on that platform.
If Leap of Fate did one thing really well design-wise, we like to think it's having nailed the control scheme on all platforms. The one point to take away from this article is that you should allow yourself, as a designer, to really question the current standards. Don't be afraid to push boundaries and even introduce important gameplay differences between your versions if that allows your game to really shine on all of them.