Wordsmith(scrabble): Difference between revisions

From OLPC
Jump to navigation Jump to search
 
(60 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Wordsmith, scrabble implementation for XO laptops
Wordsmith, scrabble implementation for XO laptops
==Idea==
==Idea==
The idea is to make a internationalized version scrabble board game .The game would use Speech-dispatcher to spell out words resulting in it being a useful tool for students to learn pronunciation in an interactive way.
The idea is to make a internationalized version scrabble board game .The game would use Speech-dispatcher to spell out words resulting in it being a useful tool for students to learn meaning of words in an interactive way.<br>
I totally understand the legalities, hence i would have some different variations to prevent this issue from cropping up.<br>
I would use TuxWordSmith as the base code for my activity. TuxWordSmith is python based, but with unicode support for multiple languages and character sets and would be a solid base for wordsmith.


==Need==
==Need==
Line 15: Line 17:
:Player/team vs player/team with spectators (small number)<br>
:Player/team vs player/team with spectators (small number)<br>
:Community / tourney matches<br>
:Community / tourney matches<br>
A sample run:<br>
Student would open the activity. The game would open the welcome screen, with following options:<br>
#New Game - Creates a new gave against AI
#Multiplayer single opponent - Game against human
#Multiplayer team vs AI- Team Game against AI
#Multiplayer team vs Team- Team Game against another Team
#Spectate - opens the spectator window. It would list currently running games and the student can join if open.(i.e. flagged public)
#Replay - The game would give option to load a previously recorded game.


==Features==
==Features==
All features which aren't marked optional are mandatory.
===Speech Integration===
===Speech Integration===
The game will speak out formed words. However, controls would be implemented so that children belonging to higher age group wouldn't have to listen to every word being pronounced again and again.<br>
The game will speak out formed words.
Also, the game would keep tabs on words which have been already pronounced a set number of times. These words won't be spoken again. <br>
:The repetition value would be depended on the age of the child. with more repetition for smaller age group.<br>
The game would maintain a list of don't-pronounce words which are marked by student.
Controls will be implemented in accordance to age group division which would go hand-in-hand with levels divided dictionary. <br>
:6-8 : all words would be spelled. <br>
:8-10: level 1 (words with less than 3 letters) won't be pronounced. <br>
:10-12: level 1, 2(words with less than 5 letters) won't be pronounced.<br>
:12-14: level 1,2,3( words with less than 6 letters) won't be pronounced.


====Dictionary Lookup====
====Dictionary Lookup====
:A list of already played words would also be included, which when selected would also be spoken out, and would also be linked to the dictionary. This will help the '''child to learn new words as they encounter'''.
:A list of already played words would also be included, which when selected would also be spoken out, and would also be linked to the dictionary. This will help the '''child to learn new words as they encounter'''.


====Integration with [[Listen and Spell]]====
====Integration with [[Listen and Spell]]( Optional )====
:The new words a child encounters in the game would automatically be referred to the [[Listen and Spell]] Activity. The [[Listen and Spell]] activity would then give more preference to these new words, enabling quick learning.
:The new words a child encounters in the game would automatically be referred to the [[Listen and Spell]] Activity. The [[Listen and Spell]] activity would then give more preference to these new words, enabling quick learning.


====Hinting System====
====Hinting System====
:Children would be given hints which would carry a small penalty; the idea is to make children learn.
:Children would be given hints which would carry a small penalty; the idea is to '''improve thesaurus of the child.'''


===Multiplayer===
===Multiplayer===
Multiplayer support and spectator modes will be included.<br>
Multiplayer support and spectator modes will be included.<br>
Chat would be included too.<br>
Chat would be included too.<br>
Games can be flagged Private and Public, so as to control their visibility on the mesh.


====Team Play====
====Team Play ( Optional )====
team Play can be implemented in two ways
**Team player A would make a move. The game board would update and highlight the move and the dominant player can choose to veto or accept it. The issue can be discussed over chat.
**It can also be turn based. In this, player A would make move, while other player would watch. Then ,they would swap after opposition turn. Team chat would be disabled in this mode.
#Team player A would make a move. The game board would update and highlight the move and the dominant player can choose to veto or accept it. The issue can be discussed over chat.
#It can also be turn based. In this, player A would make move, while other player would watch. Then ,they would swap after opposition turn.<br>Team chat would be disabled in this mode.


====Community Hinting====
====Community Hinting ( Optional )====
Same as team play method A, but this would be an option. This option would carry a small penalty.
Same as team play method (1), but this would be an option. This option would carry a small penalty.
*The game would randomly select a spectator, or<br>
*The game would randomly select a spectator, or<br>
*The player can select a spectator from guest list and select “hint me” option.
*The player can select a spectator from spectator list and select “hint me” option.

===Multiple Undo===
The game will provide multiple undo levels when the student plays against the computer. This will improve pattern finding ability.


==game features==
==game features==
Line 49: Line 73:


===Keeping tabs===
===Keeping tabs===
*(Optional)Scoring would use local currency. This would help the child learn about the local currency system.
*The game would enter a record in the journal if the game time is more than 5 minutes.
*The game would enter a record in the journal if the game time is more than 5 minutes.
*The game would be recorded move by move to a file. It can be played at a later stage.
*The game would be recorded move by move to a file. It can be played at a later stage.
*High scores would be recorded in Journal <br>
(OPTIONAL) The game would include a list of top 10 highest scores it has encountered over the mesh (multiplayer gaming ) according to the age group.

=== Coolness factor===
=== Coolness factor===
*The game would use simple animations like blinking, zooming out while rotating, victory sounds etc to keep children entertained.
*The game would use simple animations like blinking, zooming out while rotating, victory sounds etc to keep children entertained.
=== Voice Configuration ( Optional ) ===
The student can edit voice configuration like volume, pitch, rate, language of the words and voice, gender of the voice etc.


==technical aspects==
==Technical aspects==
*Speech-dispatcher: - The voicing would be done using speech dispatcher which would eventually be using espeak for synthesis. Espeak supports more than 30 international languages.
*The game would use pygames and olpcgames libraries to construct the game. A lot of designing ideas would be borrowed from pyscrabble (http://pyscrabble.sourceforge.net/ )
http://www.freebsoft.org/doc/speechd/speech-dispatcher_15.html#SEC57<br>
*Telepathy would be used to implement chat
it is as simple as<br>
*The game would use Unicode and gettext to achieve internationalization.<br>
import speechd<br>
(http://www.gtoal.com/wordgames/#foreignscrab) would be used to for creating the tileset for different languages
client = speechd.SSIPClient('test')<br>
*The game would use the customized dictionary. The proposed structure is identical to the one suggested by [[Listen and Spell]]. The features would be :
client.set_output_module('festival')<br>
**Level based: words divided into different levels according to number of letters
client.set_language('en')<br>
**History : the dictionary would keep tabs on which letters the opponent used, and check if they have been originally used by the player or not. It would then suggest to [[Listen and Spell]] so that the child can learn these new words.
client.set_punctuation(speechd.PunctuationMode.SOME)<br>
client.speak("Hello World!")<br>
client.close()<br>

*The game would use PyGame libraries to construct the game. A lot of designing ideas would be borrowed from pyscrabble (http://pyscrabble.sourceforge.net/ ).<br>
Base code would be borrowed from TuxWordSmith (http://www.schoolforge.net/education-software/educational-games/tuxwordsmith), which is a python based scrabble implementation but with unicode support for multiple languages and character sets.<br>
Glade will be used to create the basic outline of UI.
*[[tubes]] (as in [[connect]]) and mesh networking ([[Presence_Service|PresenceService DBUS API]]) would be used to implement chat and multiplayer components. As mentioned in [[Activity sharing]]
*The game would use Unicode and gettext to achieve internationalization.<br>
:Pango would be used for rendering text to screen<br>
:(http://www.gtoal.com/wordgames/#foreignscrab) would be used to for creating the tileset for different languages. this will help in addressing <b>localization</b> issue.
*[[Gstreamer]] lib would be used for sounds.
*The game would use the customized dictionary which would be using word list from Words activity.The dictionary would use the 'SQlite' as the DB engine.The dictionary would have features like:
**Level based: words divided into different levels according to number of letters<br>
:level division can be :<br>
:level 1 : words with less than 3 letters<br>
:level 2 : words with 3 to 5 letters<br>
:level 3 : words with 6 letters<br>
:level 4 : more than 6 letters
Its structure can be modeled as follows:
word
meaning
Usage
level

I have the idea in my mind that the dictionary can be in a separate file, which can either be accessed by applications ( like wordsmith ) for their use, or have an independent frontend to function as a stand alone dictionary.<br>

:*History : The game would keep tabs on which letters the opponent used, and check if they have been originally used by the player or not. It would then suggest to [[Listen and Spell]] so that the child can learn these new words.<br>


==realizing the project==
==realizing the project==

Initially, a skeleton game would be created which would include a minimalistic UI, definition of classes for board, tileset, player dictionary. An Entity-Relationship diagram would be posted on wiki so that feedback from community can be taken to implement certain method and avoid pitfalls.<br>
===Deliverables ===
AI would be implemented afterwards. This is essential for testing the skeleton game and implementing the hinting system.<br>
I understand the the project is quite vast. The proposal details are my vision as to what the final activity should look like. Hence, the project would have three deliverables:
The multiplayer component would be implemented after AI starts to work.<br>
1) UI with multiplayer mode and AI -- Essential and priority
The UI would now be tweaked and made friendlier in nature. Features like dictionary lookup, integration with [[Listen and Spell]] would now be implemented here.<br>
2) Above with Team play, Thesaurus, Hinting and watching, multiple undo
The game would now be injected with a dozen of cool stuff like animations, sounds and so on.<br>
3) Speech tools, community Hinting, Voice configuration.
The game would now be ready to undergo testing and evaluation.<br>

And if time permits, i would try and write together a simple how to play scrabble tutorials, and other helpful documentations and links from across the net.

[[Category:GSoC proposals]]

Latest revision as of 11:42, 13 June 2008

Wordsmith, scrabble implementation for XO laptops

Idea

The idea is to make a internationalized version scrabble board game .The game would use Speech-dispatcher to spell out words resulting in it being a useful tool for students to learn meaning of words in an interactive way.
I totally understand the legalities, hence i would have some different variations to prevent this issue from cropping up.
I would use TuxWordSmith as the base code for my activity. TuxWordSmith is python based, but with unicode support for multiple languages and character sets and would be a solid base for wordsmith.

Need

Scrabble focuses on improving the thesaurus and abstract thinking of the players and hence is an important learning tool. The project aims to use Speech-Dispatcher to spell out words so that students can also learn correct pronunciation. They would also be able to learn new words by using the dictionary lookup feature, and proposed integration with Listen and Spell
Future versions of the game can also use speech recognition software so that the student has to spell the formed word as well to get the points.

Usage Scenarios

Team would be of 2 players
The game would be designed with these usage scenarios in mind:

Player/team vs cpu ( easy, medium, hard )
Player/team vs player/team
Player/team vs player/team with spectators (small number)
Community / tourney matches

A sample run:
Student would open the activity. The game would open the welcome screen, with following options:

  1. New Game - Creates a new gave against AI
  2. Multiplayer single opponent - Game against human
  3. Multiplayer team vs AI- Team Game against AI
  4. Multiplayer team vs Team- Team Game against another Team
  5. Spectate - opens the spectator window. It would list currently running games and the student can join if open.(i.e. flagged public)
  6. Replay - The game would give option to load a previously recorded game.

Features

All features which aren't marked optional are mandatory.

Speech Integration

The game will speak out formed words. However, controls would be implemented so that children belonging to higher age group wouldn't have to listen to every word being pronounced again and again.
Also, the game would keep tabs on words which have been already pronounced a set number of times. These words won't be spoken again.

The repetition value would be depended on the age of the child. with more repetition for smaller age group.

The game would maintain a list of don't-pronounce words which are marked by student. Controls will be implemented in accordance to age group division which would go hand-in-hand with levels divided dictionary.

6-8 : all words would be spelled.
8-10: level 1 (words with less than 3 letters) won't be pronounced.
10-12: level 1, 2(words with less than 5 letters) won't be pronounced.
12-14: level 1,2,3( words with less than 6 letters) won't be pronounced.

Dictionary Lookup

A list of already played words would also be included, which when selected would also be spoken out, and would also be linked to the dictionary. This will help the child to learn new words as they encounter.

Integration with Listen and Spell( Optional )

The new words a child encounters in the game would automatically be referred to the Listen and Spell Activity. The Listen and Spell activity would then give more preference to these new words, enabling quick learning.

Hinting System

Children would be given hints which would carry a small penalty; the idea is to improve thesaurus of the child.

Multiplayer

Multiplayer support and spectator modes will be included.
Chat would be included too.
Games can be flagged Private and Public, so as to control their visibility on the mesh.

Team Play ( Optional )

team Play can be implemented in two ways

  1. Team player A would make a move. The game board would update and highlight the move and the dominant player can choose to veto or accept it. The issue can be discussed over chat.
  2. It can also be turn based. In this, player A would make move, while other player would watch. Then ,they would swap after opposition turn.
    Team chat would be disabled in this mode.

Community Hinting ( Optional )

Same as team play method (1), but this would be an option. This option would carry a small penalty.

  • The game would randomly select a spectator, or
  • The player can select a spectator from spectator list and select “hint me” option.

Multiple Undo

The game will provide multiple undo levels when the student plays against the computer. This will improve pattern finding ability.

game features

AI

  • The A.I. I have chosen to implement would be the Crab by Andrew W Appel and Guy J Jacobson. This research paper is the fastest implementation of scrabble algorithm which should run easily on XO laptops, and has enough power to pose a suitable challenge to children.

The paper is located here. http://www.gtoal.com/wordgames/jacobson+appel/aj.pdf

Keeping tabs

  • (Optional)Scoring would use local currency. This would help the child learn about the local currency system.
  • The game would enter a record in the journal if the game time is more than 5 minutes.
  • The game would be recorded move by move to a file. It can be played at a later stage.
  • High scores would be recorded in Journal

(OPTIONAL) The game would include a list of top 10 highest scores it has encountered over the mesh (multiplayer gaming ) according to the age group.

Coolness factor

  • The game would use simple animations like blinking, zooming out while rotating, victory sounds etc to keep children entertained.

Voice Configuration ( Optional )

The student can edit voice configuration like volume, pitch, rate, language of the words and voice, gender of the voice etc.

Technical aspects

  • Speech-dispatcher: - The voicing would be done using speech dispatcher which would eventually be using espeak for synthesis. Espeak supports more than 30 international languages.

http://www.freebsoft.org/doc/speechd/speech-dispatcher_15.html#SEC57
it is as simple as
import speechd
client = speechd.SSIPClient('test')
client.set_output_module('festival')
client.set_language('en')
client.set_punctuation(speechd.PunctuationMode.SOME)
client.speak("Hello World!")
client.close()

Base code would be borrowed from TuxWordSmith (http://www.schoolforge.net/education-software/educational-games/tuxwordsmith), which is a python based scrabble implementation but with unicode support for multiple languages and character sets.
Glade will be used to create the basic outline of UI.

Pango would be used for rendering text to screen
(http://www.gtoal.com/wordgames/#foreignscrab) would be used to for creating the tileset for different languages. this will help in addressing localization issue.
  • Gstreamer lib would be used for sounds.
  • The game would use the customized dictionary which would be using word list from Words activity.The dictionary would use the 'SQlite' as the DB engine.The dictionary would have features like:
    • Level based: words divided into different levels according to number of letters
level division can be :
level 1 : words with less than 3 letters
level 2 : words with 3 to 5 letters
level 3 : words with 6 letters
level 4 : more than 6 letters

Its structure can be modeled as follows:

word
meaning
Usage
level

I have the idea in my mind that the dictionary can be in a separate file, which can either be accessed by applications ( like wordsmith ) for their use, or have an independent frontend to function as a stand alone dictionary.

  • History : The game would keep tabs on which letters the opponent used, and check if they have been originally used by the player or not. It would then suggest to Listen and Spell so that the child can learn these new words.

realizing the project

Deliverables

I understand the the project is quite vast. The proposal details are my vision as to what the final activity should look like. Hence, the project would have three deliverables:

1) UI with multiplayer mode and AI -- Essential and priority
2) Above with Team play, Thesaurus, Hinting and watching, multiple undo
3) Speech tools, community Hinting, Voice configuration.

And if time permits, i would try and write together a simple how to play scrabble tutorials, and other helpful documentations and links from across the net.