This text displays if you have javascript disabled, or I guess if your browser doesn't support canvases. If it is the latter please reconsider your life choices.
Pen Tool
Select Tool
Colour Picker
Drag Camera

V0.3.1 by blah, Inspired by Jack Eisenmann
World: 64x64
Selection: 420x69
Generation 413, 612 gens/second
Rule: lol some rule who cares
Zoom: ++ + 8 - -- | Δt: ++ + ??ms (??fps) - -- | generations/frame: ++ + 1 - -- | Pan camera: | Pause | Save Codes: get get selection set | Simulate one frame | Expand the world by cells on the Left Go | Center Camera | Clear World | Change Rule: set | Algorithm: Brute Force
Close

Reasoning Realm

This is an implementation of cellular automata in HTML5 with javascript, in development since 2016-03-03. It originated as an attempt to re-implement Jack Eisenmann's "Logic Land" cellular automaton better than he did, but it grew far beyond that and became capable of running other rules. As such, "Reasoning Realm" was named after it; other names with this structure include "Intelligence Island", "Deduction Dimension", and "Smartness Sphere". Dan came up with the last two. The source code of this program is over 2000 lines, and it's all just one .html file. Reasoning Realm can currently run Lifelike CA, Generations rules, cylic cellular automata, and generalised wire automata (including Wireworld) with moore, JvN, and hexagonal neighbourhoods, Logic Land, Rychládrát, and LifeHistory.

I declare this to be free software. Feel free to reverse engineer it, distribute it, modify it, distribute modifed versions of it, etc (as if anyone cares enough). The source code is this file itself.

Credit goes to BLAH (ME) for being, like, really smart, Jack Eisenmann for inspiration and Logic Land savecodes (the functions to handle that were taken straight from his code with his permission), and dan.

Controls

wasd/arrow keys: Move camera
F: Simulate one frame
I: Zoom in linearly
O: Zoom out linearly
[: Zoom out exponentially
]: Zoom in exponentially
space: Play/pause
E: Erase selection
X: Cut selection
C: Copy selection
V: Paste selection
M: Mirror selection vertically
N: Mirror selection horizontally
T: Rotate selection
`: Randomly fill selection with values from 0 up to the selected element (` key to the left of 1)
H: Center camera
0,1,2,3,4,5,6,7,8,9: Select corresponding state (and switches to the Pen tool if it isn't already selected)
Q: Same as 0
-: Select state 10 (the hyphen key, to the right of 0)
Z: Select state 17
R: Selection tool
J: Drag Camera tool
alt+f4: Close help menu

Pause lock: If you enable this, you will not be able to pause or unpause. useful iff you=dan Lock

Logic Land save codes: This is the undocumented, strange, inefficient format Logic Land used. get

Changelog

0.3.1

2018-04-26

The day is 2017-12-08, and I've decided to go back and fix some things after about 13 months of inactivity.

... The month is 2018-04. I'm going back to finish this version now.

  • +A snake.
  • +Generalised Wire Automata. "WireWorld" and "Bliptile" are interpreted as their equivalent CA in this rulespace; Wire12 and Wire1v, respectively. Sadly, Bliptile used state numbers differently, so Bliptile patterns don't work directly.
  • +*-There is now only one set rule button; it automatically detects which of the two supported formats you're using.
  • +*Cyclic cellular automata now perceive neighbourhoods correctly. cyclic16 uses the moore neighbourhood, cyclic16v, the von neumann, and cyclic16h, the hexagonal. Does that make grammatical sense? Whatever.
  • *Fixed bug where getRLE() would register amount of empty lines above the pattern as one less than it should be.
  • *Apparently fixed bug where generations rules with hexagonal neighbourhoods would produce innacurate behaviour while using the sparse algorithm. I never experienced it but I guess it existed.

Todo List

This is a list of easy and difficult goals. Some I will probably never bother to do. They are in no order whatsoever. This list is maintained poorly if at all.

  • Add options for colour schemes
  • Make the 'close' button in the help menu follow you as you scroll down
  • Add support for unbounded grids
  • Add support for other geometries, like cylinders, toruses, klein bottles, etc
  • Allow multiple worlds loaded at once
  • Add undo functionality
  • Change the program to use a 1D array because it's probably faster
Bugs:
  • The get selection tool is FUBAR.