A job like any other ones

Posted by Etienne Gurrera on Friday Feb 5, 2010 Under Design

A Story of TURN Part 2

“A job like any other ones” is precisely what Camila dreamed of at that time.

Hidden behind a container, she was watching a conversation between two dockworkers. She could almost be taken for a traditional office employee with her strict lady’s suit, apart from the old faded gabardine she wore on top of it.
Read More

ADD COMMENTS »

The story begins

Posted by Etienne Gurrera on Tuesday Feb 2, 2010 Under Design

A story of TURN part 1

Sequence02

When I think that Camila told me this time it was a cushy task… I should have listened to what my mother said, never trust what goes out from a lipsticked mouth… And that bloody rain keeps falling… I must look like an old wet dog…

Kurt glanced around, grumbling. His tall ungainly silhouette huddled under the porch of an old Thai restaurant was giving away a veil of steam. In the diffuse and dirty light of an old street-lamp, he looked like a ghost waiting impatiently for the storm to pass back, so that he could go on haunting the old city streets.
Read More

1 COMMENT »

Interview with the Shaman

Posted by Etienne Gurrera on Friday Jan 29, 2010 Under Design

Bathed in sweat and startled at the slightest cry of wild animals, I was walking fearfully amid the humid jungle in search of the strange indigenous living here. I had been warned to be careful, but I just had to find something interesting to study if I wanted to keep my job.

Manuel_Characters_03

Read More

1 COMMENT »

Spotlight on David Lichtle

Posted by Etienne Gurrera on Wednesday Jan 27, 2010 Under Visual

Sly look and cunning gait, David Lichtle is the devil incarnate. One of my proofs is his red hair that he sometimes hides under a hat to avoid be sentenced to be burnt at the stake. He is inseparable from his confederate Maxime Praud, but nobody knows yet which one leads the other, or if they are accomplice in their pernicious acts.

David

I have a theory about this, that David would control Maxime through red hair he had implanted in his beard. But others argue that Maxime is the brain of the duo … this seems unlikely, given their actions … I mean that they have a brain … hum …

And yet they were able to demonstrate a boundless ingenuity when it came to concoct Kurt and Camila ever-harder obstacles. I managed to have a quick look at their evil plans, and I can tell you it is really chilling.

It will take a great dose of spirit to our two heroes to manage to defeat the devious traps they have set up. Many unfortunates have tried and did not come out in one piece, and those who left physically unhurt have never mentally recovered…

3 COMMENTS »

Meeting the yeti

Posted by Isabelle Menegatti on Friday Jan 22, 2010 Under Design

MiniYeti- You yeti? You happy?

- Yeah, me happy. I would like to take this time to yell out about something!

- Uh …

- It is not because one is hairy that he is necessarily an idiot.

- You not idiot …

Read More

1 COMMENT »

Spotlight on Isabelle Menegatti

Posted by Etienne Gurrera on Tuesday Jan 19, 2010 Under Design

IsabelleInvestigation Report No. 23,666:

I write these few lines with what remains of my blood … I do not even know what really motivates me, surely a touch of hope for future generations. I’ve just came back from my mission concerning the subject IM23. And the first thing I must say is that we were right from the beginning …

The woman, whose real name is Isabelle Menegatti, however, did not look suspicious. I realized my mistake only when my torso was plowed by her trained fighter cats. She is behind all. She is the head. She is the dark…

I should have guessed. Her little old lady look, with the dead animals bodies she wraps around her neck as trophy. Perhaps very soon it will be mine that will be used as a scarf. How can anyone be so cruel?

She has sponsored the whole thing, I’m sure about it. The crazy cat lady was not what we expected. Actually she is the brain of the party, because indeed there is one, although we doubted that by their acts. She is responsible for Kurt and Camila’s torments, she misled us, she makes a fool of us, she is playing with us.

Forgive me, I was not strong enough for her … But I doubt that someone would be one day. Good luck…

2 COMMENTS »

TURN poster, “Avatar” style

Posted by Jean-Michel Stenger on Friday Jan 15, 2010 Under Visual

Affiche-Avatar-EN

Our hero has spent his Christmas holidays on Pandora, planet of the Na’vi. Here is a souvenir of his stay in Avatar’s world.

2 COMMENTS »

Rewriting TURN’s gameplay engine (3)

Posted by Elisée Maurer on Tuesday Jan 12, 2010 Under Code

A game’s mechanics are powered by a gameplay engine. This piece of code takes care of handling all the logic behind the scenes to make the game behave like it should. With the 1.1 update of TURN Episode 1 comes a new gameplay engine, rewritten from scratch.

In this third post (you can read the first and second posts), I’ll talk about pyTurn, our level-testing tool and the final integration of the gameplay engine in the iPhone and DSi versions of the game.

Rewriting the game in 2 weeks

Being done with the rules, left to do was rewriting the game engine. I decided to write a PC version of the gameplay engine using the Python language and PySFML library, which allow for quick prototyping. By doing that, I hoped to get the new behaviour working quickly, and to provide the level designers with a tool they could use to test and fix their levels.

It proved to be a good idea. Once done with the core gameplay mechanics, thanks to those tools, I was able to implement a bunch of helper functionality like displaying the input history, switching level themes and saving and loading replays of a level. This last one allowed us to have a proof that each level was actually possible to complete. Each time a correction had to be done on the game engine, all we had to do was to check that previously-recorded level replays still worked.

Porting it over to the iPhone and DSi

