While visiting a low-income school in Brooklyn, John had an opportunity to watch some high-school students learn to code. What he saw was less than ideal. The lesson was to build an Asteroids-style game with Python. The instructor hoped that constructing a game would be sufficient motivation to keep the students' attention. But it was very hard for any student to focus long enough to make significant progress. John wondered if it might be possible to make code more interactive and provide more immediate, interesting objectives (on the order of 5 lines of code instead of 100). So the Edoo team formed and it began to create a game (of sorts) designed to teach object-oriented principles.

What it does

The main interface has a 3D scene, an XML script editor, a javascript editor, and a console. (It is something like JSFiddle, except instead of building a webpage, the user interacts with the 3D scene.) For example, with just a few lines of XML, a novice coder can build a tank, add some blocks to the scene, and then instruct the tank to aim at the blocks and fire! (The user can select objects in the scene by clicking on them--this gives a handle for the object that can be inserted into the code.)

How we built it

For maximum accessibility, the project is based only on Html5 and Javascript. In particular, the 3D engine is Babylon.js and the physics engine is Oimo.js. We chose this platform so that it would be easy for anyone with a modern browser to get started using it right away.

Challenges we ran into

There is not a lot of documentation for Babylon.js or Oimo.js, so we had a lot of debugging to do, and we had to adapt some of our plans around poorly implemented features. (The physics impostors used for collisions were particularly finicky.)

Accomplishments that we're proud of

We completed all the milestones necessary to provide a clear demonstration of the eventual game/coding environment we have in mind.

What we learned

We gained experience with Javascript, and the challenges that come with using less-popular APIs. We also were amazed by the power of Html5 and its graphics acceleration capabilities. Also, this was John's first hackathon, so he really enjoyed the new experience.

What's next for Edoo

We would like to add more classes/features, provide very instructive documentation and error handling, and then try our project out on some of our less code-savvy friends. We would love to see this project eventually be deployed in schools that are struggling to implement a computer science curriculum.

Built With

Share this project: