Tuesday, May 2, 2017

Update 5. New and updated biomes. Changelog

201704190212
Steam Build ID: 1767513
WiFi Controller iOS version: 1.25 (updated to newer Unity networking library)
WiFi Controller Android version: 1.25 (updated to newer Unity networking library)

Bugfixes

  • The repeating 'pinging' sound as someone's about to win the match is back again.
  • Fixed the goal being located slightly above the vertical center.

    Changes

    • Replaced old ice biome with new one. More routes, more danger.
    • Reworked one of the regular biomes to be more exciting.
    • New rare biome: Edge Control.
    • New rare biome: Powers Only.
    • New alternative biome: Lava Lakes (more risky verion of the regular biomes)
    • Changed the grass again. No more grainy noise. 
    • Tweaks to all surface colours.


      Notes
      For this update we mostly focused on the biomes (the level types). Improving some and adding some new ones.

      Updated biome: Ice
      The Ice Biome has been in there for a long while. Basically a biome that has a lot of ice. However it often led to not too exciting races as a leading player would encounter few or no dangers. 

      The updated biome has a clear structure to its layout. There is typically a lava barrier just in front of the goal preventing players from reaching it directly. 

      There is now an area in the center that has a high chance of grass which attract players to the center before they move around the lava barrier. 

      Also directly after the start region there is a patchwork of lava that aims to create multiple interesting routes directly from the start. 

      There is a chance of finding some powers in the central area away from the grass and behind the goal. Both making detours possibly worthwhile as powers on ice can be very disruptive.

      Examples of the updated biome:





      New rare biome: Edge Control
      Grass next to lava is tempting but also dangerous.

      Example:


      New rare biome: Powers Only
      A new rare level that is all about smart power usage. 

      Example:


      --------------------------------------------------------------------------------------------------------------------------
      Revert to previous version

      When you have issues running the latest version you can always revert to the previous version by selecting the 'previousupdate' branch in Steam. 
      To do so right click Chalo Chalo in your library.
      Select Properties
      Select BETAS
      In the dropdown menu select previousupdate (no password needed)

      Steam should then revert to the previous version. If it fails, restarting Steam tends to fix a lot.

      Tuesday, February 28, 2017

      Update 4. Visual terrain improvements - Changelog

      201702270311
      Steam Build ID: 1658849
      WiFi Controller iOS version: 1.20 (no change)
      WiFi Controller Android version: 1.21 (no change)

      Bugfixes

      • Tar Bombs now detonate correctly even if player dies after triggering the countdown.

      Changes

      • Lava material looks more like actual lava and has motion to make it easier to distinguish from other materials.
      • Grass material now has grainy texture.
      • Ice material looks more like ice.
      • Ash material is now slightly lighter.
      • Player colors are brighter and easier to distinquish.
      • Player dots have a dark outline to improve visibility.
      • Player directional indicator (visible when on ice) for now disabled.
      • Power up icon circles pulsate.

      Notes
      This update is almost entirely visual and focuses on the different terrains in the maps. We label the terrains as follows:

      • ash - the default grey terrain 
      • grass - green and fast
      • ice - white and slippery
      • tar - black and slow
      • lava - red and deadly

      Triggered by a player commenting how it was almost impossible for a color blind friend of his to distinguish between grass (green) and lava (red). We took a look at the terrain and tried to make it easier to 'read' in general. 


      Below a screenshot of the previous version and a copy of that screenshot ran through an online color blind simulator.



      One thing that helps is having different textures for the terrains so even without the colors you would be able to distinguish between grass and lava.

      Below the same test but with the new visuals:





      As players will never actually be racing over the lava we can apply a more distinct look to the lava than to the other terrains. Lava now has a texture and animation making it look a lot more like lava and making it easy to spot. 

      Though we quite like the very abstract look of the previous versions a bit more detail in the terrains seems to work well. We'll probably keep tweaking this to make the style of the different terrains match.

      With this visual update the game's look changes once again and it is no doubt not the last time.
      Below some screenshots of the different versions so far.









      - - NEW - - NEW - - NEW - - 
      Revert to previous version

      When you have issues running the latest version you can always revert to the previous version by selecting the 'previousupdate' branch in Steam. 
      To do so right click Chalo Chalo in your library.
      Select Properties
      Select BETAS
      In the dropdown menu select previousupdate (no password needed)

      Steam should then revert to the previous version. If it fails, restarting Steam tends to fix a lot.

      Thursday, January 12, 2017

      Update 3. Changelog

      201701120403
      Steam Build ID: 1565267
      WiFi Controller iOS version: 1.20 (no change)
      WiFi Controller Android version: 1.21 (no change)

      Notes

      This update mostly fixes a nasty bug caused by the Teleport power. Note that when you run the game it should show First Run in red text the first time you play the updated version.

      Bugfixes
      • Fixed the 'frozen input bug' where sometimes players would move in a straight line from the start of the race and wouldn't react to controller input.
      • In exhibition mode individual player inactivity dropout routine causes freeze crashes, don't know why yet. So that's disabled for now. General inactivity timeout is still working as expected - resets to start screen when no controller input detected for a while.

      Friday, December 16, 2016

      Update 2. Changelog

      201612080506
      Steam Build ID: 1506567
      WiFi Controller iOS version: 1.20
      WiFi Controller Android version: 1.21

      Notes

      Most importantly we changed some network settings for the WiFi controllers and think this should make them less likely to disconnect.

      Still fiddling around with the Teleport power. Now back to two presses. Similar to the Tar Bomb. We liked the idea of making the Teleport feel very smooth when used. Two presses seems not in line with that, but in tests no one figured out to hold the button to extend the length of your teleport. Now you at least see that nothing has happened before you press a second time.

      

