Games and prototypes by Ciro Continisio

Ticketless is live!

Even if this blog may seem only UFHO-related, actually it’s about all things Tiny Colossus. So here I am, to present you our latest game: Ticketless!

Actually it went live one week ago, but since I’ve had quite a few adventures and a new life in the meantime, I didn’t have the time to post it here. Ok, I’m also very lazy.
So, here’s the game on the sponsor’s website:
http://www.gimme5games.com/play-game/ticketless

Or on the classic portals that we all love, if for any reason you want to play it there:
http://www.kongregate.com/games/TinyColossus/ticketless
http://www.newgrounds.com/portal/view/545295

The game is very simple, and instructions are provided. Even if the game was intended as an experiment to test the FlashGameLicense platform (thanks guys!) and Flixel, feel free to give us any feedback you want, even if harsh, we would appreciate it!

UFHO2 at the No More Sweden 2010

After rumors of my presentation being lost because the streaming was interrupted (with cries of people from Italy calling for an international scandal), it turns out that someone really captured my presentation (and others) on tape. I guess I have to thank Jeb from Oxeye Games!

Here we go:

No More Sweden 2010

After much toil, the No More Sweden 2010 game jam has come and gone. It was a wonderful experience for me, personally, for I have seen the whole trip somehow like an adventurous journey (fantasy helps making things better). The fact is that it’s a long way from here (in Rome) to Skövde, but it was surely worth it.

Skovde university
Cutting away all the unnecessary and personal details of my experience in Sweden, I found a lot of cool people both at the jam and out of it.
Erik Svedäng, which invited me in the first place, and Daniel Kaplan (head of Ludosity and co-organizer of the jam) were both very supportive to me, and offered help for housing and such in more than one occasion. Help that was not needed, fortunately.
Daniel Kaplan of Ludosity
Another cool guy is Daniel Remar, which ultimately won the jam too thanks to a very crazy game (aided, to be honest, by the funny theme made by Erik Sjöstrand).

Niklas Akerblad
Speaking of game making, I had the pleasure of working with Niklas Åkerblad, which is the bearded guy that made the music and art of Erik’s game Kometen. He’s a very talented painter just taking a look at games to see if it’s worth it, but mainly he’s a funny guy and a good co-worker. He even gave a very cool speech (in my opinion at least) about art in general, and its relation to games.
On to the jam then. The rules were that on the first day, everybody had to suggest some themes and write them down on a piece of paper to be put in a bowl. After that, each team picked up 3 themes and started making games.
Our themes were initially “Window-licker”, “Idiot” and “Co-op”. We felt like the first two were almost overlapped, so we traded “Idiot” with the Erik Sjöstrand team, getting in return the word “Mus” (mouse, in swedish).
Niklas working on the graphics of our game
After a bit of brainstorming, the idea for our game, later called Rowtard, was to do a navigation game in which there’s to retarded guys on a boat trying to save mice from drowning (because the mice are their best friend, you know). They have to work together, because each one of them has one oar.
After some time, the wind will go up and the sail fills, and the retards have to take turns on the rudder and ropes. There should have been also a random disability that showed up affecting both players, making the game less controllable and more difficult, although hopefully more fun.
Actually, not much of this worked at the end of the jam, as I incurred in some very bad math obstacles (very bad for me, being a mediocre programmer), but trying to put it all together certainly was a good experience. Also, Niklas was not mad at me for not finishing the game in time. He surely understood the spirit of the jam.

I had also the chance to present UFHO to the developers there. It was very nice to show my work in front of such an audience! Unfortunately, the cam for the streaming was out so I wasn’t recorded… I hope they have a backup registration, as I’ve heard…

Assorted Swedish devs
All in all, the whole trip was a refreshing experience because the guys were all very akin to my thinking. All cool guys with a passion, ready to jump with all their clothes into the realm of perilous game development. And they were nice too, not the average nerd that people expect 🙂
Among the others, I had the chance to meet my drawing idol Niklas Jansson, Dan Tabar (which is a very kind guy), Bernie Schulenburg (Die Gute Fabrik), Gualtiero Tabacchi, Kian Bashiri (the man who has asked us to burn the rope…), Martin Jonasson, Jonatan Söderström (also known as the Cactus, a guy who likes to tease me), Petri Purho, Michael Todd, and a host of other guys…

I have also made some funny interviews to all the participants, they will be edited together and put on Youtube as soon as possible! (read, next week)

We’re on IndieDB too

Indie DB

What to say, another good thing for indie devs! ModDB, the site dedicated to mods and one-man-band games, felt it was necessary to create a whole new place for indie developers around the world. The name says it all, IndieDB. We as Tiny Colossus couldn’t miss the appointment, so we jumped in the DB.
Tiny Colossus’ page is here: http://www.indiedb.com/company/tiny-colossus
UFHO: Space Academy page is here: http://www.indiedb.com/games/ufho-space-academy

