Skip to content
Maurycyt edited this page Nov 30, 2022 · 1 revision

IdLearn - learn algorithms through an idle game!

Game description and the actual product

IdLearn is:

  • an idle game,
  • a platform for learning basic algorithmics.

The game's objective is to make learning the basics of algorithmics fun by enriching the process with the core part of idle games - the reward system, which prompts users to play more and more. In the process, users get hooked on algorithmics, which is a great thing!

Target userbase

The game is aimed for children and beginners in programming and algorithmics.

Algorithmic tasks

The process of performing algorithmic tasks consists of:

  • choosing a task from the set of available tasks,
  • constructing an algorithm from available components in IdLang,
  • submitting your algorithm for said task,
  • receiving feedback on the correctness of the submission,
  • gaining points.

You can also opt to manually type the expected output for a given task, which is discouraged.

The language - IdLang

IdLang:

  • is an imperative visual programming language,
  • is available through a drag-and-drop graphical interface,
  • just like building with LEGO - you can link and nest commands together in almost any way!
  • consists of the following components:
    • integer variables,
    • assignment,
    • conditional expression,
    • loops,
    • arithmetic operations,
    • logical operations,
    • input and output functions.

Gaining points

Following the idle/clicker model, there are two main ways to earn points:

  • The first (basic one) is performing a simple, repetitive task, typically clicking. In our case it's manually typing the expected output for a given input and task.
  • The more sophisticated way - automatic point generation. In the case of clicker games this usually involves an entity that can be acquired with the in-game currency. In Idlearn, what serves this role are the user's algorithmic solutions which run on continuously generated tests.

Generating points from the tasks and acquiring more tasks is the primary objective of the game.

The in-game store

The in-game store will most likely offer not only more tasks, but also:

  • points-per-test bonuses,
  • speed increments for automatic point generation,
  • higher memory limits,
  • task hints.

Tracking progress

It would be ideal for the user to be able to track their progress in more ways than just looking at their point budget or completed tasks. What would aid in tracking progress and may be implemented:

  • an achievement system,
  • a leaderboard,
  • a user stats section: with data such as their tries, number of completed tasks, etc.

Tools used in this project

  • Java 17,
  • JavaFX,
  • Maven,
  • JUnit,
  • possibly others.

Inspirations:

  • the design of SIO2 "task packages" and automatic testing,
  • Human Resource Machine,
  • the Scratch language by MIT.

Minimum Viable Product

The game's most primitive yet functional form consists of:

  1. IdLang
  2. One algorithmic task
    • some easy tests,
    • a text input box (for manually typing expected task output).
  3. An interactive graphical layout
    • greeting message,
    • main menu,
    • choice of (1) task.
  4. Point system
    • earning points for the 1 task,
    • display of the total amount of points.