📜 ⬆️ ⬇️

Creating an application for brain training. Choice of technology and gamification techniques

In this article I will try to talk about the experience of searching for cross-platform technology for the implementation of a hobby project dedicated to brain training and some techniques for its gamification.


Several years ago, I had to make a small site with a set of exercises, and after a while the thought arose: to transfer the idea of ​​pumping a character from the games to exercises, so that the player would pump his cognitive skills.


And until the idea fully matured, the process of finding technologies for implementing version 2.0 of the site began, plus there was an interest in learning new technologies and languages.


Technology selection


In order that the result could be used by as many people as possible, but at the same time minimizing the development time, I wanted the simplest cross-platform solution (web / mobile applications). When choosing the same language, preference was given to functional.
Since I have a .net main profile, one of the obvious choices was


Unity


The main advantages



As a language, use F # in conjunction with the UniRX library to apply the reactive approach. The first experience left a positive impression, but at that time there was a big minus with the web version - the need to install a plugin. And although it was already an experimental compilation method in html5, the implementation was still raw. And as far as I know at the moment with this approach there are still a number of problems.


Cordova


The second option is to use js in conjunction with Cordova. The main advantage of Cordova is simplicity. Packed html with js - that's the finished mobile application. But the main disadvantage is the lack of nativeness on mobile devices. Writing something less complicated on js is not the most pleasant thing, so you need an alternative compiling to js, ​​since the choice is quite large. From tested languages ​​I want to highlight


Elm, F # (WebSharper / Fable) are good, quite working options, but for me the main disadvantage is a simpler type system compared to other available languages.


PureScript is a very interesting language, there is everything you need for full functional programming - cleanliness, classes of types. The main disadvantage is that the language is still young and is in beta. As a result - a small community, poor support for code editors. When translating a pure language with default kerrirovanie in js it turns out not quite optimal code, which becomes noticeable on weak mobile devices.
If these problems go to the release, you get one of the best options for php language to replace js.


Scala (scala.js) - although not as beautiful and concise as PureScript, it takes more adequately generated js code + there is a full-fledged IDE represented by IntelliJ IDEA. All of them tried languages, this option left the most positive impression, so it was decided to continue to use it.


React Native (winner)


Although the code is written the same way on js, but unlike Cordova, the interface is native. For scala.js, React Native support has been implemented in the sri libraries. With all the roughness and pitfalls, React Native left a very positive impression. In the process of implementation, in most cases, everything just worked, both on the android and in the browser (for the web version, the react-native-web library was used).


Of course, the choice of technology for the project’s hobby is different from the choice for commercial development, but I think the React Native + scala.js bundle is not a bad option and I’ll dwell on it until something more interesting appears.


Gamification


Initially, experiments were conducted with a kind of reverse gamification. If gamification is the introduction of game elements in a non-game context. That can be called the reverse process of the introduction of non-game elements in the game context. For example, classic games were implemented (runner, snake, dungeon crawler) and non-game elements were introduced into them in the form of solutions to simple cognitive tasks. Although the experience turned out to be interesting, but in the final version it was still decided to shift the emphasis on the exercises, and for this the classical gamification with progress bars and badges is more suitable.


The goal of gamification was to offer the player additional motivation for training to the existing internal one.


Usually give examples of human needs that can be used for this, for example such as:



In the first version of the site has already used the option with the rivalry. With the help of the competition system and leagues. But the implementation used parse.com and sunk into oblivion along with the closure of the service.


And since the original idea was with pumping, the need for development was taken as the basis.


I would like to highlight several used mechanics.


Gradation of difficulty
Each exercise is divided into levels, this achieves both the smoothness of the process of complicating the training and gives room for the use of other mechanics.


Feeling of progress
In the process of training, the player fills the progress scale of the current level, while the better the results the faster the progress.


Goal setting
When 100% progress is reached, the level-up mode opens, where the player is set a goal to pass a kind of exam to go to the next level.


Feedback
In the process of passing the exercises, the beep of the answer varies according to which one can understand how well the player is doing the exercise relative to his previous results.


Overcoming complexity
It would be nice to periodically put a player in front of the player, for this there is a test mode in which an exercise is randomly generated and one attempt is given to complete.


Flow
The state of the flow is achieved by the optimal ratio of the complexity of the task and the skill of the person. Upon entering this zone, a state of optimal psychological experience arises. You can illustrate it this way.



On the basis of this idea, the Speed ​​mode was implemented - in which the time for a response is gradually adjusted to the player's answers, thereby at the expense of a smooth increase in complexity, an attempt is being made to bring the player into this zone.


The result can be tested on yourself. Will appreciate any feedback.


')

Source: https://habr.com/ru/post/327300/


All Articles