Beatopia has been through a number of iterations in the 3 or 4 months since I started toying with the idea. So in lieu of a proper devblog post, I’m basically just going to describe the current features/play-patterns of the game and then run through some of the issues I’m currently wrestling with.

When I first started this, I said I really wanted to avoid using too much RNG (random number generation) in the game. A few devs on Twitter said things like “oh you can’t do that, it’s really hard to keep the game interesting that way” but I’m really thinking back to classic arcade puzzle games like Tetris, Puzzle Fighter and Bust-a-Move, where the player is usually given the same pieces to work with in the same order for every level, thus reducing the frustration (but also the interesting variation) that can come out of RNG. I still think this is a workable goal and I find myself gravitating back toward it even more now that the game is working but too difficult to explain. My current task is to root out all of the ‘invisible’ variables working behind the scenes in the game and make them more explicit to the players (taking a hint from this great GDC talk on transparency in game design). Transparency is really important in board games where the players have to remember the rules, but also in sims like Civilization which just contain an overwhelming amount of in-game information. But I’m making a game you play in 3 minutes on the train, not Civilization, so I also need to take into account the fact that players aren’t going to RTFM in order to play.

One of the biggest challenges has been making the relationships between the player’s buildings and their neighbouring districts both strategically important and relatively obvious. I’m still not quite there yet but here are the ‘rules’ I currently have in play. A lot of this will sound complicated but my goal at the moment is really to pare a lot of this down so that it is complex enough to be interesting to play, without being needlessly complicated and oblique. As the game has become gradually more like a game and less like an experimental toy, I find myself returning to the “no RNG” rule, and in doing so I need to make a more explicit 1:1 relationship between the numbers driving everything and the info pop-ups.

Rules at Present

– the lose condition is 0 population (the population is essentially an “HP” bar)

– players drag boxes from the conveyor at the bottom of the screen and onto the isomentric grid to build. this removes some of the financial management aspect of a true sim, and allows me to construct challenges by giving the player a specific string of buildings. it means the game works a little more like a classic arcade/puzzle with $ only increasing. (so money is a score rather than a resource, because capitalism. also because making a 3-minute session casual game)

– districts’ effects are triggered as the ‘pulse’ (highlighted tile) passes over them. When triggered, a district will play a particular drum sound, and have some sort of effect on the main resource stats (Energy, Population, Money) as well as its neighbouring districts. This is the core of the game.


– players score by generating coins. orange buildings are ‘financial districts’ and yellow buildings are advanced financial districts. Orange buildings generate 1 coin per turn, + 1 coin for neighbouring oranges and +2 for neighbouring yellows. yellow buildings operate the same way but generate twice as many coins once neighbours are counted. (Previous iterations had coins representing more than $1, with the BPM determining how much each coin was worth. With the newer system, the BPM stays the same, and each coin is only worth $1 (maybe $1k in future?). This way the player doesn’t have to read thousands of numerical popups and can just roughly judge their progress by how many juicy little coins are springing up. I am generally aiming for this kind of 1:1 relationship between game variables and icon pop-ups in every area of the game (see ‘population loss’ bulletpoint)

– teal buildings produce energy (and play a ‘clap’ sound) other buildings reduce energy. zero energy means buildings will not trigger their effects.

– population loss is indicated in a similar way to money accumulation, using rising red skulls. green buildings counteract this, playing a ‘tomtom’ drum noise. They are represented by a house icon, and each one restores the population by 1. reasons for population loss are: pollution, riot, basslazer.

– each ‘coin’ or ‘home’ pop-up means a certain amount of pollution is added to the origin district, so although the goal is to connect up numerous orange and yellow buildings to generate the most $, this also means a far greater pollution output, so (orange/yellow) financial districts have to be interspersed with the (dark pink) treatment plants (represented by an O2 icon)

– an invisible ‘crime’ variable, beginning as a negative, gradually increases until a district riots. when a district is rioting, it stops performing its usual game function and plays a glitch sound when triggered. rioting districts also lose population each time the pulse passes over them. holding the mouse (/finger) over a rioting district plays a wubwub bass noise, using energy and lowering the population quickly. It feels kinda cool to do, too (see this LINK). A game about making electronic beats just really needs a bass cannon, and the nastiness of the audio kinda goes with the insinuation that you are going Judge Dredd on your own peoples.

– the way crime increases needs to be more explicit. crime is currently the most awkward mechanic in this sense. there’s also a limit to how many popups I can use with any degree of meaningfulness (once you have red skulls for population loss, what do you do for “+1 crime here”?.

– I’m currently thinking of modelling crime/riots using a dramatically simplified model of relative deprivation. Each time the pulse hits a district, that district will count how many direct neighbors it has (This is 4 for a central district, 2 for a corner and 3 for an edge). Crime will increase by one point for every neighbour which is not a financial district, and an additional point for every rioting neighbor. The underlying concept is that wealth in one area means a less prosperous neighbour will feel negative effects. I’m trying to strike a balance between making something which is transparent and instantly understandable to players, and something which rings as sociological ‘true’ (at least in terms you might explain sociological ‘fact’ to a 14 year-old in).

– everything in the above bullet is irrelevant until I can think of a cool icon popup that means “crime has gone up here”.

– pollution is currently visible via a floating cloud over each district which becomes more opaque as the district becomes polluted. However, the point at which this will result in deaths is still not clear enough.