I go to the gym from time to time. A while ago, in a rather short period when I was trying to keep a more strict exercise routine, I used a timer to space out and measure my exercises. The built in stop watch from the Clock app in iOS was what I preferred to use for this. One minute was the default gap between exercises, and I liked to stop the timer myself before getting on with the next exercise.
Stopping the timer at a ‘round’ value was a thing I repeatedly found myself doing. One minute sharp, for example, not even a hundredth of a second difference. Sometimes, even after the first timer ran out, I started a second one and continued playing this game completely forgetting about the exercise I was supposed to do.
Exact hits were marvelous and quite rare in the beginning. I was starting to think about a points system based on hits and misses which led to a quick prototype being built one summer evening. The prototype, although bare and rough, essentially nailed the core mechanic right from the get go.
The First Prototype
For the game to be playable I couldn’t obviously have people wait one minute to try and stop the timer. So I had to come up with a more manageable time interval — four seconds! Why four seconds? Well, the idea came sort of arbitrarily. A shorter time interval felt too short, a larger one felt too long.
Earning points when you stopped the timer at exactly four seconds and losing them otherwise also came naturally. An alternative points system would’ve been to always earn points, proportional to your reflexes: the closer to four seconds, the more points — but it didn’t feel as exciting, since you were always ‘winning’ something, albeit less if you weren’t accurate.
As for the reward system, you gain 1000 points when hitting the mark because 10 or 100 points seemed too low for such a feat. I also did not like the idea of starting with 0 points because you would often end up venturing below 0 and having a negative score seemed a little off-putting.
Sharing it with close friends was fun since my developer account was expired at that point so I had to physically share my phone for people to try it out. I realized it had a hook when I found myself asking for the phone back since 10+ minutes passed since I gave it to them.
The Countless Iterations
Looking back, the iteration process on this project is definitely an interesting case study. For any new feature or issue tackled, the initial solution was functional but very rough and ugly. Next, I managed to reach an intermediate step in a very short time span that shaved the roughness off the first version and was, in most cases, quite similar to the current version.
What followed was a very tedious process of further experimentation and getting the details right. The main game screen had most of the basic UI and controls in place from the beginning, although the colors and font were not very pleasant.
You wouldn’t be able to tell now, but among the first versions of the end game screen I had an emoji fountain that tried to depict the outcome of the game: 😎 🙌 🙀 🏆 🥂 🍾 🥇 ❤️ for when a new high score was set, 😔 😡 😰 👹 👻 👎 👊 🦑 otherwise — yep, no idea what the octopus had to do with not managing to get a good enough score.
For more archaeological tidbits, the menu screen had a multiplayer button that stayed unlinked for a very long time, and eventually got removed. The multiplayer capability is still on the roadmap, but it got scraped from the initial release since I deprioritized it and focused on getting what was already in a working state finished.
One thing that I struggled with from the beginning was the number of rounds you play each game. This basically boils down to the number of tries you get to hit the four seconds mark. I experimented with many different options and initially considered having a fixed round mode coupled with an infinite one.
The infinite one, although great in theory, had poor results in practice because players would gravitate around the same score in the long run. You would miss the target several rounds, and every once in a while hit the bullseye — which would bring you back to where you started in terms of points. The cycle would repeat afterward.
Since I did not like the idea of having a single fixed round mode, I created three fixed round modes: 4 rounds, 8 rounds, and 16 rounds. The last two modes were unlocked once you reached a certain high score threshold. This is a classic example of building something without validating it first. The entire game essentially ended up depending on this mechanism, even though I had no assurance it was functional or understandable by people.
Sure enough, once I started getting more feedback, the game rounds I previously introduced started climbing to the top of the complaints stack. People did not understand what their purpose was and, worse, the high score thresholds I set suited only a small percentage of users. Trying to tweak this, I found it nearly impossible to settle on some unlock thresholds that could be reached and at the same remain challenging for a large pool of players.
Too low and it was not challenging anymore, too high and a large percentage of players would end up frustrated by not being able to unlock a certain round mode. I couldn’t find a sweet stop, so I ditched it. I settled on five rounds with the possibility of earning one more round if you hit a combo — that is if you hit the same achievement in a row — a great idea suggested by a friend.
Speaking of achievements, the story of how I introduced the Almost Four achievement, alongside the Bullseye, is also worth sharing. I initially had the timer tick sounds get triggered based on the timer values. In retrospect, it wasn’t a great idea because OS timers are not sample accurate and I wasn’t getting reliable results unless I set the timer frequency really low. This, coupled with the fact that I was treating 3.998 seconds as 3.99 (I wasn’t rounding to the nearest hundredth) severely affected the gameplay.
As a statistic, for one Bullseye players were hitting Almost Four 10 to 15 times. This generated a lot of frustration and eventually led up to the suggestion of also offering something when stopping the timer at 3:99 or 4:01. I discovered the root problem later but decided to keep the newly added achievement. Currently, for one Bullseye, players hit Almost Four around three to four times, which is a lot more sensible and less annoying.
By the way, there’s also a hidden easter egg achievement at a certain time interval. Let’s see who finds it first.
The whole project took around a year to make. As I previously described, the core mechanic and basic UI weren’t very tedious to set up (they took around one week) — but the devil is really in the details (and also in assuming ideas before validating them). Couple this with the fact that life sometimes got in the way and that I did this after hours as a hobby and the whole time span starts to seem more reasonable.
After having a build that was tested and that I was happy with, I managed to put up a very basic website at foursecondsgame.com and created a promo video by spending four (ha!) hours in After Effects, which strengthened my belief that Adobe products are purposefully built to significantly differ in terms of UI and interactions between one another.
The App Store approval process was a source of stress for me, but it actually went very smooth and I managed to get the app approved within 24 hours of submission.
As this is usually the case, I have a lot of ideas and possible directions in store for this project. Having learned some lessons the hard way, I’ll try and be more thorough in terms of prioritization and feedback incorporation.
What I have on my list right now:
- Apple Watch version so you can tap the timer on your wrist
- Multiplayer / Challenge Friends
- Different Themes. I actually tested this with different color options and they look sweet. Imagine being able to brag to your friends about your one of a kind Four Seconds theme.
That’s kind of it. My first Medium article, about my first published app — what a time to be alive. Thanks for hanging in this far and be sure to check Four Seconds out right here, feedback is always welcomed.
Can you hit the bullseye? Fun iOS game where you have to stop a timer as close to four seconds as possible.