#Beebo v1.3.7-dev (In-development preview, 31 January 2026)

#If you like Beebo, please message me or send me an ask on my blog:
https://compiler-specific.tumblr.com
Beebo is an interactive wave simulator. There's no points or objectives, only waves. The waves are simulated using a discretized Laplace operator, giving a result that resembles the surface of a still pond. The game comes with multiple different shaders which you can use to change the appearance of the waves to resemble water, storm radar, laser light, and more. You can also add a circular or hexagonal boundary to see different geometric patterns than what you get in the default square boundary.
#v1.3.7-dev preview features
The UI sidebar in this version demos the new Ui_Rotary element type in Beebo's
custom UI framework. In 1.3.7-alpha, this will be used as an angular tilt widget
for planned new geometric drawing tools. Also, the 31 January upate introduces
the use of OpenMP to run Beebo with multithreading on supported platforms. Make
sure you properly install libomp-dev through your package manager before
compiling this update. On multicore systems, the reduction in runtime latency
incurred by each iteration of the wave physics engine is so substantial that the
speed multiplier cap has been raised from 64 to 128. This is roughly the new
upper limit at which Beebo runs without frame drops on my laptop, which runs
Ubuntu LTS on an Intel Core i7-8565U (4 physical cores, 8 logical cores with
hyperthreading) with Mesa drivers on an integrated GPU (UHD Graphics 620) and
16GB of RAM. If your system has lower specs than this, you might not be able to
achieve the same performance, but most consumer PCs made in the last 10 years
should still be able to attain sub-VSync latency up to a certain speed multiplier
value.
#v1.3.6-alpha patch notes
See also: https://www.tumblr.com/compiler-specific/806779026362499072/beebo-v136-alpha-patch-notes
This release introduces a major refactor which replaces the main UI sidebar's old ad-hoc event-handling architecture (basically just a giant switch statement) with the new callback-based system, which was introduced in v1.3.5 to handle input events in the confirmation popup. This means that Beebo now has a unified architecture for event-handling, which will make future maintenance & development easier, because it means the sidebar (and its input handling) works the same way as every other UI panel.
Actual changes to the observable behavior of Beebo in this update include:
- Bugfix to the "Storm Radar" shader makes it so that zero-amplitude cells are yellow-green, as they should be.
- Extreme mode waves and pulsar mode waves are now "normalized"; they are no longer massively amplified relative to the regular wave amplitude.
- Extreme mode waves and pulsar mode waves are now visible when placed while the wavefield is paused.
- Extreme mode waves and pulsar mode waves now have the same radius (hardcoded to
10for now, but will be made adjustable in a future update). - In the grid overlay, the magenta circles are now drawn before the lines, making their intersection points more apparent.
- In the grid overlay, the horizontal axis is now green-and-black instead of red.
The F, C, and X keys all do things that can irreversibly destroy the wavefield's state. This update introduces a confirmation dialog that pops up to ask you whether you are sure you want to do that, giving you a chance to cancel the operation if you changed your mind or didn't mean to press that key. This feature was requested, with great urgency, by one of my roommates, who got really frustrated after she accidentally wiped one of her saves with a stray press of the F key.
#v1.3.3-alpha feature focus: grid overlay + other UI enhancements
You can now press the G key to show a semi-transparent grid overlay on the wavefield, which can help you locate certain geometric points of interest in the wavefield (for example, the cell in the exact center). Also, every draw mode now gets its own unique cursor to make placement of waves & walls more legible and precise.
#v1.3.2-alpha breaking change
I introduced a performance optimization that reduces the size of Beebo savefiles from 1,040,504 bytes down to 845,432 bytes, simultaneously saving the same amount of RAM usage. This is done by making it so that every wall cell uses one byte to store its type (empty, reflector, emitter, sink, resistor). Previously the wall cells were represented using 4 bytes per cell, the same amount which is used for the buffers that store the wave amplitude values for the present moment, the instant just prior to the present moment, and the instant following the present moment. For those buffers, 4 bytes per cell is necessary since the cells use 32 bit floating point values to represent amplitudes. But for each wall type to take up 4 bytes, is just wasting 150KB of memory that are perpetually zeroed-out.
So Beebo now uses 150 fewer kilobytes of RAM, and savefiles now occupy 150 fewer kilobytes of disk space. The tradeoff is that savefiles made with 1.3.0 and 1.3.1 are no longer supported.
#v1.3.1-alpha new feature focus: Do Not Save
Starting with Beebo version 1.3.1-alpha, if you are using a savefile and you do
not want to overwrite your save when you close out of Beebo, you can include the
new --do-not-save flag. If this flag is in the command's parameter list, Beebo
will not modify the content of the savefile; the game's state will not be saved
when Beebo exits.
#v1.3.0-alpha new feature focus: Savefiles
Starting with Beebo version 1.3.0-alpha, you can save your game's state and
restore it later using savefiles. This is done by putting --savefile <filename>,
where <filename> is the name of a *.bbo file in the savefiles folder (this
folder must exist in .config/beebo/ for savefiles to work).
If you provide a name for a file that doesn't already exist, Beebo will create it for you. If you provide the name of a file that does already exist in the savefiles folder, Beebo will read the binary data from the file, check to make sure the file isn't corrupted, and load the data from the file into the wavefield so you can pick up where you left off.
Either way, when you close Beebo, the program will overwrite the savefile with a
snapshot of its final state before exiting. Therefore, if you have a savefile you
would rather not overwrite, it is advised to back up the saved game by going into
.config/beebo/savefiles/ and copying its savefile into a new *.bbo file.
#Shader screenshot gallery
Beebo has eight different shaders which can be used to render the wavefield. They are explained in this chart:

You can watch a short silent demo of some of Beebo's new or newly-patched features here: https://www.youtube.com/watch?v=fl1ayTLeICs
#Installation option 1: Get the latest Linux build
A binary build of the latest commit to Beebo can be obtained from this URL:
To install Beebo, you will need to create a configuration directory by running the following commands in your shell:
mkdir -p ${HOME}/.config/beebo/ttf pushd ${HOME}/.config/beebo/ttf wget https://git.sr.ht/~willowf/beebo/blob/master/ttf/Urbanist-Regular.ttf cd .. wget https://git.sr.ht/~willowf/beebo/blob/master/sample-beebo-config.txt -o beebo-config.txt popd
After that, you can run Beebo from your shell by running ./beebo.x64 in the
directory where you saved that file.
This program won't work without the required dependencies. To install those on Ubuntu or Mint, run these shell commands:
sudo apt install libsdl2-dev sudo apt install libsdl2-ttf-dev
#Installation option 2: Install Beebo from source
Use make to build from source with the provided Makefile. Eventually I
ought to consider finding an easier installation option for less technical
users.
On x86-64 Ubuntu, you will need libsdl2-dev and libsdl2-ttf-dev to compile and run this game. On other operating systems, it is in principle possible to run Beebo, but it will require technical expertise in compiling C programs for your platform. If this game attracts enough attention, I may take the time to release a Windows version.
The Makefile assumes ~/.config/ exists. The first time you run it, it will create a new directory at ~/.config/beebo/. To change configuration options such as the default speed of light and the default scale factor, edit the file ~/.config/beebo/beebo-config.txt
#Installation option 3 (outdated version, not recommended): itch.io
Official releases of Beebo are distributed through itch.io here: https://willowf.itch.io/beebo-wave-simulator