Ancient Brain
Code. Play. Teach. Learn. Research. Demo.


Ancient Brain aims to become a global repository of user-submitted programs that run in the browser. All in JavaScript, using WebGL graphics. Users can submit programs for humans to interact with (games, company demos) or programs for other programs to interact with (research problems and solutions, teaching practicals and answers). All programs may potentially be "cloned" and modified by other users, in a new type of "social coding".

Worlds and Minds

Users can upload programs, or run programs that others have uploaded.

Authors of programs will upload problems or environments that we call "Worlds". These may be:

  1. Designed for a human to interact with them. e.g. A regular human-interactive game.


  2. Designed for a program to interact with them. This other program is called a "Mind" and is also uploaded. The Mind "runs" in the World. e.g. The World poses a programming problem, and the Mind is an attempt to solve the problem.

Anyone can run a Mind in a World (or run a World with no Mind) without logging in. Anyone can upload new Minds and Worlds if you register and log in. All Minds and Worlds are in JavaScript.

For further background, see The AI model behind Ancient Brain.

Types of World

There are the following types of World:

World type Explanation
No Mind World does not use Minds. World runs on its own without a Mind.
There may be:
  • No human interaction at all. e.g. Demo of some calculation.
  • Human control of camera. e.g. Demo of a 3D environment.
  • Human in detailed interaction. e.g. Normal game.
Uses Mind World uses Minds. World runs with a Mind, which is another JS program.
There may be:
  • No human interaction at all. e.g. AI problem, programming challenge.
  • Human control of camera. e.g. AI problem, programming challenge.
  • Human in detailed interaction. e.g. Customisable game. Can upload new AI Mind and then human can play the new World/Mind combination.
Teaching World A World (using Minds) that is designed for teaching.
The "teacher" is the World owner. The World defines some problem. The "students" write Minds to solve the problem.
This World has the following features:

  1. All Minds are obfuscated, to hide each student's work from other students. This cannot be changed.
  2. The World owner (the teacher) can see the plain text of all Minds. So the teacher can view, run and mark the students' Minds. No one else can see the plain text.
  3. The teacher can "clone" student Minds and gets a plain text clone. The teacher can edit the student's code, change it and see what happens. No one else can edit the plain text.

Additional cosmetic features:

  1. Link to obfuscated JS is removed for students.
  2. "Clone Mind" is removed for students.

Note: A World of this type must be declared at time of creation, so Mind authors always know if their plain text is visible by the World owner or not. It cannot be set later.

Principles of Ancient Brain

This site works by certain principles:
  1. "Everything should run." Even if authors make errors, or do not follow the API, their Worlds should still run if possible. For example, the system checks to see if user-written methods actually exist before trying to call them. If not, it tries workarounds.

  2. "Everything should always run, forever into the future." Worlds run according to a particular API. New functionality will be added to the system by adding new APIs. The old APIs will still exist unchanged. The old Worlds will always run.

  3. "No limits to JavaScript." Our philosophy is to allow the upload of almost any JavaScript, subject to some basic checks. We do not want to put limits on the imagination of authors.