By the way, they also have the group for the italian indie game portal, IndieVault.it. If you happen to be italian and indie at the same time, and you’re reading this, head for this page immediately 🙂
http://www.indiedb.com/groups/indievault

It’s all for today. I know, only links… next time it will be better.

E3 and stuff

They say we are indie game developers, and this is unquestionably true, for the most common definition of ‘indie’ revolves around the money available to the developer, and that money surely isn’t here.
With this cleared, I feel the need to spend two words on the big game fair that is the E3, taking place in Los Angeles in these very days.
I think some indie game blogs have chosen not to speak about it, like some form of silent acknowledgement of distance from the mainstream scene. I don’t share this line of thought: after all, they are games all the same, their players are driven by the same instincts to play, and most of all, a lot of the indie reality is interwined with the big industries, from the tools we use, to the digital delivery platforms, and so on.

On to the thoughts… First of all, as a Nintendo fanboy I greatly appreciated its conference, especially after thinking about it a little. They showed that they cared about the players by listening to the complaints that were raised at last year’s E3. I’m talking about the big deal of core games versus the small presence of casual games. While the last year’s situation didn’t bother me so much, I felt embarassed now and then by the sheer amount of shovelware that was presented by the infamous Cammie Dunaway, PR of Nintendo of America. She symbolized, for me, the failure of the Wii console as a gaming platform and the terrible perspective of a market dominated by waggle titles.

Thankfully, while still winking to the casual audience, Nintendo also showed a lot of remarkable titles for gamers. I’m only sad for Zelda, the motion controls are very cool, but the series already needed a reboot in gameplay, puzzles, dungeons structures, and story. I fear all of this will be left the same, compared to Twilight Princess and Ocarina of Time. Too bad.

What to say of the other two console holders. Both of them seem just late on the motion band wagon, with Sony clearly mimicking the Wiimote and Nunchuck setup with its Move peripheral, and Microsoft letting people down with the allegiances of its Kinect not really working at all (proved by some actor pretending to play Kinect games on stage).

What does this all have to do with us, poor indies? I bet in some years we are going to work on motion control or 3D titles in our comfy bedrooms or basements, so the conference offered us a glimpse into the future.
I don’t know if those technologies will be available for us soon. I hope they will eventually, so that indie development could have the same ‘horsepower’ in controls like the mainstream titles. What could a wiimote do in the prolific (and free from the main market) hands of an indie dev studio?
Truth to be told, this year we already saw something unexpected even 10 months ago happening: every major engine developer released its free version, with Crytek to follow soon. This is absolutely outstanding and a HUGE opportunity for people looking to create 3D titles on par with the AAA ones (not in scope, but in quality). Who knows when an indie console (I’m not talking about the Wiz for now) will be available for all to create their games on, together with all the cool features (controllers, connectivity, …) these things sport.

UFHO in BIT.TRIP Runner!

I found it! It took me a lot of time because it’s very hidden and more concealed than the other pixel art, but at last… it’s actually everywhere!

Check it out, in the lower left corner of the screen (the purple pink jelly, on the wall in the underground).

(Click for higher res)

By the way, this game is totally awesome. I was not convinced at first, I thought it was something like a Canabalt clone. (we are doing a ‘runner’ game ourselves…) IT.IS.NOT. It’s a wonderfully constructed game, with an appealing soundtrack. It’s actually the most melodic of all the BIT.TRIP games, and for me, the best of the lot.
I hope the quality of its two sequels will be as high as this one, or I’ll be disappointed!! [insert emoticon shaking its fist]

UFHO in BIT.TRIP Runner?

Some time ago, the cool guys at Gaijin Games proposed to the readers of their blog to create some pixel art to include in their latest game, BIT.TRIP Runner. I managed to sneak in a piece at the last second (last hour actually), and being without inspiration, I drew some UFHO characters in pixel art style.

That night Alex Neuse of Gaijin replied to me telling the characters were very cool, but I never figured out if they decided to include them or not.
It turns out that they did! They revealed the art that made into the game, and a Jeevil has sneaked in as a graffiti in the urban level of Runner!

Here’s the full image that I sent to Gaijin Games with all the other discarded characters, 1x size. It’s a shame for the Tremodillo (the yellow one)..

(Click for a larger size image)

Memory management in Flash

Ah, the joy of the first tech post in this blog! Don’t worry, it will be a quick one, and easy too. This post speaks about memory management, some issues that I had in UFHO with memory and persistency of objects, and the conclusions.

Introduction
In every programming language, there’s an entity called garbage collector which handles memory and frees it from unused variables. Now, everyone knows that, in Flash, there’s no manual garbage collection. That is, you can’t say to the player “Hey Flash Player, I’m done with this object, release it from memory”… no way! Everything is automated, which is cool at the beginning.
What the player does is to check periodically for objects that have no references, and remove them from memory. What is a reference? It can be a couple of things. Let’s see:

private function getGlobalPosition(_clip:DisplayObject):Point
{
  var theGlobalPoint:Point = new Point(_clip.x, _clip.y);
  return _clip.localToGlobal(theGlobalPoint);
}

