ISIS/Dev

From OLPC
< ISIS
Revision as of 00:26, 25 March 2008 by Faga (talk | contribs) (adding how to get the code)
Jump to navigation Jump to search

This page is intended to cover all development tasks instead of having many pages to it. I need to merge ISIS design page with here, or reorganize it.

Development Framework - ISIS Developer

The ISIS Development Framework is a set of UI screens and tools, which aims to support children to build their own interactive stories. To accomplish it, I designed some ideas, but of course I want opinions from my previous mentors and community. I designed to divide the Developer into 6 parts:

1) Story Writer: A simple text writer which allow users to write stories, with auto-complete, parsing in real time and showing the objects and state in a tree on the right side. The idea is to let user to write the story with all help that is possible, but forcing he/she to write, and not to only connect elements. I see on this a good way to train user in basic writing simple sentences, good for young children.

2) Room Builder: Integrated with Story Writer, it allows user to import media files/streams into an empty room, assign them to the objects created in Story Writer and position them on the room. So the interface for this tool is a gallery on the top with import button, the same objects tree on the right side to assign them, the room on the center and possibly a timeline below the gallery to work with time elements of story.

3) Object Builder: This tool is associated with Room Builder, and allows to import different media types into story. The idea is to convert any input format (for example, a sound in mp3 or wav into ogg/vorbis, or an image in bmp into png) and allow user simple edit operations in the case of images, like cutting the image. Support videos is not confirmed, as PyGame hasn't a nice support for video (only supports mpeg1 videos) and have some problems to work with it - like play at a position, resizes and so on. Also, the Object Builder allows user to add special effects like animations on the objects at some act. This tool can also suggest Sugar editing tools for each operation, the idea is to only have a basic set of tools if user doesn't want to work in the imported object.

4) Room Flowchart: A simple flowchart interface show the connections between the rooms. The idea of this tool is to give a general look in the building story, viewing each room and what action happens to flow the story to another room. This could be viewed as a state diagram, reporting how the state of the story runs with the conditions (actions). This tools isn't crucial to the project, so if happens any change that could late the project, this tool could be done after the first playable release.

5) Story Debugger - a simple interface which allows developer user to play the story what (s)he is creating, with more information that could help on debugging, like state of each objects at any time of the play.

6) Sharing Tools - this isn't a separated module - as any of these previous are, but they are logically separated. The idea is to provide developer users to share the creation of story, so a story could be made, via mesh network, by more than one creator. To do this, the implementation of previous tools need to be special, always trying to code with more Oriented Object Programming as it is possible, so each client just call the object methods from each other to write / edit the story text, build the rooms and import objects. When one client change something, the change need to be authenticated on each client on the developer users network, and then made on local machine (of course, the user see the change on the same time, but if isn't authenticated by a client the operation backs and a message is shown to the user)

Planned Tasks

The next tasks are related with Player, which is under development at this moment:

  • timer (controls objects changes along the time, using frames as counter) -- this is not crucial.
  • map -- a map on screen with objects. Render texts with squares or circles for objects without images. -- crucial
  • chat gui
  • inventory gui

Current tasks

I'm currently working on Player module, with map and inventory tasks. Faga 21:50, 19 March 2008 (EDT)

Getting involved

If you found this project interesting, you can contribute with it! Just contact me Faga

Downloading the source code

Just get by git repository at http://dev.laptop.org/git/activities/isis:

$ git clone git://dev.laptop.org/git/activities/isis

Getting the code to develop

When you contacted any member of this project and got authenticated into ISIS git repository, these are the commands to get the project (assuming you already installed git-core tools):

$ git-init
$ git config user.name "FirstName LastName"
$ git config user.email "user@example.com"
$ git remote add origin git+ssh://MYUSER@dev.laptop.org/git/activities/isis
$ git pull

where MYUSER is your username.