Andrzej Zamoyski worked as a game designer at Microsoft first-party developer Lionhead Studios in the UK for 8 years on series such as Fable and Black & White. In March 2012, Andrzej moved to Japan to chase his dreams and enroll full-time in a Japanese language school in Kyoto. During his free time he founded his own mobile development micro-studio called Futuretro Studios, and 6 months later released his first title, Hungry Oni, to critical acclaim.
Hi there! I’d like to share with you my experiences of going from AAA console development to micro-team mobile dev in six months using Corona SDK. I hope my experiences and tips might be of some use!
Find the right partner
When I sat down with Lionhead boss and prolific game designer Peter Molyneux to tell him I was leaving, we talked at length about what it takes to strike out on one’s own. To my surprise, he told me he thought having a like-minded partner, even if they didn’t actually hands-on make the game with you, was absolutely essential; someone to bounce ideas off of, drive you on when your energy wanes and to share your triumphs. Coming from someone who had always seemed so individually driven I was genuinely taken aback and this advice stayed with me. Incidentally Peter himself quit Lionhead a week later with a handful of long-time colleagues to start his own mobile games studio!
I pride myself in being able to turn my hand to most parts of game production with varying degrees of success, but when it comes to artwork I find myself lacking the drive and inclination to take it beyond the functional stage. I was incredibly fortunate to stumble upon Indonesian-born Ferdi Trihadi, a classmate at Japanese school and a talented illustrator and graphic designer, based previously in Singapore.
We hit it off and with Peter’s advice in mind it wasn’t long before I ditched the project I had started in Unity 3D and began the search for a 2D framework that would enable Ferdi and I to collaborate.
Know your strengths
While at Lionhead I taught myself to code in C++ as a means to make little games in my free time. I must stress however I have no real propensity for programming whatsoever, and harbour no doubts a complete novice could emulate anything I have managed to achieve. Despite having no previous experience with Lua, or even having owned a Mac or iPhone, I found myself able to write a simple balloon-popping game after following a 30-minute Corona SDK tutorial online. I was convinced Corona was the ideal platform for our game.
When it comes to concepting a game I would recommend first writing down your team’s strengths and weakness, and from those constraints ideas will spring forth. For example Ferdi has no passion for animation and I didn’t want to have to code a level editor or build levels, so we naturally settled on a single character, single screen format. We wanted the game to be playable with one hand while standing up riding the bus. So the game had to be oriented vertically and controlled with one’s thumb at the bottom of the screen. I am a firm believer that limitations breed creativity. In the past I have often imposed arbitrary limitations on my own designs just to encourage myself to think in a different way.
Game development is an organic process. No matter how exhaustive your planning and scheduling, as development progresses unforeseen issues and opportunities will invariably present themselves in equal measures. In the case of a AAA title, even the smallest change can impact the work of hundreds of people, affecting schedules, pushing back deadlines, causing loss of work and in no small way impacting the morale of a team.
However when it’s just a couple of people, embracing the inevitable flux and staying flexible is something I would wholeheartedly encourage. Don’t get too caught up in keeping your code neat and efficient. To be frank, mobile devices are so powerful these days that even the most hideous code will happily spin away at 60fps. What’s more, if no one else will read your code then don’t worry about how pretty, scalable or modular it is. You need to be prepared to scrap it on a whim.
Make a mess
Whereas prototyping is a pre-production phase in AAA game dev, using Corona I would suggest a mindset that you are doing nothing but prototyping until you are ready to ship. If you have an idea, make a backup of your source folder and go crazy! This may run at odds with the accepted wisdom and disturb the hornets’ nest, but as far as I’m concerned it’s okay to have a hundred nested if-statements and all your code in main.lua. Refactoring code for debugging and efficiency is much easier later on when you have a clear image of the entire structure of the game. Just get it on-screen and working because that’s when you’ll know if it’s right.
Don’t be a late bloomer
I’ve begun countless projects in the past on my own, focusing on implementing game mechanics and just slapping in placeholder ‘programmer art’ whenever necessary. However Hungry Oni taught me that if possible try to involve an artist aa early as you can. No matter how sexy your code or innovative your game mechanics are, it only starts to feel like a product when it begins to look like one.
I found that as soon as Ferdi started giving me first draft artwork, the project was lifted from being something we were doing in our spare time, to something that felt like it was on the way to becoming a published product.
Having ideas and starting a project is easy, seeing it through to the bitter end is what really takes effort and separates the doers from the wannabes. Being able to show your work-in-progress to friends and get positive feedback is an essential motivator in reaching that goal, and even if you know that big red circle is one day going to be a charismatic, lavishly animated hero, your friends will not. Give them something pretty to play, and be encouraged by the smiles and compliments you receive in return.
Manage your expectations
Making a good game is tough. Getting people to play it is tougher. With Hungry Oni we decided that our goal wasn’t to get rich, but simply to make something we were proud of, and in the process equip ourselves with as much knowledge as possible for our next project.
To this end we made the game free, and chose to do all the promotion and marketing of the game ourselves. We built a website, presences on Twitter and Facebook, sent review requests to every site we could find, wrote press releases, threw a launch party, produced merchandise, advertised on Facebook, launched on 3 platforms and pulled every industry string possible to get exposure. Yet at the end of the day, despite being featured on high profile gaming blogs like Kotaku and even having appeared in printed games press, we are yet to recover our expenses or breach the 100,000 downloads mark.
When you’ve worked on games like Fable that have sold millions of copies and are well known by gamers worldwide, one can’t help but have unrealistic expectations when it comes to releasing one’s own title. When I quit Lionhead I wondered whether I would ever again feel the satisfaction of having a complete stranger down the pub telling me how much they loved a game I had a hand in making. Even amongst the professional games community, the majority of developers will likely never have that experience.
Don’t worry – it’s worth it!
Through my own Corona adventure, I discovered that every indie game developer can experience something even more satisfying. While sat outside having a post-school coffee with a bunch of Italian classmates last week, I watched as the conversation lulled, they slowly pulled out their phones and tablets and without a word began playing the little game I had spent the last six months with a friend cooped up in my tiny flat creating in our free time. It was a wonderful feeling. For me, games are a means of bringing joy to people, and what could be better than being able to bring joy to those people who matter to you most.
In closing I’d just like to offer encouragement to anyone who has ever dreamed of making their own games. Now is your time. Do it for yourself and enjoy the journey as well as the results.
Jump to original: