To me there was a certain beauty to graphs - I know that sounds odd and geeky but it seemed so strange that something mathematical was in fact so in grained in our physical world. Taking this concept of waves and dynamics, it wasn't a stretch to create game where controlling those dynamics were the key to survival.
The game focuses around two waves: i.e you. You have two possible ways of controlling them, moving them up and down; or moving them further or closer together. You're objective survive. Obstacles head your way getting progressively harder and more challenging, but there are a few power-ups to help you out. As the difficulty increases and the obstacles getting harder to predict, it becomes more and more necessary to use both controls in tandem; truly testing co-ordination and reactions.
How I built it
The main framework I used was SpriteKit - Apple's own 2d engine. I found it to be intuitive and straight-forward, making it easier to focus on the logic and maths to set up this mathematical phenomenon ;). The UI was pre-sketched in Sketch, a brilliant design tool I found to truly see how the final product would look, but I think most of all the vector drawing made the quality of the images brilliant, considering I opted for a clean, minimalist geometric style. The music was made through Garageband, and though it may not be the focus of the game it proved an adequate backing to the game.
Challenges I ran into
The main challenge on the coding front was setting up the sin wave, and making it adjustable; but more-so in a good bullet-proof system that decreased the chances of bugs and gave the user a beautiful experience. But, also I think what was harder was creating a perfect alignment system so that the spikes always aligned with the max amplitude of the wave regardless of the global step or the fps changes. But on the UI and UX front, though I got the initial idea and concept nailed out quickly actually making that happen proved quite the challenge: creating the icons, assets and most importantly colour schemes :D - it got quite tedious. The tutorial and ironing out the learning curve of the game to make it enjoyable was also very difficult. The tutorial had to be more "walk-in" and interactive to truly show the concept, but the passing of the game had to be right when they began. This however more challenging when people who playing the game for a while said the start became boring since it was too easy. The dilemma I still don't know if I have solved!
Accomplishments that I'm proud of
As my first real project and product, I think it was a very good step. I think I was able to take a concept and deliver it into a professional looking app (I hope...). The idea I felt was novel and I think definitely was my eye-opener into app development and then I think to computer science in general. Overall, I think my proudest aspect would be the look of the game, in my opinion, it is beautiful and especially on the right device; and I feel it is a true product.
What I learned
I learned a lot. In coding the most: just realising the worst method possible, was a huge improvement for me. It truly turned my attention to "efficient beautiful" code. However I am still shaky on being able to comment regularly, having a good naming system... But on practical aspects, I learnt the nuances and intricacies of iOS app submission: the horror of screenshot and app previews and icons. How multi-device support should be considered when the app is first built - not at the last minute. Not to leave the FPS count on in a final build ... It was truly a journey.
What's next for CoSine
I would like to expand the assets and maybe add a few game-modes. And maybe team up with other people to truly make it better in ways that I probably cannot see.