From KDE Community Wiki
< GSoC‎ | 2020‎ | StatusReports
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

GCompris: Multiple Datasets

Project Overview

GCompris has been working on adding multiple datasets to make the difficulty range of activities wider. This way the same activity can be easily configured to be played by pupils of different ages or capabilities. and in this GSoC, I am taking forward my SoK work and adding multiple datasets to some more activities.


Milestones Achieved

Adding multiple datasets to Sudoku Activity

In this activity, pupils have to solve sudokus of different sizes and difficulty levels. Previously activity had 13 levels out of which 7 levels work with symbols and rest 6 uses numbers.

I have added multiple datasets features in this activity as described in the below task description link. Luckily, the implementation went smoothly for me without any unexpected behavior or bug.
Later I spend a lot of time testing all the levels and also asked my family members for user testing.

Presentation of multiple datasets in Sudoku activity

Link to the task description:

Link to the branch:

Adding multiple datasets to Share pieces of candy Activity

As the name suggests, in this activity pupils have to equally distribute candies between their friends. We initially planned to have only 2 datasets in the activity, in a first type, it is always possible to distribute all the candies among friends while there will be some extra candies left in second.
Later, we decided to have a third dataset too specifically for random levels to make numbers of candies and friends unpredictable.
The activity has lots of strings as instruction which are very much prone to errors, I gave special attention to instruction while updating each level's content. To make sure that they sync with the other keys.

Backend view of multiple datasets

Link to task description:

Link to the branch:

Adding multiple datasets to Locate the region Activity

Pupils have to drag and drop different regions on the maps of the country. The activity had 16 mixed levels of different countries.

I have added multiple datasets in the activity to categorize those levels continent wise. Implementation for the activity is quite straight forward, As It inherits the code from babymatch activity. So, just making the boolean property "useMultipleDataset" = true and adding dataset files worked in this case.
Levels for this activity are defined in external files called "boards" such that each level corresponds to one board. Writing whole data of a level/board in a dataset file can make it very long and messy so we found it is better to add only board's links in the datasets.

Multiple dataset of Geocountry activity

Link to the task description:

Link to the branch:

Adding multiple datasets to Categorizations Activity

In Categorization, pupils have to identify and categorize elements into correct and incorrect groups.

I have added multiple datasets in the activity, ported previous configuration options to the new Activity Config while taking care of the "Download missing Image" dialog box, So it was a challenging task to deal with all of them together.

Link to task description:

Link to the branch:

Adding multiple datasets to Gnumch Equality and Inequality Activity

Activities are little bit similar to the game Pacman with the purpose of teaching addition, multiplication, division, and subtraction.

Gnumch Equality and Gnumch Inequality are two activities that use the same code. So I worked on both of them together. I added datasets to these two activities while making sure to not break other activities which inherits Gnumch. I also extended these activities functionality from addition and subtraction to support multiplication and division levels too.
There was a bug in the activity, It's starting from level 2 instead of 1. I also spend time in tracking the source of this bug and fixed it.

Multiple datasets in Gnumch equality

Link to task description:

Link to the Merge Request:

Adding multiple datasets to Crane Activity

The activity goal is to teach motor-coordination. It had 16 levels mixed with words and images.

I categorized these levels in different datasets depends on whether level is based on images or words of the same lengths. In this activity, We do not need an exact translation for words, just replacing a word with the other same length word would be enough. So, I have only added the key "wordLength" in the dataset and keep the word lists in javascript file only for translators. Also, code has the functionality to use words given by datasets for that anyone has to replace a key "wordLength" with key "word": "cat". This feature has been implemented after taking account the future use case of Gcompris with server mode. Images URL lists are still there in dataset file like any other activity.

Working demo of build the same model activity

Link to task description:

Link to the Merge Request:

Adding multiple datasets to Find the details Activity

The activity is about to locate and place small part of an image on its larger version. Activity had 21 levels mixed with paintings, simple photographs, and complex photographs.

I have added three datasets to categorize them according to difficulty levels. This activity is also a child activity of babymatch, so implementation was straight forward. I do not need to deal with javascript, simply adding datasets file works for me.
Datasets for this activity looks same as datasets to locate the region activity.

Link to task description:

Link to the Merge Request:

Link to the Blogs

Link to the proposal

Proposal: link

About me