The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

Artist and animator Jonathan here. If you aren’t already aware, we are releasing New School Blues across multiple platforms: web, Android, and iOS. Writing software that performs well on specialized devices like smartphones typically requires efficiency and effective use of functionality already provided by your chosen platform. This efficiency is achieved by working in the platform’s native programming language. For example, the Android platform uses Java as its native programming language. A developer wishing to squeeze every last drop of performance out of an Android app is likely going to program in Java so that their software can integrate with the system as tightly as possible. Using the platform’s native language to write software also guarantees access to official documentation and development tools. Android developers working in Java can make full use of Google’s suite of development tools and official documentation, while a developer working in a different language will have only their wits and conviction to keep them warm on their Antarctic expedition to this analogy is terrible.

Wait is this textbook on C#?! We needed C++! May God have mercy on our souls…

Complications arise when a developer wants to write a program that runs on multiple platforms because each uses a different native programming language. So, how is one supposed to bridge the gap? Simply write your software using neither of their native languages and complicate the issue further with the addition of a third programming language, obviously. Enter Flash, the bedrock of time-wasting diversions and productivity rotting websites the world over. The UGAGS framework that we used to create our game is built in Flash and makes use of the cross-platform functionality provided by the Adobe Air framework. We have let Adobe do the hard work in creating a system that runs across multiple platforms, and we just piggy-back off of it. Adobe Air provides a number of base structures that run natively on many different platforms, like Android and iOS. All we have to do is plug our game into the base on each platform, and Air acts as a translator or interpreter between Flash and the native language of the platform.

This piggyback analogy is WAY better than the last one.

You may ask why one would ever worry about the dilemma of cross-platform development if such solutions already exist, and the answer goes back to the desire for efficiency. In the case of New School Blues we don’t have to worry too much about maintaining blistering framerates and silky smooth performance because our game is more of a contemplative and casual experience. For developers that need white-knuckle edge-of-the-seat eye-watering brain-melting razor-edged limit-smashing adrenaline-boiling synapse-frying performance however, adding extra layers of interpretation between the app and the system can have a detrimental impact. It’s similar to conversing with someone through a translator. Ultimately the communication is successful, but it takes longer and is less precise.