Getting started
A world is a grid of Ents (cells that are either there or not) plus a ruleset, which is one Python file deciding what the next tick looks like.
Running it
In a browser. Launch EntLab. Nothing to install. It is the same Python program compiled to WebAssembly, so everything in these docs applies to it. The first load pulls down about 15 MB and then keeps it cached.
As a desktop app (once builds are published). Unzip and open. No Python needed. Download for macOS or Windows. On macOS the first open needs right-click → Open, and you have to allow access to Documents when asked.
From source. With Python 3.8 or newer installed, double-click
EntLab.command on macOS or Launch EntLab.pyw
on Windows, or run python3 main.py anywhere. The first run
installs pygame and NumPy for you.
Your first world
- Name it and size it. The grid runs from
(1, 1)at the bottom-left up to whatever size you pick, 8 to 2048 cells per side. Type200 x 150, or just300for a square. - Pick a ruleset. This is the law of nature for the new world.
conwayis the classic one.tutorialis a walkthrough written as comments inside the file. Pick from Customize rulesets. - Shape and edges, if you like. A world can be a rectangle, an ellipse, a diamond or a hexagon. A rectangle's edges can be solid walls, a torus that wraps both ways, or a cylinder that wraps left to right. Wrapping needs an edge to leave by, so it is offered on rectangles only (the other shapes have dead cells sitting where the edge would be).
- Create world, then draw. You start holding place, so click or drag on the board to paint Ents.
- Press Space. The ruleset takes over and runs ten ticks a second.
If nothing seems to happen, you probably drew something the rule holds still. Under Conway a lone Ent dies at once and a 2×2 block sits there forever. Try a rough diagonal smear instead.
Finding your way around
The tool bar along the top holds your tools, then play / step, undo / redo / clear, speed, and save / load, with menu pinned by itself at the far right. Under it sits a row holding only the options for the tool you're holding: a brush size for place, delete and deselect for select, turn and flip while you're stamping. Click the tool you're already holding to put it down. With an empty hand, dragging the board moves the camera.
In the browser the same menu also hangs off Menu ▾ in the page header above the app. It shows up once a world is open, and not on the creation screen, where it would have nothing to act on. New world in either menu goes back to the creation screen. The EntLab link at the top left leaves the app for this website, and asks first.
The status bar at the bottom shows the world name, the ruleset, the tool you're holding, and the tick and population counts, plus buttons for reset, fit, the population graph and the minimap.
None of that is fixed. menu → edit screen layout moves the overlays around, and its second tab moves the bar itself: across the top or bottom, or down the left or right as a tool rail, with icons, words or both, and the button groups in whatever order suits you.
Esc is the step backwards for everything. It cancels a stamp, then a drag, then a selection, and finally opens the world's menu, where Change ruleset… swaps the law of nature while the world keeps running.
Saving and sharing
Press S to save. A .grid file
holds the board, the tick count, the ruleset's whole source,
and any state the rule was keeping. That means a world you send someone
always runs, even if they have never seen that ruleset. Drag a
.grid onto the window to open it.
Because the source travels inside the file, editing a ruleset in your library never quietly changes worlds you already saved. When you do want that, use Esc → reload.
Where the files live
Running from source, everything stays in the one folder next to
main.py. The prebuilt apps use the same layout inside
Documents/EntLab, where it is easy to find:
rulesets/*.py | your ruleset library (drop files in to add them) |
worlds/*.grid | saved worlds |
logs/entlab.log | full tracebacks when a ruleset throws |
settings.json | theme, scroll direction, keybinds |
Settings has open-folder buttons for each. In the browser these live
in the page's own temporary storage, so download a .grid if
you want to keep it.