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.

For how-to-use help, see the quick links above.

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.


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." As far as possible, there are no limits to the JavaScript you can inject into the run window, once basic security is taken care of. We do not want to put limits on the imagination of authors.

Trust but verify

Worlds run on the client-side and report back the following pieces of information to the server:
  1. Run count.
  2. World screenshot.
  3. Mind score.
Because these come from the client-side, with appropriate credentials, could a user analyse the API and send fake data with the appropriate credentials? The answer is yes, sort of. Consider each in turn:

Data Summary of can it be fake Explanation
Run count Same issue as YouTube There is no way in principle to know for sure if bots are running the World on the client side or humans. YouTube has the same problem, as do other client-click sites, and they have not solved it. There are things we can do, and will do, to try to detect bots, but run count cannot be taken as gospel.
World screenshot Same issue as YouTube We allow Worlds define the step on which they generate a screenshot. So a World could use that to generate an unrepresentative screenshot, like misleading YouTube thumbnails. We imagine this will be rare, but it could exist.
Mind score Hard to fake without World noticing The World defines what the score should be. Only the World owner can do a run that sends score to the server. Mind code is injected into that run.

In theory, Mind code (in the same window) might interfere with the call to the server, and send its own fake score. At the moment, this is possible, but should be rare, and will be hard to do without the World owner noticing.

Conclusion: World owners need to watch when generating Mind scores that the Mind is not trying to hack the score. The World owner can watch what appears on screen and match it to the claimed score. The World owner can study the Mind source code. World owners can "reset" suspicious Mind scores. World owners can "reset" and then refuse to run suspicious Minds, so they never get a score.

"The market" will take care of a lot of this. World owners will "reset" and ignore suspicious Minds. Suspicious Worlds and Minds and users can be ignored, voted down, commented on, or reported.

The background is a program, showing the JavaScript graphics used on this site.
Customise background:  

© Ancient Brain Ltd. All rights reserved.

Ancient Brain ™ is a trademark of Ancient Brain Ltd.

Beta      Contact      Stats      The name      Terms and conditions