Building a crossplatform game
I recently created + launched my own game, “The FireFly Game“. This blogpost is about the process of creating my first very own game on different platforms, and all things that I noticed before, while and after creating it.
It started with the #flappyjam
The idea of the game was to have a case to deploy on as much platforms as possible, using the Haxe framework called Flambe. I am (like much other developers) very inspired by Flappy Bird. I found this addictive gameplay very interesting, but I also was amazed by the story of Dong Nguyen (the developer). So my game started as entry for the #flappyjam. I named the first version ‘The Flappies’, you can play that version over here.
This version was developed rapidly. I found people liked to play it, but because it looked too much like Flappy Bird (even though I created all assets myself), I felt it needed more personal touch and look.
Introducing The Firefly Game
Instead of a bird that avoids pipes, I used a firefly that was flying in other direction, that avoid birds. I liked the idea of giving every character a name, a simple pixel animation and a bit of back-story to make it more alive. Because, who doesn’t like Oinky 🙂 I also created a night scene pixelart theme, where the bright characters have a nice contrast.
The level is the same, every time. And it’s infinite. I used a seeded random from Flambe for this, it uses the same random principle as I described in this blogpost. I found it is a nice twist to have a level that you can learn, where you can become better every time. People are surprisingly great in remembering this pattern. When my colleagues where testing, they slowly got a better score and enjoyed that competition. Later I also added medals. You can see how much medals you’ve earned in the end page, but you don’t see the medals you did not earn yet, so there is a little mystery in it. You can share your current score on Twitter or Facebook.
I tweaked a lot on the hit-boxes since the first version. I found people were irritated when the hit-box did not feel correct. At first the bounding-box of the images was used, but after some iterations I made them a lot smaller, I found now its more up to the skill of the user and that feels more fair. I also altered the jump and moving speed a few times, I wanted it to be doable fast, so I moved the camera a bit to the right so you can see more, instead of having all centered.
Making games is about money?
One thing I notices is that people think you build game to earn money. It’s not a complaint, but I noticed this very often. People ask how it’s going with the game. Mostly they mean to say; how much did you earn. It’s a Flappy Bird clone and the original game was lucky (?) to earn a lot of money, so I understand (in a way) people think this is my goal too. But it is not my intention. Imaging you created a very nice painting, and people ask how much its worth and if its already sold. It sometimes feels like a bummer because painting is a fun process and mostly the story is worth more than selling the final product.
But you added ads, the goal is obvious
Yes, I added ads, but thats mostly because you have to pay $25.00 USD to publish on Android, and €80,00 to publish on iOS. I have to invest to make use of the marketplaces and this is a simple way to get it back. I found that in this tempo, I’ll not have this investment back at the end of the year, so maybe in the next game I use something smarter to earn the money back. But again, this game for me is not about earning money. The things I learned is way more worth for me. For me the goal is to develop a game, taste a bit of the world of gaming by deploying it on some targets, and discover what it takes to make people have fun playing and how to get attention. All this stuff is important knowledge for me, because I want to try to be a better/game developer. And games should be about fun.
So how cross-platform is Flambe?
Flambe supports is HTML+Flash, and uses Adobe Air for app development. In the HTML version, WebGL for very modern browsers, 2d canvas as fallback. This 2d canvas is very fast, even in the mobile browser on low-end devices. The Flash is using Stage3D, all stuff rendered on the GPU. This Flash build is used by Adobe AIR to compile the Android and iOS version. Since it’s using Stage3d, that also renders lightning fast. Compiling takes some time though, especially building iOS is very slow.
For this game, I added 2 native extensions, for the ads and for the vibration. Beside that, I did not write anything device- or platform specific code. Overall my experience is that Flambe renders very fast and my case to prove you can deploy on multiple targets (without too much hazzle) made me happy.
Play the game
Enough said, the next post will describe how I published the game on the different platforms.