The gameplay engine written in Python cannot be used as-is on the iPhone or Nintendo DSi (mainly for performance considerations). I had to rewrite the engine in C++, a language allowing finer-grained control on performance at the cost of a more time-consuming development.

libturn-separation-en

In order not to waste effort, I took this opportunity to fully separate the game’s logic (the game rules we defined) from anything specific to a particular console (rendering, sounds, user interaction). Rewriting the engine took a little longer because of this, but by sharing the same code on the two consoles, we’ll have less bugs and avoid duplicating work.

2 COMMENTS »

Players may now speak – Duduffe

Posted by Jessica Tartaglia on Friday Jan 8, 2010 Under Communication

Duduffe

The second person that had the chance to win TURN Episode 1 is Duduffe. As she is hooked on video games (a passion that she shares on the blog she writes with her boyfriend), Duduffe gives us her opinion on Kurt and Camila’s adventures.

“TURN episode 1 is an original game. The graphics in general are quite nice and the characters are funny.”

With artworks, designs, colors and animations, there are no less than six people who worked on TURN.

“The soundtrack goes well with the game; sound effects are a bit repetitive but it’s probably because I spend my time being crushed by crates! :)

We chose not to overload the sound so that it is discreet and allows the player to concentrate on the gameplay while enhancing the game experience. Considering the fact of getting crushed, we’ve all lived that. ;-)

The puzzles grow in difficulty, so that you can slowly gain control of the game. You must turn the room in every direction to avoid objects / enemies, and recover the key to go to the next room. It’s original and gives something more to the game. Buttons are well placed but I would have preferred to change the orientation of the iPhone in order to turn the room rather than using buttons.”

Use the touch screen of the iPhone to move Kurt or Camila was a choice. TURN is a game very reactive, it was difficult to use the rotation of the iPhone itself. Indeed, the accelerometer platform causes an effect of latency and playing TURN by turning the iPhone would be tiring quickly.
We still leave the choice to the player by allowing him to use either the buttons or drag the characters and run through the rooms by finger movements.

“I found the game very addictive, at least if you like puzzles. Otherwise, you would probably tend to resign quickly if you’re not finding quickly the solution to a room.”

The difficulty of TURN is the very patience it takes to actually solve some rooms. If the solution appears to be obvious sometimes, other times it will take you several attempts and you must persevere in order to succeed. The important thing is to not give up.

“I played a good hour and I have not finished it yet. It seems to be a lot of rooms to unlock so you can expect a good life span.”

The average life span of TURN is about 20 hours, which is indeed higher than most iPhone games.

Many thanks to Duduffe for her review!

ADD COMMENTS »

Rewriting TURN’s gameplay engine (2)

Posted by Elisée Maurer on Tuesday Jan 5, 2010 Under Code

A game’s mechanics are powered by a gameplay engine. This piece of code takes care of handling all the logic behind the scenes to make the game behave like it should. With the 1.1 update of TURN Episode 1 comes a new gameplay engine, rewritten from scratch.

In this second post (read first post), I’ll tell you about the process used to decide on the behaviour.

Settling down on the game’s behaviour

After too much time trying to get the old engine to behave, having realized all the problems we were running into, five of us decided to lock ourselves up into a room to settle once and for all each case and draw rules out of it.

turn-gd-fix-whiteboard

A few not-so-simple cases

We started by enumerating on a whiteboard a few cases that were encountered while playing and that felt weird or buggy. And guess what: we came to realize we didn’t agree on what the right behaviour was! TURN is a puzzle game, not a physics simulation, we’re constrained by the grid in which the objects are located and can’t end up with objects standing on two tiles at once. So sometimes, as I stated in the first part of this series, the behaviour just has to be agreed upon, there just isn’t always a universally superior solution.

On the wall was projected a wiki page which we could edit in real time to settle down on the rules.

The new rules

We decided the game had to be split into small timesteps during which each object could move at most once (in the final game, each of these steps lasts 1/6th of a second). Here is a extract of the game timestep’s recipe:

  • Gravity: Processing from the bottom to the top of the room, each object subjected to gravity that does not stand on a solid object goes down one tile
  • Artefact: If Kurt (or Camila) stands on the tile which contains the level-ending Artefact, the level is completed right away
  • Crushing: If a non-solid alive object (Kurt / Camila or an enemy) is on the same tile as a solid object, it dies and isn’t part of the room simulation anymore.
  • Landing: Processing objects from the bottom to top,
    • Crate: If a crate just fell and now stands on a solid stopped object, the object it stands on takes damage. If the object still exists after taking damage, and the crate is now stopped.
    • Breakable crate: If a breakable crate just fell and now stands on a solid stopped object, both the breakable crate and the object it stands on get damaged. If the object still exists after taking damage, and the breakable crate is now stopped.
    • Boulder: If a boulder just fell and now stands on a solid stopped object, the object it stands on get damaged. If the object still exists after taking damage, the boulder will try to roll.

There are some other steps but they are left out for the sake of brievity.

The team trying to come up with a consistent behaviour

The team discussing a particular issue using "Paper TURN" ™

Once we had covered a broad sample of cases and decided upon these simple (but precise) rules, we gathered around a table, cut a bunch of small cards for each type of game objects and started testing.

At the time we started the meeting, I was quite anxious as to whether we would be able to find a consistent behaviour for the rolling boulders. But we did! I guess next time, we’ll be careful to have this kind of meeting before getting our hands dirty with coding the game. We could have saved some sweat and time!

3 COMMENTS »