Sunday, May 22, 2011

The Split-Up Game

This is the game we made during the Global Game Jam 2011 with Rémi and Fabian, on the theme Extinction.

More advertising and download instructions at the official page (supposed to run on Windows, Mac OS X and major Linux distributions)

The idea took quite a long time to rise, but we wanted to try making an experimental gameplay (well, that is the goal of such prototypes, isn't it?) about relationship. Teammates felt excited about making a game that could really break up some relationships... no comments :)

We wondered which technology we would use: HTML5 or Lua/Löve2D. After some tries, we chose Löve2D, mainly to facilitate asset management. This is a fabulous framework to create prototypes, as I have continued to use it for this purpose. In short, this framework allows to render 2D graphics and other primitive shapes (actually using OpenGL), sounds using OpenAL, keyboard/mouse/joystick input, and even physics simulation with a binding of Box2D. It uses Lua as programming language, therefore considerably accelerates the development... it would be impossible to do such a prototype in C++ within the same time. You should give it a try. Other prototypes mainly used Unity3D and Flash.

Fabian did a really great job doing the assets. He (Rémi helped him too) modeled the rooms in 3D, then exported the scene with an orthogonal view as an image, and finally touched them up. Yeah there are some tricks, you might see that the room walls are slightly curved. But the result is amazing. The rooms are seen with a small angle, making the illusion of perspective, whereas the characters are straight because they have to turn in every direction and it was actually easier to do so.

Bedroom, first room of the game.
The development was quite iterative, with no formal process. As we were grouped on the same tables and were only two developers, it was easy to discuss about our design and code. This might have annoyed other teams... Our design used two entity classes, Room and Item. Room is a description of a room, with their collision boxes (simple axis-aligned box collisions, no physics). Item is quite generic, actually a container for components which were described in the resource file for the room (Lua file too, no deserialization!). Finally, we used Mercurial to version and share the code between us.

Beginning of the game. Some items are drawn over the background. But other interactions actually happen with items with no special graphics, like the library.
It was my first real prototype, and now I love them. Such "contests" are a great occasion to learn about development by prototyping first. Because time is limited, one has to focus on the most important features to have a final package which works and is fun to play. Someone said agile?

No comments:

Post a Comment