Monday, July 13, 2015

Reflections on Chalo Chalo at Radius Vienna

If you'd like to be notified when Chalo Chalo becomes available you can enter your email address into this form.

We had a fantastic time at Radius. I'll talk about some of the things specifically relevant to Chalo Chalo.



The responses to the game that we were aware of were very positive. There was lots of frowning and yelling and by the final day we had a group of regular players who kept returning to join in with new matches.

This was the biggest presentation of the game since we'd made a bunch of significant changes. Some of our players remembered previous versions and commented on the changes. The most significant among those:

  • Landscape generation is now based on a voronoi graph rather than overlapping squares.
  • Powers take the form of single-use pickups that can be collected during a race (and carried to the next). In older versions there was a power selection screen between races.
  • We added the possibility to 'nudge' nearby opponents when no power is armed, an action which also works as an instantaneous brake, which can be especially useful on ice.
Looking through the folder of of automatic screenshots, we can see that more than 622 races were played. This kind of intense use helped us spot bugs we'd missed before. 
  • Under certain conditions a player will always start a new race with Tar bomb armed.
  • The Shinobi teleport power allows a player to teleport to the outside of the barrier around the edge of the map, locking them out for the rest of the race.
  • Sometimes mysterious duplicate players will show up.
  • A 'Drunken autopilot' bug was described to me in which a player couldn't steer any more, and instead their dot veered around as if under computer control. If this is really a bug (and not a result of watching the wrong dot) it's by far the most mysterious, because there's no AI in the game at this stage.
There were some moments that I expect to remember for a long time. At one point a match with many players, including Richard and myself, was underway. A young boy with blond hair and a green T-shirt sitting to my left was also playing. He was quiet throughout the game until half way through the match. He implored in a German accent "I'm yellow and I need help". The help wasn't forthcoming but he cleanly beat all of us adult players in the next race thanks to his deft deployment of the Blindfold power.

And there was the time when most of the racers in a very busy map careered down a grass path without spotting the lava dead-end until it was too late. The lone player slogging through the tar further down the screen won by default.

As usual, several people asked whether Chalo Chalo's resemblance to human reproductive biology was deliberate. The name 'Sperm Race' was suggested. We have no current plans to pursue such a rebranding.

We had some useful discussions between the two of us, and with others, about the direction of the game. Most of it validating the biggest decisions we've been making. There's still lots to do but now it's either polishing or implementing things we're very confident will improve the game, rather than things that feel risky like the recent big changes did. I have the idea that an early access release candidate isn't a million miles away any more.

Here are the bigger things we still have planned:
  • Landscape generation: Switch to a system based on stacked noise generators to enable compound terrain patches and biomes that have a more visible, and distinct internal logic to them.
  • Rare things: Implement some of the ideas we've had for things that happen very rarely in the game.
  • Tournament mode: An in-game way of facilitating local tournaments.
The MuseumsQuartier is the perfect place for the festival. It felt very comfortable to step out of the Ovalhalle after the day's exhibition was over and straight onto the square to drink a can of beer with Vienna's friendly locals and visitors.

Wednesday, June 10, 2015

Chalo Chalo at Radius 2015

Chalo Chalo will be at Radius in Vienna. You can come and play on Saturday, 11th of July 2015 and Sunday, 12th of July 2015. It'll be in the Ovalhalle, Museumsquartier, from 10:00 until (last entry) 19:30.

Thursday, September 25, 2014

Voronoi mock-up


Richard made this mock-up for the Voronoi scheme. I think it's looking great. Perhaps this is the moment it makes sense to finally buy Unity pro to get the bloom effects going.

Monday, June 2, 2014

Rationing rare occurrences in Chalo Chalo

I like when unexpected things happen in games. Better still is when the unexpected thing happens just when you feel that you've gotten to know the how the game world works. Its impact is maximised at that moment.

We have some unexpected things that happen now and then in Chalo Chalo, we call them rarities. They're designed to foster a sense that the game world has hidden depth and mystery, and to keep players on their toes.

The simplest way to implement these rarities would be to assign each rarity a likelihood. A random number would be generated and compared to the likelihood of the rare thing happening, if the likelihood was lower than the random number, the rare thing would happen. But given that the aim is to have the unusual things happening just as players feel familiar with the game, a better way to set this up is to arrange things so that the longer you've played without seeing anything out of the ordinary, the more likely you are to see something out of the ordinary in the next race (which would not be the case with the simplest set up).

Chalo Chalo is built to include a concept of 'rarity pressure'. You can think of it as 'something in the air' that influences how likely strange things are to happen. The higher the pressure, the more likely that a rarity will manifest itself. When nothing out of the ordinary is happening, the rarity pressure is incremented after each race. We want rare things to be more likely if you didn't see any for a while, and less likely if you did. so to complete the scheme, each rarity has a 'rarity_pressure_release' value. The rarity pressure drops by this amount after the rarity manifests itself.

We use a JSON file to describe all our rarities. In this file we assign likelihoods, we can also set up relationships between rarities so that they can be nested, and add directives to have rarities exclude or require one another. We have a class that's responsible for modifying/reporting rarity pressure, and another that's in charge of parsing the JSON file and selecting rarities for the next race. Because we want rarity pressure to persist between play sessions, we're currently storing it in playerprefs.

Tuesday, March 25, 2014

Chalo Chalo nominated for A MAZE award

We're excited to share that Chalo Chalo is one of the five games nominated for the 2014 A MAZE local multiplayer ('Human Human Machine') award. This also means the game will be playable as part of the festival.

Richard and I will muster in Berlin for jovial festivity participation and stony-faced note-taking. We need to figure out whether the temporarily game-breaking round of changes we want to make to the game are feasible before then. Anyway, it looks like it will be a lot of fun. Perhaps see you there!

Monday, February 17, 2014

Post-its versus Voronoi cells

In the builds of Chalo Chalo that exist so far, the race maps look something like this.

The landscape is punctuated by differently coloured squares that function as contrasting terrain types. Populating the map with squares (well, flattened cubes really) has been a great way to get something interesting up and running quickly; They're easy to create at run time, and this approach allows us to use Richard's cunning routines to nudge their randomly chosen position to make for more interesting races.

What bothers me about the squares isn't their simple geometry, I like that, it's the way they overlap. The terrain patches resemble post-it notes stuck over one another. This suggestion of layers isn't a good fit with the idea of a unified racing plane we've had in mind.

Not knowing whether it will all work out yet or not, here's the plan for how I want to change things. We'll generate and position squares as before. But then we'll do a couple of extra things. We'll generate a Voronoi diagram over the top of the squares. For each cell in the diagram we'll do a raycast downwards from its center and see what squares we hit. The cell will take on the terrain type found most often in the squares directly beneath it. So in a sense the Voronoi diagram will quantize the terrain data from the underlying squares, but it will be mapping it to irregular polygons.

I'm keen on this approach because it will let us keep using stark geometry, while introducing a more organic element, and the tesselation will visually flatten the playing field--consistent with the idea of a single racing plane.

This is a mock-up showing the cell structure

You can find me on twitter here. And Richard here.