Alessandro Cuzzocrea

Symbols iOS: A Retrospective

Symbols iOS logo

After I finished my ray tracer back in August last year, I was ready to tackle a new project. This time, I really wanted to make something that I could easily share with friends and family. After thinking about what to do for a few days, I decided to try and make a smartphone game. I hadn’t created a game in ages (I started working on this before making a game for Ludum Dare 47) and was eager to see if I still had the chops required to do so.

Symbols iOS screenshot 1

Brainstorming

I tried to come up with ideas that met some self-imposed constraints I set for this project:

After all these considerations, I settled on one of the easiest game genres I know – the puzzle game. Or at least, that’s what I initially thought. Boy, was I wrong! By actually spending some time making one, I quickly learned that creating a genuinely interesting and fun-to-play puzzle game is a real work of art.

Symbols iOS screenshot 2

Deciding between two ideas

After about a week of brainstorming, I came up with two different and opposite ideas: a falling block puzzle game and a jump rope-themed hyper-casual game. Both sounded interesting on paper, so I needed a way to decide which one to make. In the end, I created a decision matrix to help me understand the strengths and weaknesses of each idea.

Symbols iOS decision matrix

As you can see from the pic above, the hyper-casual game idea beat the puzzle game 7 to 4 on the decision matrix (non-weighted). The hyper-casual game was clearly the winner in terms of ease of creation, implementation, and understandability. The trade-off was that I would have to come up with a somehow attractive graphical style to make it appealing. I also wanted the gameplay to create a synergy with the game music. However, I wasn’t sure if I could possibly do it all (code, graphics, music, etc.) by myself in just 4 months. For this reason, I dropped the hyper-causal game idea and went with the puzzle game one.

Symbols iOS screenshot 3

Iterations & Prototyping

Now that I had decided on which game to make, it was time to push my idea further.

The game’s first iteration was very simple:

Sadly, when I prototyped this idea, I discovered that touch controls aren’t the best for this kind of gameplay.

How could I design the game so that the player’s finger didn’t get in the way?

I started working on the second iteration right away:

This iteration ended up not working out because the core mechanic (rotating groups of dots) was confusing and just plain uninteresting.

So, this brings us to the third and final iteration:

I made a quick prototype and after play-testing it for a while, I decided it was decent enough to turn into a full game.

A screenshot of the final prototype
A screenshot of the final prototype

Aesthetics

Personally, working on a game’s aesthetics and look & feel is one of the most enjoyable things to do (besides coding) for me, so even before the prototype was complete, I had already started working on it.

I went for a flat look with big and bold shapes, as most players would be playing the game with their fingers on fairly small screens.

I also made the background a darker solid color to increase the contrast with the foreground and avoid confusing the player.

At first, the dots were circle-shaped but shaded with a different color. After testing out the prototype, I realized that using the same circle shape could be confusing, so I changed the dots to various shapes (circle, square, star, etc.) to help the player recognize them more quickly. I also designed the playfield to have some surrounding space instead of making it too close to the edge of the screen, allowing the players to use that space to swipe their fingers without covering the playing area.

Now that the gameplay and graphics were settled, all that was left for me to do was finish the prototype and continue improving it until it became something enjoyable to play.

Testing out different shapes
Testing out different shapes

Lack of Motivation

After the prototype was finally done, I proceeded to work on the game almost every day (except for the weekend I participated in Ludum Dare).

The project was going smoothly, but around the beginning of November, I started losing motivation and almost ended up giving up altogether. I was having trouble concentrating, and some days I would just skip working on it completely. You could almost say that I was experiencing some degree of burnout.

This wasn’t the first time that something like this happened to me, so I knew exactly what caused it: the difference between how I envisioned this project in my mind vs. how the project was actually developing. In other words, expectation vs. reality. The game’s overall quality was much lower than I had envisioned, so I lost my drive to continue working on the project. What I should have been doing was focusing on finishing the game instead of dreaming about reaching some arbitrary standards that I wasn’t able to achieve.

Symbols iOS screenshot 4

Almost done

Gradually, I managed to get out of my slump. By the end of November, the core gameplay loop was done and I moved onto menus and music. I hastily finished the game-over screen but wasn’t really thrilled with how it turned out. It looked somewhat cheap and out of place. Oh well – I had only one month left to finish the game, so I didn’t feel too bad about it. Building the tutorial section was quick and easy. Since I’d made the game architecture completely event-driven, all it took was to create a couple of new events to display the interactive step-by-step tutorial and have this interact with the player input to progress through it.

