A game jam at Liip: Ludum Dare 39

Recently we hosted a game jam called Ludum Dare in the Arena of our Zürich office. It’s important to us to be a part of the tech community, and there’s a growing scene of indie game developers in Zürich.

What is a game jam? It’s a challenge to create a video game from scratch in a short amount of time. There are a lot of different ones being run; for Ludum Dare you and your team have 72 hours to make and submit your game. Although that may sound impossible, game jams are popular exactly because they force you to be creative instead of dithering about the details of what you want to make.

Ludum Dare

Ludum Dare has been running for fifteen years now, and this was the 39th edition. Thousands of people across the world participated, all creating games on the same theme—which was not announced until the start of the jam. You can always participate at home, but getting together with other jammers is much more fun. It also lets you meet new people and form new teams. That’s very necessary, because making a game requires so many different skills.

In Zürich, the local game developers’ group Gamespace organises meetups for Ludum Dare, and this was the second time Liip has hosted them. It’s much easier to jam if you have a big space where you’re not disturbing anyone by spreading out electronics and making weird sounds.

The Jam

We started on Saturday morning with croissants and orange juice and discussed the theme: Running out of power. A good jam theme should have lots of different possible interpretations, and our group discussed running out of computing or graphics power, the Spoon Theory, losing political power, losing magical powers, or having to constantly charge your mobile phone in the game. In the end we split into two groups. One decided to make a story game about coping with depression, and the other started on a platformer about a magical creature giving up their powers to become more human.

The groups got down to business and began writing code and using graphics tablets to make the artwork. Both games were programmed using the Unity engine, a popular choice because of its broad feature set and visual editor.

For the game Dryad, which I worked on with David Stark, we wanted to come up with all our sound effects from scratch. This meant repurposing whatever office supplies we could find in unexpected ways! The sound of sticky tape being pulled off the roll became the sound of a magical spell. Riffling a block of post-its, we got the sound of a crossbow firing a bolt. The noise of triumph when you reach the end of a level comes from a table football trophy being struck!

The Results

By the end of Sunday night, our games were mostly complete and only needed the finishing touches to be submitted on Monday. Both of them are available to play online: Dryad and 03:00 AM. We’ll discuss the creation process at a future Gamespace meetup. In the meantime, the games from the Ludum Dare 38 jam (also held at Liip Zürich) are available here:

Tags: , , , ,

Drupal Hackday – Writing DRUSH extentions

Today Patrick Jezek and I sat together to get a grip on one of the major problems we have when using Drupal in a continuous integration environment – module updates involving major updates on configuration settings and database content.

Problem description

Imagine a usual Drupal installation already deployed on a live server. Imagine further that there is a demand to update at least one module of this installation without human interaction, any downtime, and data loss. The default work flow when updating configuration information would either demand human interaction and/or the complete deinstallation and reinstallation of the module which, when the hook_uninstall() correctly implemented, will cause data loss. A third option is to write a script to setup the new module after the installation process is done but this would challenge the deployment system to support some kind of a post_deployment process.

What was the goal?

The goal of this hackday was to propose a solution which enables a development team to continuously deploy and maintain a Drupal installation without being forced to uninstall modules to do a major update. Further more there should be some kind of a mechanism making it possible to update modules without human interaction when deploying the modifications.

Solution proposal

One of the most beneficial Drupal extensions is the Drupal shell (short: drush). It provides an extensive variety of commands to maintain Drupal (e.g. managing modules, users, and basic drupal configuration). The nice thing about drush it can be handled by any shell script just calling the specific commands and processing their outcome. Extending drush was therefore the most natural thing we could think about when we were confronted by this task.

So we came up with a drush extension providing a new Drupal hook hook_vm_update().

Custom hook_vm_update

Located in the *.install files the hook_vm_update() will be invoked by the drush extension. Further does the extension detect the existence of the custom hook and indicates this on the command line.

Custom scripts

In order to keep track of previous installed module versions we wrote two scripts. One does write down the currently installed version into a text file. The other one invokes drush to for modules which got changed since last deployment.

Further ideas

Add version information to hook_vm_update

Currently the update hook will always be called when the drush command is invoked and the previous installed version is smaller then the just installed one. Having only one hook implies that this hook knows which steps needed to upgrade from one version to another (including steps in between). What about a naming convention for hooks combined with version number and a logic to call them in chronological order, up to the target version (like Drupal core updates use schema update hooks).

Since the hook should not invoke actions potentially dangerous or harmful in terms of data loss et. al. this should not be much of a problem. But since we can already imagine situations where it is useful to either step through past updates or make the hook decide whether it an update is to be invoked or not one of the next steps for this drush extension will be to provide version information for an update.

Persist version information into the database

The versions.json file resists on the file system and could be potentially overwritten by a new installed package. An alternative could store the version information into the database (e.g. by using the Drupal configuration with variable_set() ?).

Final thoughts

We had some fun working on a solution for this given problem. We had the chance to look deeper into drush. We learned yet some php functionality we never used before. Unfortunately the weather was not nice and we could not fire up the grate for lunch.

Last but not least thanks L//p for this opportunity!

Tags: , , , ,

Zurich Office featured in TEC21


