BOULDERCRAFT
Bouldercraft is a survival-oriented world simulation game based on
a 2D cellular automaton. It is basically a clone of Boulder Dash with some
characteristics of Minecraft (hence the name). The game was completely
created by Viznut in October 2022 and the first version (0.2) was released
at the Zoo demoparty.
The game is still at an early stage of development, so the game logic is
still subject to change. This document describes the game as of version
0.4.
At the moment, Bouldercraft is only available for the Commodore 64, but
versions for other platforms are likely in the future. The main game logic
is written in C, so modifying the logic and porting the game into non-6502
platforms will hopefully be easy. The source code will be released on
Github once a minimum level of maturity is reached. The licence will be
chosen at that time.
Downloadables
bouldercraft.prg (version 0.4 for
the Commodore 64 and emulators such as VICE; size 8123 bytes -- yes, this html
page is larger)
Objective
Long-term survival is the essence of Bouldercraft. The longer you stay
alive, the more you score.
Staying alive consumes energy, and you need to eat to gain it. The energy
capacity peaks at 999, so you will need to consider when and how to eat. If
there's plenty of food available, you may want to conserve the food in order
to prevent it from rotting away.
The world is not reset between lives, so you can reincarnate into it and
use whatever you managed to create earlier. Spending several lifetimes
building a bunker and securing a reliable and manageable food source
is a strategy that may get you into high scores.
Moves and actions
Bouldercraft is designed to be played with a controller that has four
directions and a single button ("fire"). What the player character does
depends on what lies in the moving direction and whether the button is
pressed.
When moving towards a direction without pressing the button:
- Walking: Penetrable medium (air, water etc.) is displaced when the player
moves into it. The medium reappears behind the player.
- Digging: Sand or soil turns into air or water depending on
its wetness. Digging consumes a unit of energy.
- Pushing: An arbitrarily long queue of items with at least one
penetrable cell behind it can be pushed to any of the four directions. The
first item in the queue must be a pushable item (like a rock or a bomb) but
the others may also be diggables (like soil). Pushing something horizontally
also moves the item supported by the first item in the queue (this is useful
for moving rocks etc. that would otherwise fall). Pushing consumes a unit of
energy.
- Crafting: Two items are "pushed together" in order to form a new item.
The possible combinations currently include:
- brick/glass + brick → bomb
- brick/glass + food/bone/egg → canned food
- Eating: Non-pushable (i.e. non-canned) edibles can be consumed
without the fire button.
When moving towards a direction while pressing the fire button, the
player character stays in its place while doing something to the cell in the
direction:
- Static Pushing: Like in Boulder Dash: the queue of items is
pushed, but the player won't move towards the pushing direction. Digging and
eating are always static in Bouldercraft.
- Swinging: When moving towards an empty cell while pressing fire,
an item is moved into it from the opposite side of the player. This is
useful for moving items out of difficult positions. Consumes a unit of
energy.
- Eating: An edible item is consumed and energy is gained depending
on its type.
A dead player may only select the horizontal position for the next
incarnation (by moving left and right) and incarnate (by pressing the
button).
The world
The world consists of a grid of 64 × 14 cells, each containing a single
element.
Some element types have subtypes depending on the state (a rock can be
either falling or stationary, and there are four subtypes for the eater
depending on the direction it's currently moving to). These state
differences can mostly be ignored by the player, so they won't be covered
there.
There are slow and fast natural processes in the game. Fast processes
(such as the falling of rocks) apply to the entire world several times per
second, while slow processes (such as the growth of plants) only apply to a
single column of cells at a time. This column is marked by the Sun. Some
processes only take place in the topmost non-air column under the Sun (the
vaporization of water, the rotting of mushrooms, etc.)
Slow processes are caused by the Sun that continuously passes over the
world. When the Sun has reached its rightmost position and reappears on the
left, certain balancing operations take place in the form of items that will
be randomly created on the top of the world:
- If there is too little surface water, new water is created (in the form
of raindrops).
- If there are too few plants, seeds are created.
- If there are too few rocks, rocks are created (so, avoid staying
uncovered under the sky, or at least be ready to get under a cover!)
- If there are too few eaters, an egg will be created.
- If the world is too cramped, a destructive spark will be created.
Elements
Air Family:
- Air : The inert and penetrable background substance of the
world.
Water Family:
- Water : Turns into a Waterdrop if there's Air below it or on the
left or right side (except when carried by a Brick). Water vaporizes under
the uncovered Sun.
- Dense Water : Technically contains two units of Water. Splits into
two normal Waters if there's Air on the below/left/right side. Moves
horizontally in order to find a place where to split.
- Waterdrop : Falls down if there's Air below, else turns into static Water.
When falls on a Soil, grows a Mushroom. Turns a Rock into Sand at 25%
probability. Turns a Sand into a Wet Sand. Turns a Stalk into a Watered
Stalk. Disappears on top of other plants.
- Vapor : Proceeds semi-randomly upwards and leftwards, or
rightwards if the left side is blocked. If can't proceed, turns into a
Waterdrop.
Fire Family:
- Sun : Moves from the left to the right and facilitates the slow
processes of the world. Destroys anything on its way and ignites flammable
items on the other sides.
- Spark : Sometimes falls from the sky. Ignites its flammable
neighbors while falling. Explodes into fire when it can no longer fall.
- Fire : Proceeds upwards and horizontally and ignites flammable
items in its neighborhood. If can't proceed, turns into Air or Vapor
depending on whether there's water in the neighborhood.
- Explosion : Turns into a Vapor, a Bone or a Fire depending on the
items taking place in the explosion, and also explodes explosive items in
the neighborhood. Only Eaters and Humans explode into Bones.
Earth Family:
- Sand : Rock crushed by Water. Lichen may grow on it. Turns into a
Wet Sand after absorbing a Waterdrop.
- Soil : Grass and Mushrooms may grow on it. Turns Wet Sand into
Soil on the left and right when passed by the uncovered Sun. Dead plants and
animals may to turn into Soil. Seeds turn Wet Sand into Soil.
- Wet Sand : Tries to pass its water downwards. An Air below turns
into a Waterdrop and a Sand below turns into a Wet Sand. After succesful
passing, Wet Sand turns into non-wet Sand.
Rock Family:
- Rock : Falls down if there's penetrable medium below. If falls on
a Rock that is surrounded by Rocks on both horizontal sides, turns that Rock
into a Brick. Explodes an explosive item and when falls on it. A plant
explodes into Vapor when a Rock falls on it.
- Brick : A non-falling stone element that is useful for crafting
and moving of items. Turns into a Glass when exposed to fire/ignition.
- Glass : A transparent Brick. Sunlight penetrates it, so it does
not block processes such as plant growth from taking place below it. Unlike
the normal Brick, Glass doesn't hold Water.
- Steel Wall : The world is surrounded by this non-destructive and
inert wall. Cannot be created by any natural processes or the player.
Plant Family:
- Seed : Falls down and reacts with the cell below when the fall
ends. Turns into a Lichen on top of a Rock or a Sand, and into a Grass on
top of a Soil. Turns a Wet Sand into a Soil. In other cases, turns into an
Air. All plants turn into Seeds if not supported by a non-penetrable
element.
- Mushroom : Appears when a Waterdrop falls on a Soil. Turns into an
Air when the uncovered Sun passes over it. Provides 50 units of energy when
eaten (50 if canned).
- Lichen : Grows on a Rock or a Sand. Provides 20 units of energy
when eaten (50 if canned).
- Grass : Grows on a Soil. Turns into a Stalk if
passed by the uncovered Sun and surrounded on the left and right sides by
Grass. Otherwise creates a Seed on the left and right sides. Provides 30
units of energy when eaten (50 if canned).
- Stalk : When passed by the uncovered Sun, grows upwards if there
is air and water (in some form) in the neighborhood. If the sun is covered
and there is a Soil below, the Soil may grow into a Root.
- Watered Stalk : A Stalk that has gained water from a Waterdrop or
a Root. When passed by the Sun, creates Fruits on the left and right
sides (if these side cells are empty) and reverts into a normal Stalk.
- Root : If there is Water in the neighborhood, waters the Stalk
above it when passed by the Sun.
- Fruit : Grown by a Watered Stalk. The passing uncovered Sun causes
a Fruit to fall. A fallen Fruit is turned into a Seed the next time the Sun
passes over. Provides 200 units of energy when eaten (150 if canned).
Animal Family:
- Eater : The only non-human animal currently in the game. Moves by
a simple algorithm and eats everything it notices in its immediate
neighborhood. Whenever an Eater eats something, there's a 6% chance that
it also lays an Egg. Causes a fatal explosion when coming to contact with a
Human. Explodes into a Bone (although this Bone is often destroyed by a
subsequent explosion). If surrounded by non-Air in every direction, will die
of suffocation and turn into Soil the next time the Sun passes over it.
- Egg : Falls down. Turns into an Eater when passed by the uncovered
Sun. Not directly edible but can be canned. A canned egg provides 100
units of energy.
- Bone : Turns into Air when passed by the Sun. Can't be directly
consumed but can be canned. A canned bone provides 150 units of energy.
- Human : The player character.
Artifact Family:
These do not appear naturally but require the player to craft them.
- Bomb : Crafted from two Bricks or Glass+Brick. Explodes when
triggered by an Eater, a falling Egg or another Bomb.
- Can : Crafted from Brick/Glass and a food item (Lichen, Mushroom,
Grass, Fruit, Egg or Bone). Cans are pushable items, so consuming them
requires the holding of the fire button. The color of a Can indicates what
type of foodstuff it contains:
- Purple: from Lichen, Grass or Mushroom, 50 units of energy
- Red: from Fruit, 150 units of energy
- Yellow: from Egg, 100 units of energy
- White: from Bone, 150 units of energy