Tuesday, June 05, 2012

New Game: Binkos

I've just released a new game: Binkos.

Back in 2007 I started working for Gamesys, specifically in the Bingo team. After more than 2 and a half years of working and speaking only about bingo, bingo balls and bingo calls I decided to move companies.
My time in Gamesys was great, I met and worked with lots of nice people, many of them were really talented and to pay my respects I created Binko.
As you can see, some typical elements in a bingo game are there: 90 bingo balls, a dabber and a jackpot. The idea was to hit the jackpot to get a prize, randomly selected from 6 prizes (one for each member of my team).

Bingo is dead. Long live Binko!

Many people might think the game is just another Peggle's clone, however, I was actually inspired by Players Plinko, one of the first mini-games I worked on in Gamesys but I won't deny there's an obvious Peggle influence as well.

That was just over 2 years ago, so yeah, the game engine is a bit old already. 

Last year while having a chat with one of my current work-mates (Zuzanna Kucharska) I mentioned the game and talked to her about FlashGameLicense.
She started working on the graphics, I updated the code and a few months later we had Binkos ready to be sold.

Despite the fact she did a great job, the game couldn't get any bid higher than $500 with some bids as ridiculously low as $80.
This is an early stages video of Binko's game-play:

First there was only one background and the player would have 25 balls to start with. Later on we added particle effects, different backgrounds for the 5 different levels (from late night to early morning) and the number of balls changed to 7 per level, carrying over any balls not used in previous levels.
After about 6 months we tried the Quick Auction option with the same results. Pathetic low bids.
We couldn't sell the game, so, I decided to release it as a Games-Garden game.

The first site I uploaded the game to is obviously Games-Garden.
Now the game has been released in:
- Newgrounds.
- Kongregate.
- Mindjolt.
Some other websites have taken the file from Newgrounds already so the viral distribution has already started.
I'll be releasing a Mochiads version of the game soon and see how it goes.

Some of the 3rd party libraries I used in Binkos are Box2D library for the physics in the game. Tweener, as usual, for all other animations like the boat going from side to side, points update, etcetera. Flint Particles library for the particle effects when the ball hits the tokens. Playtomic for the game analytics. Leaderboards are from MochiMedia and of course I'm using CPMStar and MochiAds for in-game advertising.

Now, if you're curious about the game and haven't played it yet, go and play Binkos at Games-Garden.

Sunday, December 11, 2011

Widget: iClock

More than 3 years ago I decided to move from developing small applications and left the 'widgetsphere' to focus more in the casual games industry. I created Games-Garden, a facebook app and a bunch of games.
These days my mode has changed a bit and I don't feel like spending all of my spare time creating games which might be played only a few thousand times. The competition is too big and there are lots of 'pirates' stealing games (specially from China) which is not fun at all.
So, I've decided to go back to create these small apps known as widgets. The first one I'm releasing is this iClock. Similar to the Digital Time and Date widget that I created more than 5 years ago, which by the way it has been cloned many times already, the iClock shows the time in a 12 hours format and as well it shows the date when moving your mouse over the small calendar icon which shows the day. The graphics obviously have a big influence from the iDevices and so far it looks like people like it. What do you think?

Personally I think is nice :)
I had the idea of creating a similar widget many years ago when at my previous job I worked on a countdown and these days the idea came back after my current task at work includes a copy of that old countdown. So yeah, it looks like everything is a remix... :D

Wednesday, November 09, 2011

Sound spectrum visualizer

