ElCity is a minimal city-building simulation game for Emacs. You build roads, zone residential/commercial/industrial areas, place utility buildings (power plants, fire/police stations, parks), all from the comfort of everybody’s favourite Lisp machine.
Those interested in the whys and hows of the project, there’s a HISTORY.org with the details of how it came to be.
All the classic moving parts are here:
- Pollution
- Crime
- R/C/I demand
- Fire risk
- Police coverage
- Traffic congestion
The overall balance might feel off at times.
HINT: cycle map overlays with m to see each system’s effects. The status panel also has
contextual tooltips.
The cursor marks the active tile. Select a tool, move to a tile, then place with
RET or mouse click.
r: roadp: powerlineR: residential zone (3x3)C: commercial zone (3x3)I: industrial zone (3x3)c: coal plant (3x3)n: nuclear plant (4x4)f: fire station (3x3)o: police station (3x3)k: parkb: bulldozei: inspect tileTABorT: next toolS-TAB(backtab): previous tool
RET: place selected tool (or inspect in inspect mode)- left mouse down (
down-mouse-1): place selected tool at clicked tile
- Arrow keys or
C-f C-b C-n C-p: move one tile C-aorHome: jump to first tile in current rowC-eorEnd: jump to last tile in current row
SPC: play/pause simulation.: advance one tick (single-step)m: cycle map overlay
B: cycle budget control (tax/infrastructure/fire/police)+or ===: increase selected budget control-: decrease selected budget controlS: save gameL: load gameu: undo last placement (up to 3)q: quit
Needs:
- Emacs 30.1 or newer
- Emacs GUI mode
- GNU Make
For real play, compile first; the uncompiled engine is too slow. I only tested this in graphical Emacs on GNU/Linux.
make compile runThis opens the ElCity UI with simulation starts paused.


