Play: Difference between revisions
Line 27: | Line 27: | ||
== 3. Write "Play!" == |
== 3. Write "Play!" == |
||
The last part of the summer will be devoted to writing an educational physics tool I have dubbed "Play!" for "Physical science Learning And discoverY." |
The last (&largest) part of the summer will be devoted to writing an educational physics tool I have dubbed "Play!" for "Physical science Learning And discoverY." |
||
This tool will use the power of elements |
This tool will use the power of elements to provide an intuitive physics learning activity for young children. It will include the following features: |
||
* Use the features of elements in an intuitive manner, using simple pictorial demonstration of actions [1]. |
* Use the features of elements in an intuitive manner, using simple pictorial demonstration of actions [1]. |
||
* Learn physical concepts like Gravity, Torque, Project motion, angular, etc. Through a very realistic interaction with the objects present in a given scene. |
* Learn physical concepts like Gravity, Torque, Project motion, angular, etc. Through a very realistic interaction with the objects present in a given scene. |
||
Line 34: | Line 34: | ||
* The user can create objects and watch the scene “come to life” through the interaction with other objects in the scene. |
* The user can create objects and watch the scene “come to life” through the interaction with other objects in the scene. |
||
* Use the XO networking capabilities to share user created scenarios |
* Use the XO networking capabilities to share user created scenarios |
||
"Play!" will follow a few guiding principles in it's development. |
|||
Firstly, it has to be simple to use. It is important for "Play" to be intuitive to remove any barriers normally present in physics education. By making "Play!" as accessible as possible, nobody will be excluded from reaping the benefits of science education. |
|||
As was mentioned above, I propose to do this by using pictorial demonstrations of it's features as much as possible. For one thing, this flattens the learning curve of such a tool (which, ideally, should be non-existent), using pictorial demonstrations it is simple to know at a glance how an action affects the environment. In addition, it removes the language barrier. Experience in other open source projects tells me that there is a significant time lag between the project's availability in english and in other languages. Although I deem it impossible to completely get rid of any text, I will try and limit the use of it as much as possible. |
|||
Secondly, due to the limited hardware of the XO laptop, and the resource requirements inherent to any accurate physics simulation, I will also make sure to maximize the performance of "Play!" Without a fluid simulation, the tool won't be nearly as entertaining to use, so this should have priority. |
|||
= Benefits to the community = |
= Benefits to the community = |
Revision as of 17:26, 6 April 2008
Play - A summer of code project
This wiki page is about a summer of code project proposed by Erik Beerepoot. The mailing list entry is here A pdf version of this proposal is also available at my website
Introduction
This summer of code project proposes to extend Elements, a python wrapper around a 2D physics engine called box2d. After extending elements & writing extensive documentation for use with the XO laptop, I will use it to create a physics educational tool called "Play!" - for Physical science Learning And Discovery. "Play!" will provide an intuitive interface for kids to learn elementary physics concepts like Gravity, Projectile motion, Angular motion, and more.
Detailed Description
This project consists of three main parts:
- Extend the elements API
- Document the element API
- Write "Play!"
1. Extend the elements API
The first thing that will be done in this summer of code project will be the extension of the Elements API to larger subset of the desired functionality.
Currently, elements supports only part of what is possible with the Box2D engine, and I propose to change this.
First off, I will implement support for concave polygons. As you can see on the picture on the right, a convex polygon is a polygon that has no interior angles greater than 180 degrees.
This means there can be no "indentation" - not having this option makes many shapes impossible. I will add this functionality to Elements.
Secondly, I will add support for joints to the elements API. I will implement Revolute, prismatic, distance, pulley, gear and mouse joints. This will make it possible to create simple transmission systems, hinging systems, pulleys, rotation, and much more. Thus, this is a crucial feature for a Elements to support. After implementing these features, developers for the XO laptop will have a simple to use, accurate & extensive physics API available, and it will be trivial to support physics and their activities & games.
Note: This part of the project is in progress & will have to be re-evaluated at the commencement of the summer of code.
2. Document the elements API
Documentation is crucial for any Open Source project. To effectively be able to use the Elements API, I propose to write extensive documentation to cover all aspects of the elements API. This will lower the so-called "activation energy" of using the Elements API, and will make it even simpler to use physics simulation in XO activities. It will also increase developers interest in the API, which ultimately will lead to a more stable, well supported, more accurate & more extensive physics simulator, at the benefit of the OLPC community. In addition, I will also write several examples specifically geared towards the XO laptop to illustrate the proper use of the Elements API in developers activities and games.
3. Write "Play!"
The last (&largest) part of the summer will be devoted to writing an educational physics tool I have dubbed "Play!" for "Physical science Learning And discoverY." This tool will use the power of elements to provide an intuitive physics learning activity for young children. It will include the following features:
- Use the features of elements in an intuitive manner, using simple pictorial demonstration of actions [1].
- Learn physical concepts like Gravity, Torque, Project motion, angular, etc. Through a very realistic interaction with the objects present in a given scene.
- Provide simple ways to create a wide variety of objects and then interact with them by means of moving, scaling, throwing, linking, and other simple motions.
- The user can create objects and watch the scene “come to life” through the interaction with other objects in the scene.
- Use the XO networking capabilities to share user created scenarios
"Play!" will follow a few guiding principles in it's development.
Firstly, it has to be simple to use. It is important for "Play" to be intuitive to remove any barriers normally present in physics education. By making "Play!" as accessible as possible, nobody will be excluded from reaping the benefits of science education.
As was mentioned above, I propose to do this by using pictorial demonstrations of it's features as much as possible. For one thing, this flattens the learning curve of such a tool (which, ideally, should be non-existent), using pictorial demonstrations it is simple to know at a glance how an action affects the environment. In addition, it removes the language barrier. Experience in other open source projects tells me that there is a significant time lag between the project's availability in english and in other languages. Although I deem it impossible to completely get rid of any text, I will try and limit the use of it as much as possible.
Secondly, due to the limited hardware of the XO laptop, and the resource requirements inherent to any accurate physics simulation, I will also make sure to maximize the performance of "Play!" Without a fluid simulation, the tool won't be nearly as entertaining to use, so this should have priority.
Benefits to the community
Probably the largest benefit of this summer of code project is the extension I propose to do on the physics simulator. The python language is a primary development language on the OLPC platform, so having a full-featured physics API accessible through python will be of great benefit to the community, specifically with regards to games. The documentation that I will write will make the adoption of Elements easier, which will serve as a catalyst to the previous point. The “Play!” activity will provide a science-learning tool the users of the XO laptop. As science is a very important part of the education of a child, this tool will be of great benefit to those trying to teach science (specifically physics).
Timeline & Deliverables
I have separated the project into 3 parts. This will allow easy evaluation of project progress, and will allow the mentor to catch problems early if progress is not proceeding as planned.
About Me
My name is Erik Beerepoot, I’m a 3rd year, mechatronics student at McMaster university,in Hamilton, Ontario, Canada. I have experience in c#, c, c++, obj-c,python, basic, javascript, html & css. I’m familiar with Mac OS X, linux & windows programming, and have experience in FOSS. Most notably, I participated in the development of AdiumX, an instant messaging client for Mac OS X. I share a house with my Partner Chloe, and nearly 16-month-old daughter Maaike. Besides developing software, I enjoy tinkering with electronics, taking nature walks, cooking, gardening, reading & mycology.