I know I'm a bit late for playing with the AS3 sound API but I never had the chance to check it out before until some time this year and specially in recent days as I got the flu and haven't had much to do when at home (my girlfriend doesn't want to catch it so she's sleeping in another room and I'm not allowed out of this room...).
Anyway, after playing a bit with the SoundMixer class, and adding basics Flint particles in the background (yeah, some default example), I ended up with a small flash visualizer and uploaded to YouTube.

I think it looks cool, plus I love the song, Deckers Theme by Dom & Roland.
The base of the code can be found at this old post from Mike Chambers. I advise you to play a bit with the code, you can get some really nice results. And by the way, it's never too late to learn new stuff ;)

Monday, November 07, 2011

New Game: Emotiblocks

Just had a quick look at my forgotten blog (yes, the one you're on now) and noticed it's been a while since I mentioned any of my works.

Well, I've been busy doing games and other experiments mixing many technologies as usual.
Anyway, I want to introduce you to my latest released game: Emotiblocks.

It's a match 3 type of game with power-ups and 1 minute levels.
If you don't feel like playing it now, maybe this video from early development stages will tease you enough to try it for yourself:

And if in case you feel like adding it to your site, just download the .zip file from Games Garden 'Games for your site'.

Sunday, August 07, 2011

Flash Games Event: Mochi London 2011

Mochi London 2011
Mochi London 2011 is a FREE 2-day Flash games event taking place on August 27th-28th, 2011 in central London.

It has been brought to you by members of the Mochi Media community, Mochi London will bring local and international people together to share insights and experiences about the Flash games market. We're calling at:

  • Flash game developers
  • Flash game artists and designers
  • Flash game publishers
Whether you live or work in England or anywhere else in the United Kingdom, or even elsewhere in Europe, this event will be well worth the trip. Mochi community members Chris Jeffrey (ChrisJeff) and myself are organizing the event, with support provided by Mochi Media.

Come and join us! it will rock!
The speakers include:
  • Iain Lobb (freelance Flash / ActionScript developer)
  • Stuart Allen (developer of Gravitee Wars)
  • Martine Spaans (Ubisoft, formerly of SPIL Games)
  • Michael Hudson (ActionScript developer, CodeHeads)
  • Merlin Gore (Flash developer, FlashGameLicense.com)
  • Mike Jones (Platform Evangelist, Adobe Systems)
Don't forget to register and find out more at the Registration Page.

Monday, July 04, 2011

Google+ first impressions

I've been testing this new Google+ thing just to see what is about. Not that I'm excited about social-networks at all but I love technology.
By the way, this is not a full review nor anything like that, just a quick 'first impressions' on my experience so far using it.
First of all, as they are in close beta testing getting the invite was a pain!
After a friend found a 'hack' or a workaround to send invites, I managed to get into 'the circles'.
Inviting people is even a bigger pain!
Seems like even with this workaround, they allow only a limited number of people to join every day so, so far I got 1 friend! woohoo!! :D
I like the clean look of it and how it divides streams into 'circles' so you can choose the people who will read your message, only family, only friends, etcetera... nice! but there are loads of steps just to publish a simple 'hello mum'.

The circles idea reminds me of Wallop, a social-network made 100% in flash by Microsoft back in 2006 which I think it fail for 2 reasons: their greediness and the flash-o-phobia people had back in that time. It was way too advanced for those days :)

By the way, I don't think many companies will restrict the access to google.com so accessing to Google+ in a sub-domain is a good idea, http://plus.google.com, or bad idea from a business perspective... I'm sure companies will find a workaround to block access to it as soon as it becomes popular (if ever).

Tuesday, November 30, 2010

Extending AS3 trace

On a previous post (debugging spaghetti code) I mentioned it's important to know where a specific function is being called.
From Adobe, this is the description of what the function trace does:
Displays expressions, or writes to log files, while debugging.
We can trace anything anywhere in our code, however, as mentioned before, how do we know where? we could then specify this in each trace call, for example:
trace('MyClass - ' + someValueToTrace);
trace('MyClass - ' + someOtherValue);
Right, instead of writing the object's name in every call, we could have a private function to do this:
private function debug(objectToTrace : Object) : void
trace('MyClass' + objectToTrace);
Then, instead of calling 'trace(blah)' we use 'debug(blah)' which will include the class name. For example:
// outputs: 'MyClass - someValue'
Advantages? well, if in case we don't want to trace anything any more, we just comment out the 'trace' line in our code rather than deleting every single call to debug in that class...

Cool! now we know where are we using 'trace'.

Can we extend it? sure thing! and this is my solution:

- Create a class in your utils package, name it Debug.as.
- Create a static function to trace the name of the caller plus any parameter.
package com.mysite.core.utils
import flash.utils.getQualifiedClassName;

public class Debug
* // Writes in the flashlog the name of the object calling this function and any number of parameters

* Debug.print(this, someValue, someOtherValue);
public static function write(caller : Object, ...arguments) : void
var objectString : String = getClassName(caller);
trace(objectString + ' - ' + arguments);

private static function getClassName(object : Object) : String
var className : String = getQualifiedClassName(object);
return className.slice(className.lastIndexOf('::'));


If we don't use the second function (getClassName), the output would be '[object MyClass]' so that's why we slice a string to get only the very class name.
Now you can call Debug.write instead of trace in the debug function on every class:
private function debug(objectToTrace : Object) : void
Debug.write(this, objectToTrace);
// use debug(objectToTrace) instead of trace(objectToTrace)
Sweet! :)