One of my most happy memories with this game was to see my friends get better scores than me as the developer. When making games, you end up spending a lot of time playing it to get the balancing right.
Suffise to say, I had a lot of practice. So when one of my friends beat the million score barrier before me I was so happy! Because at this point I had burnout from my own game.
After a few months, I played my game a bit more again. If you would like to beat the developer this time, you’ll be pretty hard pressed 🙂 I had a perfect game of “I’m never gonna be able to do that again” Don’t ask me how to get this score: 1’891’300 !!!
Over the months I averaged at about 200.000 – 500.000 and rarely I get more than 1 million.
I had some experience playing bejewelled blitz, but (for those bejewelled players out there only VERY RARELY managed to be “on fire” So I’m sure that a truly great match3 gamer can still rock this game.
It does require a different kind of thinking to generate the worms, and it’s not all about speed. The strategy of the game ended up being pretty deep. Fundamentally, you have to always keep the combo going. Your multiplier just keeps on getting bigger so if you can use the worm and the slow mo super move in a perfectly timed manner then you get the best possible scores. I wrote a blog about reaching the million here.
To be honest , I wrote that strategy guide well before even getting more than 1 million myself. I know that Luxembourg is a small country, but being at the top of the charts, even briefly felt like a true accomplishment to me.
In reality, I only had 18 downloads that day (LOL) but I didn’t know that at the time. Hahaha, still makes me laugh that. So, I really hope you enjoy the game and let me know what you think of it. If there are any improvements let me know.
You can like my Facebook page if you want to keep up to date. If you’ve missed it, I just released my new game, that is a freemium game. So you can play it for free up to a certain point and then pay for the full version as a one-off payment. It’s a really cool game. Here’ is the blog entry about the making of.
Stay tuned for some more game development adventures,
Connect the gems of the same colour to make them disappear
You gain magical energy to unleash powerful spells.
Each playthrough is completely unique, all of the missions are randomly generated.
The game features a unique artistic style
Devise your own strategy and playstyle
Unique soundtrack to accompany the game’s theme with more than half an hour of original music
Smooth gameplay that will get you coming back for more
3 additional game modes to unlock in the full game
Share your highscores, or brag about beating the harder game modes on twitter and on facebook
No ads, no annoyances, just pure gameplay.
First of all, let me put a picture here so you can get an idea what the game looks like:
In essence, it’s your typical connect the dots puzzle game, where you need to use your finger to connect a minimum of 3 gems of the same colour. I thought I’d deviate a lot from the basic principle once the game gets going. First of all, unlike other games of the same genre, I try taking the random element out of the gameplay where you are very much forced stuck when the right colours don’t fall in from the top.
If you combine 6 gems the last gem turns into a fire gem. Fire gems explode the tokens horizontally and vertically adjacent to the gem.
If the player gets to combine 11 gems of the same colour, it turns into a lightning gem.
Once you combine these gems, it explodes into a massive vertical and horizontal blast of lightning:
The player gradually unlock new magical abilities:
During the game, a player can have up to 3 magical abilities active to him at one time. They are at the bottom of the screen.
We have an energy bar showing us the total energy at the top
In the top pic, the first two spells aren’t ready yet, and the third one is ready to be used. The spell book icon allows us to change our spells.
In total, there are 4 magical trees each with 3 abilities to use. Certain spells are only unlocked once the player has mastered more than one tree, giving him much more powerful spells.
Once you exceed 3 spells, you unlock the spell book, which allows you to drag and drop spells from your spell book to your active magic bar at the bottom.
A spell needs energy. You get energy when you remove gems. Once your spell is charged, you can use it, and you pay with the energy that you have accumulated. (Depicted in the game as an energy bar below the game board)
Some spells you use by tapping the spell, and then tapping the board. Other spells affect your next connecting move that you do on the board. Those spells are referred to as boosts. For instance, you can use the energy boost to gain twice the normal amount of energy on your next move.
Once you use a spell, it goes on cool down, and it takes 2 full moves before it becomes available again, even if you meet its energy requirements. This means that you can’t constantly spam the same spell. You can also not have the same spell in your spell bar twice.
What do you need to do to get more spells? Collect stars!
Just like in other games, you can have 1, 2 or 3 stars when you beat the mission depending on how high your score was.
At 15 stars you gain your first magic. After which, each consecutive count of 15 stars will get you another level. So at 30, 45, 60 etc.
Between missions, you can change your spells freely.
You can also change your spells in the game. however spells have a cool down mechanic if you use them, and if you change any spell during the game, all of your spells have a 2 move cool down. This gives you a mix of flexibility and restriction so that you have to carefully consider when you swap out a spell, or if you can beat the mission with your current magic.
Each level up I only give the player a choice from 2 out of the 4 skill trees (fire, lightning, colour and energy) so there’s a random progression element to each game, so that the player has to choose which spell will serve him the best.
Eventually, you will unlock all of the magic, but especially in challenger mode, it takes a lot of practice to figure out what the good spell combinations are.
What are the advantages and disadvantages of each spell?
Fire blows stuff up, but it gets stopped by obstacles on the board. So it is not very useful on a very compact board.
Lightning blows up a whole row or column depending on the lightning direction. It does not get interrupted by obstacles. Good for removing a whole row of barriers for instance.
Colour is interesting, because it changes the colour of neighbouring gems. The lightning colour zap, removes all the gems from a specific colour of the board.
Boost affects your next move, so you have to use it when you have prepared a really nice combination.
mission selection screen:
Get a certain score (Gray triangle in the screenshot)
Remove all the goo on the board (green rectangle)
Remove all the barriers of the board (Gray circle)
Get the stars to the bottom of the screen (Star icon)
Get a certain score in 60 seconds (Only in challenger mode, arcade mode and mania mode, Golden coin)
Casual mode has 20 missions for free before you need to buy the in-app purchase. Once you’ve bought it, Casual modes goes all the way to mission 300. Once you buy the game, you also unlock challenger mode, a separate game mode that has a unique mission style.
In challenger mode you mustn’t lose all of your lives.
If you lose 5 lives then you are game over.
Every 10th mission, if you beat the chapter, then you get your 5 lives back, so it’s a case of surviving till the end of the chapter.
Challenger mode only has 100 missions, but every 10th mission you have to play against the clock. You really need to give it your all to beat these. Once you get far enough in challenger mode, you will eventually unlock arcade mode.
Arcade mode is special again.
First of all, you don’t save your progress. You have one life, and you have to see how far you get.
Also you don’t choose your missions, you just have to play the missions in the order that the game presents them to you.
Also, the board is 7×7
This means it should provide a more fast-paced game. You only have one life so you have to see how long you will get. I also created a long track to accompany this mode, because I think it would be annoying to have to listen to the same music over and over.
I added a special game mechanic in arcade mode where we have these cells that spread over the board, which you need to contain. Since they don’t give you any score when you remove them, you have to make a decision when you deal with it before it takes over the entire board. They act just like other colour gems, so you use your basic moves to combine then and remove them.
These cells spread over the board and don’t remove objectives like barriers and goo.
The final unlock able game mode is called mania mode, and it IS CRAZY. You have 30 seconds per mission, and you just play against the clock to reach a certain score. it’s 50 missions of heart-pounding edgyness, with an absolutely crazy song to accompany it. It’s designed for people who do not shy away from a bit of stress in a game.
Stats and achievements
I made a custom high score table and achievement screen because it’s a cross-platform game. The obvious choice on iOS would have been to integrate it with game centre but I didn’t want a system that only works on once system. It does mean though that the scores are wiped-out when you reinstall the game.
I went non-intrusive on my social integration. I never like being bothered with sharing my progress each time I play the game. So I only allow people to share their progress at certain points, and they can only share once. The button explodes when you tap it (hehe)
I have integrated it with a sharing screen which only appears when you tap share after completing 10 missions or after beating the game, or losing.
What engine did I use?
I wrote the whole game in Lua, and I used Corona SDK. Using a scripting language has its advantages and disadvantages. The speed at which you can test your changes are amazing. You just have to be extremely careful with naming variables, because you can lose hours before realising that you wrote healthbar and it should be healthBar because scripting languages don’t need to define any variables upfront. So it only breaks the game when you are actually running that piece of code.
Sound and Music
I spent lots of time working on the music because I want to raise the bar, that games should not just have 20 second loops that drive you crazy. I’m still a long way from being a professional composer, but I wanted my own style of music in there. Upbeat, electronic, funky. I hope you guys enjoy it.
The program I used for the music making is called Nanostudio that is made by Blip Interactive. http://www.blipinteractive.co.uk I think it’s just simple, elegant, and has a FANTASTIC sound to it.
The sound effects are either created from scratch or I used them from the wonderful www.freesfx.co.uk which I just needed to credit in my game. Also, I used http://www.bfxr.net again, because it’s just such a neat tool for making retro-style sound effects. I do add some reverb to the sounds coming from bfxr to make them sound a bit more high-fidelity. But all in all, awesome stuff!
How did I come to these design decisions?
My first decision was, to make another grid-based game because I just made one, and I didn’t want to start from scratch. My first game, Novoludo, is a unique match3 game where you have to swap the gems, and I really liked the way it turned out, because it has 2 really unique game play mechanics. So this time I thought I’d take on the connect the dots game style, and add my own personal touch to it.
I took a hard look at what I didn’t like about these games and what I liked. Especially when it came to figuring out how much I could do alone that was not going to completely overwhelm me. Turns out that adding the random missions was the hardest decision to make, because on the one hand, having to craft each mission by hand seems like a daunting task but it is a finite task. It means that it has a start a middle and an end. Once you’re done, you’re done. Having a random mission generator means that I needed to go through and come up with an idea of how to balance the missions that are generated at a given point in the game. Also, I needed to make sure that I could easily tune it, to avoid the game getting boring. For instance, what if I just make the board gradually harder ?
In concrete terms, it means, what happens if I keep on poking holes in my board? Eventually, the board will be so difficult that it gets frustrating, since there is a very limited number of moves the player can do. So, I needed a way to make the board generate more or less holes over a period of a few missions. The same thing goes for adding more or less barrier that the player needs to destroy to beat the mission. This suddenly become a massive task and just having the means of being able to tune the game was in itself a project. I have worked with my dad on many of my crazy creations before, and this time we sat together and figured out what I needed for the game, and how he could help. Suffise to say, he did an amazing job, and it meant that I saved about 1 and a half months of work.
Also the board had to LOOK good. I had my dad to thank for the code but it took a while to get there. We spent a whole month going over and over what would really make it look cool. By the end, my dad gave me a system where I can mutate the game board in bands. For instance, I can say, from mission 1 to 20 I can make the board generate more holes, and then from 21 to 50 I want it to get easier again (i.e. generate less holes). This means that from mission 21 I can really start adding more objectives in again etc.
Also, the bane of impossible boards. Having to figure out how to generate a board where the game breaks is not so easy. I have found a few impossible layouts that happened with very specific sets of conditions and that is never fun. It’s just a challenge trying to make it as flexible as possible, so that the game board has the highest number of variations. And I am immensely thankful that I did not have to worry about that aspect of the game, because it’s a killer feature, that really makes the game unique and cool and my dad did an amazing job with the code.
By the end of the balancing I have a huge file with tons of instructions that would take care of giving a really interesting and flexible progression in the different game modes. This required a great deal of play testing and tweaking before I considered it sufficient, and it took up about 1 month of time. The lesson I learnt is that randomness is not randomness. A game requires a level of controlled randomness, where the game developer still needs to be in control of the overall feel. It should never generate a board that is too hard, and it should never generate a board that is too easy. That is much easier said than done, and it was a bit of a monumental task.
Most of the fun in the game comes from that satisfaction of triggering an ability at just the right time. This is what makes me happy, when I see my friends get real sense of accomplishment when they do something clever. Also, a game developer is always happy when different people enjoy different magics. I didn’t want to make a game where there is only correct choice.
How did I beta test it?
Google play has a great mechanism to upload alpha an beta builds. You just need to convince your friends to join google + and to be part of your community. Then you can send them an invite, and they can opt-in to become testers.
What you need to do is create an ad-hoc provisioning profile under the iOS dev centre, that you use when building your app. Then you use test flight to send invitations to people’s e-mails that they should open on their phones and tablets. Test flight automatically then sends you their UUID, which you need to add back into the provisioning profile under the iOS dev centre. Then you update the profile on test flight for your app with the new one you generated in the iOS dev centre, and they get access to the build. Phew, what a process.
Breakdown of time per task
Start: 14th December 2013
Game design – 1 month
Core gameplay coding – 3 months
Graphics – 3 weeks
Music and sound effects – 2 weeks
Polishing, Balancing and Beta phase (I asked 6 people) – 2 and a half months
Releasing it – 2 weeks ( Build, upload, screenshots, making a trailer etc. )
I can’t believe it took 2 and a half months of polishing everything, fixing the bugs, adding stuff based on feedback from my friends and just in general getting the game to a very high level of quality. I have been asked by my friends when it will be done for the past 4 months now… oh dear.
I hope you enjoyed the read. This game all in all was the most time-consuming project that I have ever been involved with. Game development has so many twists and turns along the way, and it is incredibly hard not to deviate too much. The most important lesson I learnt is, plan ahead. It makes it possible for you to actually work on concrete parts of the game, that will make it in the end product. All the polish that comes once you get too obsessed by the game, might not be necessary, but the core game has to be finished beforehand and fun, and playable. Making it look good is secondary, but with today’s market of amazing games, I feel the need to make it as good as I can make it. The market is flooded with rubbish, so I am hoping that the level of quality that I have invested into it is refreshing to some.
Also, I never realised how much time I actually had to optimise the game, for it to run on older devises. I decided to add a 30 frames per second mode (usually it runs at 60) and a graphics slider that you can change for the game to run smoothly on older devices.
So I’m incredibly excited to finish this game, and am looking forward to people’s opinions. Even though the thought of people not liking it is scary, I know that I’m still learning, and still improving. I hope you can all give it a try, since it’s free to try after all. It was done by one guy who is truly passionate about making games and his father who was an amazing help.
So the main homepage at http://www.alfraprog.lu is finally live. It is my first (trying to get it to look professional) stab at web development. It’s been a long struggle. I initially designed it only for the desktop, but then after talking to some friends, I realised that I should make it responsive, i.e. compatible with mobile and tablet devices.
Turns out, that I learnt some php as well, because I found a nice script that tells me if I’m on a mobile, on a tablet or on a desktop. It’s called Mobile Detect: http://mobiledetect.net
What I finally came up with was to create the following php file, so that I have mobile, tablet and desktop support:
We force our viewport to be 320 wide, and we disable all forms of scaling by giving it an initial scale of 1, maximum sale of 1 and disable user-scalable.
The rest of the php file will be an actual php script.
We want to use Mobile Detect to figure out if we are on a mobile, or on a tablet. We create a new object from the class Mobile_Detect and we use the provided methods to give us information about the device we are on:
The last else deals with the desktop version. To reuse the same css on the desktop when resizing the window we say that everything below 700 pixels wide should be considered mobile. Above 700 and below 1025 we want the tablet version. And finally, from 1025 onwards we want the full-sized desktop version.
We use min-width and max-width for this:
echo "<link rel='stylesheet' media='screen and (max-width: 700px)' href='css/theme_mobile.css' />";
echo "<link rel='stylesheet' media='screen and (min-width : 701px) and (max-width : 1024px)' href='css/theme_tablet.css' />";
echo "<link rel='stylesheet' media='screen and (min-width: 1025px)' href='css/theme_desktop.css' />";
So I saved this file under dynamicStylesheets.php and in my index.php (Note that you HAVE to use .php now, because it won’t work otherwise) will look like this now:
Also for this to work, we need to serve the page dynamically since we are using php. I used the wonderful XAMPP. For XAMPP I saved my page here: /XAMPP/xamppfiles/htdocs/mywebpage and then access it on http://localhost/mywebpage. Note that the apache server has to be running for this to work.
Why did I not rely exclusively on the css properties? Because not all vendors of smartphones and tablets are the same. My goal was to have a much simpler script that does the job for me.
By using php I can just copy-paste my include of dynamicstylesheets.php into my different pages. It’s just one extra line in the header. Everything is in it’s little place this way, and I don’t have to worry about my setup anymore. We have to rely on php now, so all pages that use this technique will have to be served by the web server dynamically.
I really liked this link on css-tricks.com that gave me a good starting point: