Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs or learn how to Submit Your Own Blog Post
From a game jam to market in one month
During a 48-hour hackathon, indie developer Sergey Lalov created Laser Flow, a puzzle game that uses mirrors and other elements to deflect laser beams of various colors. Sergey shares his experience taking Laser Flow from prototype to market in one month.
Sergey Lalov is an experienced Corona SDK developer from Russia that mostly working on contract jobs. As a participant in GIGJam, a 48-hour hackathon, Sergey created a working prototype of Laser Flow. After competing in the hackathon, Sergey decided to polish his game and publish it for both iOS and Android. In his guest piece, Sergey writes on his experience bringing his game prototype to market in just one month.
My name is Sergey (Spiral Code Studio) and I have developed a puzzle game called Laser Flow.
When I first discovered Corona SDK, a 2D framework for iOS and Android, I started making a very complex tower defense game. The game would require a lot of time to achieve the quality I was looking for. After all, quality is the first component of a successful game, while the second component is having enough money for marketing. As I spent most of my day on contract work, I had a tough time completing this initial project.
Fortunately, GlitchGames announced a 48-hour hackathon called GIGJam in Spring 2013. I thought, “What sort of game is both entertaining and easily implemented?” I instantly knew I wanted to create a puzzle game. The theme of the jam was “elements” and I started to think how to incorporate elements into a puzzle game.
As an amateur photographer, when I hear “elements” I think of DSLR lenses because they consist of several elements (individual lenses). From lenses, I started to think about lasers and then mirrors. From those ideas came the root of the game: using mirrors and other elements to deflect laser beams of various colors. In addition to mirrors, I added splitters and filters.
As a gamer, my goal was to make a game that I would enjoy. I started by developing an attractive main screen to create a good first impression with players. I was so happy with my weekend-long project that I decided to polish my game and publish for iOS and Android. You can see the screenshots of the actual gameplay below – the screenshot on the left is the initial version, while the one on the right is a screenshot from the published game.
As you can see, a lot has changed in appearance, but the idea remains the same. The building blocks in my game are rectangles, made by the display.newRect() function – there are only a few images actually. Buttons, tiles, cells, blocks – are all rectangles. Lasers and mirrors are lines. I also like to use vector graphics to the maximum extend possible. It’s amazing how much stuff you can do with vector graphics and how easily they can be adapted to various elements in the game.
One of the coolest and easiest contributions to the game’s look and feel was the animation. I defined a special transition function, which takes an object, scales it down to almost 0% and then transitions it to 100% with an easing function. When I applied it to every object in the game, it started to look way cooler. To do so, I only had to add this function call in every object creation function – and I don’t have many – newImage(), newButton(), newText(), newCell(), newMirror(), newSplitter() and a few more. That was very easy to implement. I should note that it was easy because of a proper OOP implementation. If I had spaghetti code, I would have had to add this function call to a lot of places.
For the GIGJam, I made 23 levels by hand and the remaining 60 levels were generated randomly with grid sizes varying from 5×5 to 7×7. Levels that were larger than 7×7 become really difficult to solve and cell sizes became too small for smartphones.
I was able to finish the game in a month and start to earn some money with the published version. For the final version, I added a lot of things: a level editor, more levels, a random level generator, more music, a “hints” system, in-app purchases, timer and reset buttons, move counter and a hide beams button, scores and GameCenter, and more.
Based on my experience creating Laser Flow, here are seven tips for developers looking to publish their prototype in a short amount of time: