On one hand, Aquinium ( is an online environment filled with intelligence games for people to train and sharpen their cognitive skills, whilst on the other, it is a powerful tool that helps gather scientific data in a controlled environment to facilitate research on individual magnitude estimation, wisdom of crowds, and decision making processes relating to trade on beliefs.

All games at Aquinium simulate the process of forming estimates about things of value using signals, and trading based on the subjective beliefs formed; players offer to sell or to buy goods given their estimates and earn virtual funds based on their accuracy.

Members can either play against each other, with online users being matched by the software algorithm developed by Sloboda Studio, or play against AI agents, who base their estimates on the AQ model of judgment developed by Ulrik W. Nash, Ph.D.

Ulrik W. Nash PhD, Denmark
I have been very pleased with Sloboda Studio. On the surface, the idea behind Aquinium looks simple; invite people to make judgments about things depicted in uploaded images, and get them to trade with each other, or with AI agents, based on differences of opinions about these things. On further examination, however, numerous key problems become obvious. Most importantly, players need to be uniquely matched with each other, and with images, and this must happen quickly. Also, the solution needs to be robust to numerous contingencies to avoid compromising the data gathered for my scientific inquiry. Finally, the solution must fulfill that requirement, while being highly scalable to accommodate the loads created by many people playing simultaneously.

I think Sloboda Studio has solved this problem well, given the actual examinations I have performed until now. Moreover, based on Sloboda Studio’s own examination of load testing using bots, they inform me the system can accommodate many more than those 80 people I have had playing simultaneously so far. As for the service side of things, Sloboda Studio’s project management has quite simply exceeded my expectations. Well done to the team!

client’s goals

The main idea of the project was to create a game platform where players can compete based on their judgment accuracy, and subsequently trade virtual resources to gain positive or negative profits. The players compete against other people, and against AI agents, and they are rated based on their performance. They can invite their friends, compare their ratings, and see their progress visually using time series charts.

Keeping in mind the double application of the platform, Sloboda Studio needed to provide a user-friendly front-end, while ensuring great stability and accuracy of the game platform, to facilitate proper collection and processing of players’ statistics for research. Moreover, an extensively customized administrative area was needed to run highly customizable games or experiments.

our solutions

We wrote reliable scoring algorithms, paying attention to proper input and output data analysis. There will be a couple of game modes differentiating in the game process. But evaluations should be the same across each of the game modes in order to keep the data integrity and valid format for analysis. As we have to manipulate the data between users and store statistics according to data selected by users, we decided to implement WebSockets technology and use it in each game room by creating a channel for each pair of users and trigger actions according to the data they send. This approach proved itself to be much more effective than the alternatives, like long-polling.

For scores and game process calculations, we had to use advanced algorithms according to the client’s specification.

There are often situations in a game when a user leaves the game room unexpectedly, and in such cases, we needed to inform another user accordingly and prompt him to start another game. The current game session should be destroyed, as the data cannot be used for further analysis. We solved this problem successfully.

Another challenge was to make the application as scalable as possible in order to maintain at least 500 game rooms, which results in 1000 players online, and playing simultaneously. During the stage of project planning, we noticed that this project requires proper and complex DB structure for storing relations between users and computer users, games statistics, making the analysis and exporting the results as simply as possible. Therefore, we produced a highly organized DB with complex relations and dependencies. After that, the platform passed load-testing successfully.

For exporting and importing data, we decided to apply two approaches. First, we used ActiveAdmin as the admin side view. Second, we used CSV to batch import images. We developed a powerful, highly customized and detailed admin panel that not only has usual features, like downloading pictures of goods, but gives the administrators and researchers unlimited possibilities to create a game with practically any desired parameters, like playing only against AI agents, or people, and setting the skills of AI Agents. Indeed, as previously stated, the admin environment makes the platform a controlled environment for the research.

Working with the project that uses algorithms so heavily, we also faced integration challenges. We had to integrate the AQ algorithm for AI Agents into our Ruby project. We also integrated the Elo rating system known from chess. The ready-made module did not process player’ inputs properly on our platform, as initially, it used the Gem library. The integration of this standard module would require a cumbersome architecture. We therefore ultimately customized the existing module to ensure its smooth integration into our game platform.

project stages

1. Initial stage

Analysis of customer’s business model

Architecture planning

2. Improved MVP

250 users simultaneously

3. Private Beta

1000 users simultaneously


Google Charts
Tools (hosting, monitoring etc.)
New Relic


May 2016 Now


2 Back-end developers | 1 Front-end developer | 1 QA
Project Results

With the restructured architecture, the loading time has been reduced significantly. The number of user requests has increased 8-10-fold. Now the project is more scalable, with fewer lines of code. The platform has gained the necessary stability. In October 2016, we went live with Public Beta.

Contact the team, start like a rocket!