The point of this simple function is to get the global coordinates of an object passed as a parameter.
The Point object created inside the function has a reference pointing to it as long as Flash is still executing the code inside the function. As soon as the function exits, the Point object is marked as eligible for the garbage collector, because there’s no more references to it (so it’s, in some way, unuseful). At the next pass of the garbage collector, it will be released from memory.

The Display List

Another way of keeping an object in memory, is to add it to the Display List. Example:

function createEmptyClip():void
{
  var theClip:MovieClip = new MovieClip();
  stage.addChild(theClip);
}

Compared to the example above, even if the function has ended, the MovieClip created here will not be released from memory until we call a removeChild on it. That’s because, otherwise, the object would disappear as soon as the function has finished its tasks.

Islands

Objects can have many references, and the Flash Player keeps track of them all and moreover, it keeps track of their number. When an object has 0 references, it is garbage collected. There’s another way to have an object collected though, and it is to leave 0 references for the object that references to it (its parent). For example, if you create a MovieClip and then add a child inside it, when you remove the parent clip from the display list, both are eligible for garbage collection.
This is called sometimes an ‘island’, because the isolated movieclips, while still connected together, are cut away from the mainland… the mainland being the stage (for the graphics) or the document class (for classic references). If a group of object is not added to the display list or doesn’t have any reference to the document class, they are removed from memory.

Event Listeners

This, is the tricky part, and where I met problems in making UFHO.
The basis of event management, the addEventListener function, is a mischevious one. After adding a listener to an object, even if you remove that object from the stage and delete all references to it, it will still be kept in memory because a listener is still… listening for something. Even if it can’t be clicked (MouseEvent), it may still do something like send ENTER_FRAME events.

Bottom line

That is why you should always call removeEventListeners when you are done with an object, so you don’t have that object stuck in memory and you don’t know what caused the memory leak.
In my classes, I usually have a method that is responsible for removing all the listeners from an instance. You can remove listeners without any fear, because differently from removeChild, which yelds an error if you try to remove a clip which is no longer in the display list, removeEventListener will not give any error. So it’s safe to try to remove anything and everything, and if the event listener was already removed… no problems!

private function removeListeners():void
{
  graphicalBoard.removeEventListener(BoardEvent.ROOM_CLICK, onRoomClick);
  graphicalBoard.removeEventListener(BoardEvent.AREA_HANDLE_CLICK, onAreaHandleClick);
  graphicalBoard.removeEventListener(BoardEvent.AREA_CCWROTATION, onAreaCcwRotation);
  graphicalBoard.removeEventListener(BoardEvent.AREA_DOUBLEROTATION, onAreaDoubleRotation);
  graphicalBoard.removeEventListener(BoardEvent.AREA_MESS_UP, onAreaMessUp);
  graphicalBoard.removeEventListener(BoardEvent.START_DRAG, onStartDrag);
  graphicalBoard.removeEventListener(BoardEvent.STOP_DRAG, onStopDrag);
  (graphicalBoard.stage != null) ? graphicalBoard.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onDragUpdate) : null;
}

Anyway, for the removeChild error, there’s a quick patch: just check if the DisplayObject’s stage property is null, and if it’s not, remove it from its parent. This way you don’t even have to remember from which clip to remove your object.

Notice how I remove the MOUSE_MOVE listener from the stage only if the graphicalBoard stage property is not null (that is, the graphicalBoard is still on the stage).

I also use this for special effects clip: I put on the last frame of the clip this code:

this.stop();
this.parent.removeChild(this);

This way the clip will automatically remove itself from the display list, and also stop its timeline. This is because… I fear that if you don’t stop a clip, sometimes, it will stay in memory. I made some tests and I’m not sure about the results, but better to prevent than cure!

Powerups galore

I’m working on the implementation of the new powerups for UFHO: Space Academy. In the first version of UFHO we had six powerups, which are marked with a white dot in the image below:

As you can see, there’s four new powerups! Can you understand what they are for? Consider their color too, for I have divided them in categories based on their purpose. For example, the purple ones add something (moves or time). The green ones work on areas… can you figure out the purpose of the new ones?

The Humble Indie Bundle!

Those crazy geniuses (geniuses? is this the plural of genius?) of the Wolfire team have created another crazy initiative. But this time for good.
The Humble Indie Bundle is, like the name implies, a bundle of indie games. It’s humble because you pay what you want. That’s right, you can have all 6 games in the bundle for as low as 1 cent. It’s crazy.
The games are World of Goo (2D Boy), Acquaria (Bit Blot), The Gish (Edmund McMillen), Lugaru HD (Wolfire Games), Penumbra Overture (Frictional Games), and at the last second, Samorost 2 (Amanita Design).

So, you can pay what you want and you can decide how to split the payment between all the indie games and two no-profit associations, Electronic Frontier Foundation and Child’s Play.

It’s crazy. It’s indie. It’s humble.
Head over to the bundle page to know everything.