Meanwhile, I started clearing some steps needed to publish the game – namely, renewing my Apple Developer Program membership, which is needed to publish your app on the App Store.

I’m not a big fan of social media – I usually block those sites because they’re productivity black holes – but posting my progress on Twitter (#screenshotsaturday) motivated me to keep working on the game. Shout-out to the awesome game dev community on Twitter!

Thanks to this platform, I also connected with another indie creator when a music composer asked me if I needed some tracks for my game. Unfortunately, I had no budget, so I had to politely decline his offer. Still, I was happy that somebody reached out to me, and I would very much love to collaborate with other game developers for my future projects – if I ever manage to get some funding, that is.

Speaking of which, I still had to add the music and sound effects. I had put off working on the audio because it was the one element I couldn’t do myself, so I had to use stock material for this part of the project.

The game is shaping up nicely! 🔥

Done

By mid-December, the game was basically complete, from the game loop, and game-over screen to the retry, tutorial, and “fake” splash screen (I use Unity Personal so I couldn’t customize the default splash screen – all I could do was create a second “fake” splash screen and display it right after the default one).

I wanted to hear some feedback, so I sent the beta version to some game dev friends of mine. I should have done this much earlier because this helped me discover a huge flaw in the gameplay. Basically, the game becomes trivial if the player randomly drags their finger aimlessly across the screen instead of carefully planning which points to move. This was a substantial flaw in the game’s core design, but I was running out of time, so I decided to leave it as it was. In hindsight, I should have at least tried to fix the gameplay when I discovered its flaws. Oh well.

It was finally time to prepare the game for the App Store, but I hadn’t decided on the name yet. I had a few ideas in mind but in the end, I went with “Symbols”, which I felt had a nice ring to it.

I created a new entry on App Store Connect and finally filled in the App Store name and description along with uploading some screenshots.

Now I only had one thing left to do: create the final build and upload it to the App Store. I always get nervous when it’s time to submit the final build. What if I mess up? What if I forget something important? What if there’s a critical bug I’ve overlooked? It’s not like the final build is definitive – I can still upload another build or issue an update if something goes wrong – but still, it’s a very sensitive process. I gathered all my courage and proceeded to submit the game to the App Store for review. The review process was pretty fast (it only took 1 day), making the game available for download just in time before the end of the year.

Symbols iOS App Store Connect page

That’s it. The project was finally done.

What do you call that feeling, a mixture of accomplishment and sadness, when you’re about to finish something you’ve been working on for so long? That’s how I was feeling. On one hand, I was happy because the game was complete and ready for players to download and enjoy. On the other hand, I felt sad because I’d been working on the project almost every day for the past 4 months, and finishing it left a small void in my life.

Symbols iOS App Store page

Lessons learned

Total Logged Hours

CategoryDuration%
Coding32:58:4837.44
Prototyping29:21:5733.33
Graphics9:39:1810.96
Game Design7:56:509.02
Release2:45:103.12
Audio2:26:402.77
Misc1:16:131.44
Playtesting1:15:121.42
Promotion0:25:450.49
TOTAL88:05:53

Conclusion

All things considered, I think the game turned out kinda okay. Of course, the gameplay is deeply flawed, but it’s just a small practice game that looks decent enough to double as a portfolio piece.

That’s all for now! If you want to try Symbols, it’s available on the App Store. The game is also open-source, with the source code available on GitHub.

Download on the App Store

2023/06/03 update

In a bit of a twist, Google nudged me about my dev account being on the brink due to mostly unpublished apps.

So to keep it alive, I seized the moment and rolled out Symbols on the Google Play Store, bringing the fun to Android users too. Crisis averted!

Get it on Google Play

Related Articles

Tearful Heart Retrospective - thumbnail Tearful Heart Retrospective
Lands of Ambustio: A Retrospective - thumbnail Lands of Ambustio: A Retrospective
Push Golf and the Unreal Engine 5 Petit Contest: Creating the Game (Part 2) - thumbnail Push Golf and the Unreal Engine 5 Petit Contest: Creating the Game (Part 2)
Push Golf and the Unreal Engine 5 Petit Contest: From Nostalgia to a Game Jam (Part 1) - thumbnail Push Golf and the Unreal Engine 5 Petit Contest: From Nostalgia to a Game Jam (Part 1)
Ludum Dare 50: Delay the Inevitable - thumbnail Ludum Dare 50: Delay the Inevitable