Blocksworld is an iOS sandbox game. It is about building worlds and sharing worlds.
It has a combination of features that set it apart from other iOS sandbox games:
3D | You build in three dimensions. |
---|---|
Blocks | Build using 3D shapes such as cubes, triangular prisms, cylinders and more complex models. Blocks can also be resized (most of them in three dimensions). |
Physics | The whole world is a physics simulation. Some blocks such as motors have moving parts. |
Scripting | Each block in the world has its own scripting panel. Each panel can have any number of rows of script. Each row has the form: if (conditions met): execute sequence of actions. The actions in each line and scripting panel execute asynchronously. Interactions between scripts are event-driven. The game has a variety of actions to place into scripts. |
These features (particularly the scripting) allow for many creative possibilities.
I joined Blocksworld in mid 2016. In the past I had played and enjoyed other sandbox games involving building and sharing worlds, but Blocksworld allowed for more advanced constructions. I played exclusively on an iPhone and the syncing feature made it great for commutes on the train.
What I liked about Blocksworld was the gameplay. I found it far more creative than most other iOS games. You build whatever you can think of, and there’s a diverse library of worlds to play and get inspiration from.
Another thing I liked about Blocksworld was its monetary model. Many F2P (free to play) games have gameplay that becomes increasingly more repetitive over time, and progress can be restricted by timers or the need for special currencies (that you buy with in-app purchases). But Blocksworld’s F2P model was less restrictive. The main limitation is the set of blocks that you can use in each world. You start with a few building blocks, and gradually expand your collection by buying blocks with in-game currency, or logging on daily. You can never lose blocks, only gain more. The main way to earn in-game currency is to build and publish worlds. Creativity and quality are rewarded.
I started small and gradually acquired more blocks and experience, so my worlds increased in complexity. I eventually got to the stage where I had a virtually endless supply of blocks to build whatever I wanted.
I liked to build interactive and functional worlds, which tended to be heavy with scripting. Most of my worlds were playable in some way and had a win condition, although I did have a few mainly decorative worlds. I liked innovation and was interested in building things no one had done before (such as randomly-generated Sudoku and Minesweeper) or making improved versions of existing concepts (e.g. Roller Coaster 2 and Clash of Clans).
I also preferred to design things that were scalable and extensible. For example, my Soda Can Launcher XL was designed to support any number of vertical magazines without needing to introduce any new scripts. And my Ally Switcher (used in Clash of Clans) was designed to support any number of allies without introducing new global signals. [+]
I published a lot of worlds. [+] Here is a selection. (They might be playable in certain browsers thanks to WebGL.)
Endless spleef game with AI opponents. The opponents use a greedy strategy that works fairly well. The arena regenerates after each round.
MoreTop-down stealth game. The patrolling enemies outmatch you easily in frontal attacks so you must attack from behind.
MoreAn example of how creativity is often about combining existing ideas. This world combined my long-running "Big Troll" character with my more recent "Soda Can Launcher".
MoreA tribute to Can your pet? and a parody of the other pet worlds that were popular at the time.
MoreFairly mechanical build. Highlights include the winding tracks, corkscrews and multiple camera angles. Probably doesn’t work well anymore due to the later wheel update.
MoreDodge bullets in slow-motion, Matrix style. Win by getting enough near-misses. Quite fiddly due to needing to drag the limbs.
MoreBlocksworld’s scripting system was great, but there were things it couldn’t do. For example, it had very limited string processing and number-crunching capabilities. Control flow was also limited. (A script is a sequence of if statements.)
The editor itself had limitations. The block positioning system worked very well on a touch screen, but the scripting window was clunky sometimes. Tasks such as inserting and reordering lines of code was much more cumbersome to do using drag and drop compared to in a text-based desktop IDE. Code quality was also an issue. Every number was hard-coded and there was heaps of duplicate code in many of my more complex builds (e.g. Minesweeper and Sudoku). There was no way to define functions or prefabs. [+]
However, Blocksworld’s building constraints are not a bad thing. Constraints can be useful—they simplify things by removing extra choices. For example, blocks snap to integer positions when being placed and resized, and they can’t overlap each other in the editor. Most things can only be rotated in 90 degree increments. Making blocks join together is a simple matter of placing them in adjacent squares so that one face is touching. If Blocksworld had instead allowed blocks to be placed at any decimal coordinate and at any rotation, it would have made positioning and joining things far more complicated. Additionally, there is a limited colour palette. Colouring your worlds is easy when there are only only around six shades of brown to choose from. If builders could choose any RGB, there would be a lot of tricky decisions and a lot more horribly-coloured worlds. Having these details abstracted away means you don’t have to worry about them, so you can focus more on building cool stuff.
Same goes with the scripting. Adding things like more number-crunching and IDE options would add greater control but also make it more complicated, which wouldn’t necessarily make Blocksworld any better.
Restrictions are also good for a simpler learning curve. Start with a limited set of features (e.g. limited set of blocks and actions), then gradually add more as the user gets more experienced. [+]
Overcoming constraints was also a fun challenge. For example, it was not possible to change a model’s displacement instantly. To make respawning systems, I used actions to make the model invisible and non-solid and then fly towards the target position before becoming visible again. Another time, to get around Blocksworld’s limitation of not being able to perform arithmetic on two non-constant numbers, I built an addition calculator out of digital circuits. It's also common for builders to make blocks overlap during runtime by using motors (or moving platforms like in this article's cover image).
I don’t play Blocksworld much now. This is partly due to hitting the limits and wanting more control, and also due to there being more important things in life. Additionally, my Blocksworld portfolio became more impressive than any of my other code portfolios, so I decided that I should spend more time on other things. However, I still consider Blocksworld to be one of the best games on the App Store due to the sheer freedom and creativity. A natural progression from this could be developing video games in an environment like Unity.
Last updated 9 June 2019