Most fun change is that you can now use Rift or Gust or a 'simple' nudge to change the Tar Bomb's position after it has landed and before it detonates.

      Bugfixes
      • 
Switched to a more forgiving QoS setting for WiFi controllers. Should mean fewer disconnects. Fixed bug where new players could drop in behind lava flush, and hold up game progress.
      • Fixed bug where a gap would appear in player's trail when nudging.
      • Smoother transition away from 'match winner' screen.
      • Now really works on 32 bit Windows versions.
      • Fixed bug where using pause on the join screen could mess up the global timescale.
      

Changes
      • Teleport is back to two distinct presses to use
      • Once the teleport sequence is started, the direction of the teleport cannot be changed.
      • While timing down to detonate, tar bomb projectiles can be moved by using the Rift power or the Gust power or nudging.
      • Players drop out of match if inactive for more than 15 seconds during a race.
      • In exhibition mode, if there's no controller activity for 20 seconds the game resets to the join screen. Winner screen displays for less long.

      Wednesday, November 23, 2016

      Update 1. Changelog

      Chalo Chalo is available on Steam. We've just pushed the first update since the early access launch. Here are the changes:

      Build date: 201611150600
      Steam Build ID: 1460145
      WiFi Controller iOS version: 1.19
      WiFi Controller Android version: 1.18

      Bugfixes

      * Fixed bug where goal was sometimes inaccessible because of lava.

      * Fixed bug where the display of power cells on a race map was sometimes glitchy.

      * Fixed bug which would sometimes create a spike artefact attached to a player's trail.

      * Fixed bug where sometimes a player would end up controlling two identical dots.

      * Player Guide URL fixed when accessed from pause menu.

      * Fixed bug where in rare cases the lava flush at the end of the race would behave strangely.

      Changes

      * Now also works on 32 bit versions of Windows.


      * WiFi controller movement widget is roving now, to prevent player thumbs from accidentally slipping off (requires that players update their WiFi controller apps).

      * Added XInput mode toggle button to the pause menu. For users of Steam controllers and Steam Link. (NB. activating XInput mode restricts maximum number of simultaneously connected hardware controllers to 4).

      * Teleport works differently. Press and hold to 'expand' the teleport distance. Use stick to choose teleport direction (up or down the screen). Release button to teleport. NB. The steering of your dot is frozen while holding fire!

      * All achievements are implemented.

      * Player scores can no longer go below zero.

      * Players can no longer win the match by getting to the goal in 2nd place. (If a player needs two points to win, but only scores one point, that point is not added to their score).

      * P or spacebar can be used to toggle pause. Arrow keys and return can be used to interact with pause menu.

      * Players can make their dots Boop on the score screen.

      * Proportions on score screen are better for matches with not many players.

      * Cosmetic changes and optimisation for 'about to win' player trail decoration.

      Tuesday, October 4, 2016

      Help us launch Chalo Chalo on October 24th!

      Hey everyone. We're happy to announce that on October 24th Chalo Chalo will be made available on Steam Early Access!

      Here's our trailer:


      The web page for the game can be found at ChaloChaloGame.com.

      Would you like to help us promote the game when we launch? I've set up a Nouncy campaign here that you might like to support: http://tomaszkaye.nouncy.com/chalochalolaunch 

      Here's how it works: Via the Nouncy campaign page you write a social media post (or one per each platform that you want to use) about Chalo Chalo and grant us permission to control when that tweet/post is published. That enables us to choose a schedule for publishing those tweets that maximises (we hope!) the exposure of people to our game.

      If you're in the neighbourhood of Neukölln, Berlin and fancy hanging out with us on the evening of the October 24th shoot us an email: chalochalogame at gmail dot com.

      Friday, September 30, 2016

      The First Chalo Chalo Tournament, at Zamspielen in Vienna

      We had a terrific time at the first Chalo Chalo tournament in Vienna, hosted by Zamspielen. A special thanks to Josef for all his energetic help, and another congratulations to Laurenz Riklin who was the most skilful racer there that day. 



      A gram of gold was the prize
      Laurenz Riklin was victorious!

      Tuesday, September 6, 2016

      On the similarities between Chalo Chalo and AirConsole's Polyracer game

      Some people have commented about the similarities between Chalo Chalo and a game called Polyracer. Both are top-down multiplayer abstract racing games that use a voronoi grid whose cells influence player movement in different ways. For the sake of transparency here's what we know:

      In August 2015 Richard was showing Chalo Chalo at Gamescom in Cologne. While there, he met Rafael Morgan from AirConsole. Rapheal asked if we'd be interested in partnering with AirConsole and porting Chalo Chalo to their platform. Richard said that we'd look again at our options when we came to developing the phone controller for Chalo Chalo. We weren't yet at that stage.

      Later we decided to develop the Chalo Chalo phone controller independently ourselves and not to bring our game to AirConsole. Our phone controller is now ready on Apple's store, and on Google Play

      In January 2016 we showed Chalo Chalo at the Ludicious festival in Zurich. People from AirConsole were also there. They were demoing their system. One of the new games they were showing was Polyracer - which shares characteristics with Chalo Chalo. Rafael Morgan approached us to ask if there were any hard feelings about their publication of a Chalo Chalo inspired game.



      Chalo Chalo


      Polyracer

      Wednesday, November 11, 2015

      Help us make a trailer!

      We're looking for people to make videos of friends playing Chalo Chalo in return for pre-release Steam keys. Would you like to help? We have a form for you here: [link removed]

      UPDATE:

      We have enough material and the trailer is picture locked, so we're not looking for help with the trailer anymore. But if you'd like us to notify you about Chalo Chalo developments please feel free to use the link in the right-hand bar to send us your email address or follow us on twitter: https://twitter.com/chalochalogame

      Wednesday, October 7, 2015

      Photos of Chalo Chalo at INDIGO 2015 in Tivoli Vredenburg, Utrecht, The Netherlands

      INDIGO is an anual showcase of upcoming Dutch indie games. Chalo Chalo was one of the 32 games on show. The event was well visited and to our enjoyment 7 and 8 player matches were common.








      Sunday, September 6, 2015

      Procedural Terrain Painting Using Noise Map Stencils in Chalo Chalo

      We've changed to a different system for generating terrain. The new approach is to use noise maps (combined and modified in interesting ways) as 'stencils' for painting the different surface types onto an existing screen full of Voronoi cells. It's a far more powerful approach, allowing us to create all kinds of maps that weren't possible before. Like the one shown in the picture below.



      In our previous map generation code each cell decided for itself what surface to take on, a decision it made independently from its neighbours. This meant that if clusters/patches of cells of a given surface type appeared, they did so entirely by chance - we had to power to create distinct patches deliberately. The result was fragmented looking race maps containing no high level order/patterning. Like the following one:



      The new system uses a port of the LibNoise library for Unity. LibNoise is a library for creating coherent noise. In the gif below you can see a visualisation of how grass (the green surface) is 'painted' onto our map cells. The noise patterns are shown as red and blue images. Blue areas represent values below 0 (the darker the color the lower the value) and red areas are values of 0 or above (the closer to white the higher the value).

      First Perlin noise is created, i'll call that p1. To p1 is added a noise pattern with a horizontal stripe of low values, and higher values at the top and bottom. I'll call the result p2. p2 has no red shapes in its vertical center anymore, and bigger red shapes at the top and bottom. To p2 is added a patten with low values on the left hand side of the screen. This gives p3, which now has no red shapes in the leftmost area of the image.

      For each cell of the race map we retrieve the value of p3 at the cell's center point. If the value is 0 or higher, we 'paint' that cell with the grass surface. Optionally we can increase the 'sensitivity' of the sampling process, by sampling more points nearby and compare the maximum value returned from all those samples against 0 instead. This helps if we want more of the red areas in p3 to translate to grass cells in our race map. 



      We combine noise in different ways to create stencils for different surface types. Often we want more tar in the middle of the map for instance. Here's a map from the 'Regular' biome that's been created with this approach.



      The image to the left is another representation of the map building process. Thumbnails A to D show the process of creating a grid of points, randomly nudging them around, and then deleting points using a noise map, C,  to control the likelihood of any given point being removed.

      Bright areas of the C image correspond to areas where fewer points will be removed, which will translate to areas of the final Voronoi diagram (G) that are more densely populated with smaller cells.

      Previously we had to be careful about allowing too much lava to show up in a race map. We had no test in place to ensure that the race map could be completed. If the goal was surrounded by lava the players couldn't exit the race. Now we're using the A* Pathfinding Project to fix this problem.

      After all cells have been painted, the map creation routine checks to see if there are enough lava cells to potentially block the exit. If there are, we use pathfinding. First a grid of pathfinding nodes is created, each node connected to its eight neighbours. For each node, the terrain type for that location is retrieved. The node is given a 'cost to pass' value corresponding to the surface type. If the node is on lava we assign a very high 'cost to pass' value and add to that a (potentially) large random number. We then ask the pathfinder to find the cheapest/shortest path from to the start zone to the goal. Once the path is returned, we step through it doing a spherecast from each node to the next one. We 'zap' any lava cells that the spherecast touches, reverting them to the most recent non-deadly surface they were previously set to (each cell has a memory of its previous surfaces for this purpose).

      Because of the high 'cost to pass' assigned to lava node, the pathfinder will avoid lava if at all possible. If it does have to go through lava, the route it takes is made unpredictable thanks to the random component of the lava nodes' 'cost to pass' value. Here's a visualisation of the pathfinding. Green circles are points at which lava cells were neutralised. 



      One of the nice things about this system is that by re-using the same noise maps (with different thresholds) to paint different surfaces you can very easily have a patch of one surface show up inside an area of a different surface. In the following example the grass painting routine uses the same noise module as the ice painting routine, but demands a higher noise value before it will lay down any grass. This gives narrow seams of grass within, and following the direction of, the larger flows of ice.



      Here's one of Richard's biomes. He's combined noise modules to cut away more of the lava on the left hand side of the map, creating some dead ends that players need to watch out for. The closer to the goal we get the more grass and ice are introduced, making things more risky. The lava cutter routine guarantees that the goal is always accessible.



      Our original Post It notes style terrain allowed large areas of one surface type to contain smaller ones of another, but the overlapping squares created an uncomfortable (to me) suggestion of foreground/background on a surface that should read as being flat.

      Our next iteration, the cell-centric Voronoi maps, solved the figure/ground problem by visually flattening the race maps, but the algorithmic isolation of each 'dumb' cell also meant we no longer had patches within other patches and other interesting patterns.

      Our new noise-based map generation approach combines the best parts of both our previous systems, and allows us to design spatial relationships between compound surface shapes, giving us many new possibilities for world-building.

      Friday, July 24, 2015

      Photos of Chalo Chalo at Radius Festival 2015 in Vienna.

      We showed Chalo Chalo at Radius Festival in Vienna. The event took place in the Ovalhalle in the lovely MuseumsQuartier. Though not very crowded, enough people showed up for quite some very fun matches with some very enthusiastic and competitive crowds.

      An earlier post talks about our reflections on the event. Now an impression in pictures.





        




      Monday, July 20, 2015

      Ludo-fundamentalism for the people

      Chalo Chalo is a local multiplayer racing game in which planning ahead is more important than fast reflexes and skillful vehicle handling. You pilot a slow-moving dot towards a goal at the other side of an abstract landscape. Success hangs on your ability to figure out a faster route than your opponents.

      We are Richard Boeser and Tomasz Kaye. Neither of us are prescriptive in terms of what video games should be, but when we’re making design decisions for Chalo Chalo we have our ludo-fundamentalist hats on. For us the game is primarily a contest between players that tests their skill at spatial analysis. We’re not striving for purity, but the space carved out for everything that’s not part of that core dynamic - such as the decorative elements, the suggestions of narrative and world lore - is shaped by the question ‘will this thing obscure the core mechanics of the game more than it clarifies them?’, if so then the idea gets dropped.

      Transparency is very important to us. Chalo Chalo has a stark, minimal look. The game’s visual language is abstract geometry. Players and audience can see the whole race map from a bird’s-eye view. Any aspect of the game that could influence one’s odds of winning a race is made visible so it can be incorporated into players’ plans. Coloured trails make it easy to review the players’ routes, helping to understand exactly how the various terrain types affect speed and steering.

      The control scheme is very simple: Any analogue stick to move. Any button to perform a context-dependent action. Likewise it’s quick to explain to a new player how to get started: Try to get to the goal first. You travel quickly on grass, slowly on tar, and ice is slippery. Don’t touch the lava!

      We often see people who very rarely play video games ready to join in after watching only a couple of races. It’s very gratifying to see frowns of concentration followed by yelling - frustrated and then joyful - from people who apologised as we passed them the controller “I’m not very good at video games”.

      We believe our approach avoids many potential barriers that could get in the way of new players enjoying Chalo Chalo. We’re keen to emphasize that we see this facilitation as a very different thing to design decisions that ‘de-game’ the project. For instance, we could serve up a series of flashy, superficially entertaining, events to enliven a race. But in our opinion the exciting moments of Chalo Chalo carry more emotional weight because they’re authentically the product of players’ struggle.

      We’re designing Chalo Chalo as though it could be a sport. Aside from map generation, we don’t use randomness in ways that could affect the outcome of the race, minimising the importance of luck. We want the winner of a race to feel that they won in a fair competition, and losers have only themselves to blame for their defeat.

      Encouraged by play sessions that attracted a broad cross-section of players, we’re respectful of the fact that non-gamer should not be synonymous with non-competitive or ‘casual’. We believe Chalo Chalo welcomes non-gamers while providing an experience deep enough for experienced players to also find a challenge in.

      An appetite for competition and an appreciation for simple rule sets that allow a wide range of memorable play experiences are more widespread than contemporary game design might account for. It’s exciting to explore this territory as we make Chalo Chalo.

      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.