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

Our goal: To become one of the most fun places in the world to code.

527 authors    908 Worlds    81,721 runs    0.4 million lines of code    Update stats

One Cube World
By Starter user
Simplest possible starter World. Background color. A cube of random color.
Purple Fruit Monster
By Starter user
Example of porting physics World unchanged to AB using plain physics API. From "3D Game Programm...
CELLS WITH MIND (2 mi...
By Enhanced
Cells is a game about cells trying to infect each other. It offers a playground for minds to com...
Flickr World
By Starter user
Demo of "Web page" API. Just use JS to make a web page. This page gets images from Flickr using ...
Coders: Make 3D worlds and share them with friends. Clone and edit other people's worlds. Make touch mobile games. Embed your worlds on other sites.
Teachers: Run programming practicals in 3D or 2D or text, with many features designed for teachers. Safely edit and run student code.
Researchers: Upload problems, tender for solutions, test and rank them. Make hybrid AI systems from the code of multiple authors.
Gamers: Play the endless game worlds the coders make. Come and browse an ever-growing archive of games.
Learners: Clone other people's worlds and change one or two lines. What's the worst that could happen?

How to get started

1. Explore the site. Run Worlds.


2. See how coding on this site works. Do the Tutorial.

  • Work through the Start Tutorial. This shows you how coding on this site works. This does not assume you have ever written a program.
  • See How to write code on this site. When coding, see the "Docs" menu for all the documentation you need.
  • The tutorial looks at coding the following Worlds:
Blank Three.js World
By Starter user
A simple starter World. An Array of spheres. Painted with textures. Random motion.
One Cube World
By Starter user
Simplest possible starter World. Background color. A cube of random color.
3. Learn how to program with JavaScript. Do the courses.

  • You can learn how to program in the course: Foundations of Programming in JavaScript. This does not assume you have ever written a program.
  • This course uses the P5 graphics library.
  • You can learn WebGL with P5 in the WebGL course.
  • When you are finished these courses, you will be able to make Worlds like the following:
Tutorial 18.7
By "Coding Train" project
Tutorial 18.7 with full canvas, resized model, sound. Texture on box is image from another user.
Tutorial 7.3
By "Coding Train" project
Arrays of Objects
Tutorial 2.1
By "Coding Train" project
Variables in p5.js (mouseX, mouseY)
Tutorial 7.8 variant
By "Coding Train" project
Tutorial 7.8 with music and other uploaded images, including from other users. Click on the images.
4. Modify some Starter Worlds.

  • If you have learnt a little programming, start modifying existing Worlds.
  • Pick one of the following Starter Worlds. "Clone" it, and edit your copy.
  • The easiest parts of the code to change are in the "tweaker's box" at the top.
  • The following Starter Worlds use the Three.js graphics library. This site supports many libraries.
MineCraft
By Starter user
Use keyboard to draw blocks like in MineCraft. Use arrow keys and PgUp, PgDn to draw. Can save w...
Simple World
By Starter user
Simple World with a Mind-controlled agent, randomly-moving enemy, paint blocks with texture.
Zombie Death Baby
By Starter user
How to make a fun touch game for mobile. Touch drag and tap objects. Mouse drag and click object...
Complex World
By Starter user
World with a Mind-controlled agent, actively-pursuing enemy, random maze, skybox, music.
5. Modify other Starter Worlds.

6. See what you can build.

As you keep learning, here are some examples of what you can build on this site. Build something beautiful!

Collision World
By Starter user
Demo of Physics API. Blocks fall under gravity and collide. Can modify gravity, friction, etc. S...
7. See the two most advanced Worlds.

These are probably the two most advanced Worlds on the site at the moment:

Car models with light...
By Port of threejs.org W...
Car bodywork reflects images from skybox. Click buttons to change model and bodywork. Mouse to m...
Complete Infinite World
By Enhanced
This program was made by Nathan Bonnard. In this world, you can generate an infinite world ! Bu...
Editor's Choice Worlds

Here are some selected user-submitted Worlds and the most useful built-in Worlds.

Model World
By Starter user
Demo of how to insert 3d models into World. Mind-controlled agent, actively-pursuing enemy. Skybox.
Cells
By Enhanced
'Cells' is an animation that displays 4 team of cells trying to infect each other, until total d...
Romantic Sunset
By Enhanced
Turn your head and discover a eautiful scenery observable in first person mode.
Simple World
By Starter user
Simple World with a Mind-controlled agent, randomly-moving enemy, paint blocks with texture.
canvas webgl
By Starter user
Minimal starter World for "Canvas" API (no graphics library). Program using getContext("webgl")....
canvas 2d
By Starter user
Minimal starter World for "Canvas" API (no graphics library). Program using getContext("2d"). Pa...
Zombie Death Baby
By Starter user
How to make a fun touch game for mobile. Touch drag and tap objects. Mouse drag and click object...
Enhanced Don't Move
By Enhanced
Try to dodge cubes as they fall to the ground, in this simple but efficient game
Enhanced Space Pong
By Enhanced
It's all you want from Pong : smooth controls, different difficulty levels and game modes
3D for Kids World unc...
By Starter user
Example of plain Three.js API. Porting a World unchanged. From "3D Game Programming for Kids"
CELLS WITH MIND (2 mi...
By Enhanced
Cells is a game about cells trying to infect each other. It offers a playground for minds to com...
Sun
By Enhanced
Here is a prototype of a sun object that you can copy to your world !
Flickr World
By Starter user
Demo of "Web page" API. Just use JS to make a web page. This page gets images from Flickr using ...
Shooting Range
By Enhanced
Shoot the ducks, feel the spirit of the hunt. Enhanced version of "Shooting Range (Space To Shoo...
MineCraft
By Starter user
Use keyboard to draw blocks like in MineCraft. Use arrow keys and PgUp, PgDn to draw. Can save w...
P5 Particle System
By Starter user
Port of P5 site's "Particle System" example with almost no change. P5 plain API. No AB framework...
Minecraft Builder
By Enhanced
Build your own worlds. Enhanced version of the Minecraft starter world with added control and co...
Rythm of the night
By Enhanced
A rythm game where you have to use the right inputs at the right time to progress from one level...
First Person Controls
By Enhanced
First person view with mouse controls. Use WASD or Arrows to move, mouse to look around and spac...
Chess : Mind vs Si...
By Enhanced
Clone of "Chess : Mind vs Simple AI (a bit of random)" by Mathias Bazin
No brain
By Enhanced
Float through hypnotic space cubes. No user input required, it's only an animation
Chess : Mind vs Si...
By Enhanced
Your mind plays against "Simple AI - Depth 1" with a little bit of random added so the games are...
Infinite World Only G...
By Enhanced
Here is a code to get an infinite world that loop without object in it, without the sun
Car models with light...
By Port of threejs.org W...
Car bodywork reflects images from skybox. Click buttons to change model and bodywork. Mouse to m...
Sampler
By Enhanced
Upload sounds, play them, automate them. Saving data works.
Complex World
By Starter user
World with a Mind-controlled agent, actively-pursuing enemy, random maze, skybox, music.
CELLS WITH MIND (add ...
By Enhanced
Cells is a game about cells trying to infect each other. It offers a playground for minds to com...
P5 chase World
By Starter user
Example of World with Mind on P5 plain API. No AB framework. Have to call Mind yourself. Mind mo...
Pacman
By Enhanced
Enhanced version of Game Pacman in Space, you need to collect all white bullet to end the game, ...
Game of Crowns season 2
By Enhanced
Enhanced version of "Game of Crowns" by Niamh Byrne with better graphics and controls
Infinite World Ground...
By Enhanced
Here is a code to get an infinite world that loop without object in it, and with the sun
Purple Fruit Monster
By Starter user
Example of porting physics World unchanged to AB using plain physics API. From "3D Game Programm...
P5 Mouse tracker
By Starter user
Example of P5 World integrated with AB framework. Desktop: Draw ellipse wherever the mouse hover...
Collision World
By Starter user
Demo of Physics API. Blocks fall under gravity and collide. Can modify gravity, friction, etc. S...
Bomberman
By Enhanced
Classic game of Bomberman, try to kill the ennemy with a bomb !
The Game of Life
By Enhanced
The famous Game of Life. Click on the screen to place the initial cells and then click start ! ...
Bouncy Balls
By Starter user
Demo of Physics API. Balls bounce under gravity and collide in low friction world. Splash screen...
Blank Three.js World
By Starter user
A simple starter World. An Array of spheres. Painted with textures. Random motion.
User-controlled Model...
By Starter user
3d model World. User controlled on desktop. Keyboard arrows to move. Switch to "Move with" camer...
Castle World
By Starter user
Demo of how to insert 3d model into World. Mind-controlled agent, actively-pursuing enemy. Splas...
Scrolling background
By Enhanced
here is explained and commented a way to code a scrolling background with three.js
One Cube World
By Starter user
Simplest possible starter World. Background color. A cube of random color.
Complete Infinite World
By Enhanced
This program was made by Nathan Bonnard. In this world, you can generate an infinite world ! Bu...
Scare the Fishes!
By Enhanced
Scare the fishes with your mouse ! If you click they will flee even further away. Includes twea...
Plain canvas webgl World
By Starter user
Example of porting webgl World (almost) unchanged to AB using plain canvas API
Space Hero
By Enhanced
Drag the Earth the collect the suns. Don't get hit by the asteriods ! Enhanced version of "Space...
Plain Three.js World
By Starter user
Example of plain Three.js API. Porting a World unchanged. From github.com/mrdoob
Plain canvas webgl World
By Starter user
Example of porting webgl World (almost) unchanged to AB using plain canvas API
Touch World
By Starter user
How to override default touch handling. Mobile: Touch drag moves agent, touch pinch zooms camera...


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

© Ancient Brain Ltd. All rights reserved.

Ancient Brain ™ is a trademark of Ancient Brain Ltd.

Beta      Bug bounty      Contact      Stats      The name      Terms and conditions