Liip’s Zürich offices recently got featured in TEC21, a renowned Swiss architecture journal, under the title of “Atmosphäre des Digitalen”. Apart from discussing some special features of our operating base, the article critically ponders the notion of “intellectual sensualism” as well as aspects of the relations between architecture and the kind of stuff we do – we use architectural design patterns, they give us software-generated tapestry (picture above). If you’re interested: here’s the PDF of the entire article – enjoy.


Credits: OOS (architecture), Dominique Wehrli (photography).


You’re invited to the Liip Award Night


We want to mark an event for the highlights of this eventful past year. And we definitely want to have a drink with all the people who contributed to our success: our clients, partners, friends and the entire Liip team. And of course, as promised, with everybody that helped winning  this year’s Master of Swiss Web award. So we’re inviting all of you to our Award Night, in order to say thank you, to celebrate and perhaps even dance a bit!

  • Venue: EXIL, Hardstrasse 245, 8005 Zürich
  • Date: Tuesday, December 1st 2009, door opens at 19:00
  • RSVP until November 22nd 2009 at awardnight.liip.ch

We are looking forward to having a great celebration with you!
Do sign up now!

Yours truly,
all the Liipers


28.th User Group Meeting of the SFUG

The 28.th User Group Meeting of the SFUG (Swiss Flash User Group) will take place next Tuesday, October 20th, at the Liip office in Zurich.
Michel Wacker, Sandro Ducceschi and other members of the Liip team will attend as well, and are looking forward for you to join us to discuss the latest news from the Flash world:

Topics are:
1. Showcase: “Postfinance Eventmanager” – Sandro Ducceschi (Liip AG)
2. Review: “Adobe MAX 2009” – Tiago Dias und Marcel Vogt (both Publicis AG)

More details can be found here.
New group-members are more than welcome, just come by and join us! See you there.

Tags: , , ,

SFUG goes Liip Zurich

After a long summer break the Swiss Flash User Group (SFUG) is finally coming back to life. The meeting that ended the break in the middle of October was a quite enjoyable get-together with two liipish presentations on an experimental development with ZINC and an internally developed workflow approach called AssetMapping to ease the work between designer and developer (stay tuned for more news on these two topics).

Since ActionScript 3 started a whole new era of Flash development, many ideas and concepts are only about to take shape these days in form of frameworks and libraries. Many of them even are open source, so, no surprise, the next SFUG meeting is already scheduled to cover some of them and we’re happy to announce that Liip will be hosting it for the first time at our office in Zurich.

It’s free, it’s fun, it’s Flash – and there also will be beer. So make sure to be around November 18th (yes, that’s next Tuesday) at 7pm to learn more about fascinating Flash topics such as the GAIA framework for designers, the Alive PDF library and fZip. Interested? Then check out the details at the SFUG Blog and do come join us!

Tags: ,

APGS vs. Webtuesday

As mentioned on yesterday’s Webtuesday, there’s a little webtuesday sideevent next tuesday.

It is together with the “Account Planning Group Switzerland” (APGS) and Hannes and me will have 3 short talks about what’s somewhat “hot” currently in web development

• Semantic Web
• Location Based Services
• Agile Development

with certainly interesting discussions afterwards. In the APGS are the top marketing and PR companies of Switzerland and we will have some very interesting people from this offline marketing world at that event. The discussion with them about “our” strange world online will certainly be a insightful evening for all of us.

So, if you want to attend that evening next tuesday, 17:30 at Giesserei Oerlikon, just let me know. The sooner the better. :)

Tags: ,

Reminder: OpenExpo, OpenMeet today in Zürich

Just to make sure nobody, really nobody forgets about this: OpenExpo Zürich takes place today and tomorrow, Wednesday & Thursday (19/20.09), presenting a wide range of highlights from international as well as local Open Source area, the keynote speeches by Chris DiBona (Google) and Georg Greve (FSFE) or the OpenMoko presentation are just a tiny bit of them. Liip is having two presentations, too, Chregu on “Offline Web Apps with Google Gears” and Kus with “Moodle – Open Source Enterprise E-Learning”.

A particularly good place for celebrating good news, spontaneous “Lightning Talks” and a fine FreeBeer is OpenMeet, the loungy apéro all about free culture and expression.

So see you there.

Tags: ,

Webtuesday: Changing Networking – Matching People

Late reminder. This evening. 19:30. Webtuesday at shiftTHINK at the Technopark, Carole is talking about “Changing Networking – Matching People” (I also don’t know more about the topic :) )

See you there.

Don’t want to miss future Webtuesdays? Subscribe to the calendar or RSS feed at upcoming.org.

Tags: , ,

WG Zimmer gesucht (not for me : ) )

In German (Summary: My Girlfriend’s brother is looking for a room in Zurich)

Der Bruder (21) meiner Freundin hat vor 2 Wochen angefangen an der ETH Maschinengenieur zu studieren. Leider scheint’s relativ schwierig zu sein, ein Zimmer zu finden, drum versuchen wir’s mal auf diesem Weg.

Wer also von einem freien WG-Zimmer oder ähnlichem in Zürich weiss, soll sich doch bitte melden, ich werd’s dann weiterleiten.