Skip to content

thewizardplusplus/pwm-simulator

Repository files navigation

PWM Simulator

2D puzzle game for Android inspired by pulse-width modulation and various side-scrolling games.

Disclaimer: this game was written directly on an Android smartphone with the QLua IDE and the LÖVE for Android app.

Features

  • plots:
    • they display functions of time (as in an oscilloscope);
    • they are initially initialized by the average value over the entire length;
    • random plot:
      • it is updated with a random shift from the last value;
      • it takes up three-quarters of the screen width;
    • custom plot:
      • it is updated with a custom shift from the last value:
        • custom shift can be positive (the plot grows);
        • custom shift can be negative (the plot shrinks);
      • it takes up half of the screen width;
    • custom source plot:
      • it is updated by either the minimal or maximal value;
      • it takes up half of the screen width;
    • configuration:
      • options:
        • speed of motion of the plots;
        • amount of plot points per screen;
        • coefficients:
          • of updation of the random plot;
          • of updation of the custom plot:
            • in the inactive mode;
            • in the active mode;
  • game stats:
    • metrics:
      • percentage of time when the distance between the random and custom plots was normal;
      • percentage of time when the distance between the random and custom plots fit within the soft limit;
      • percentage of time when the distance between the random and custom plots fit within the hard limit;
    • types:
      • current;
      • best;
    • storing the game stats in the FlatDB database:
      • regular saving with a certain period;
    • configuration:
      • options:
        • amount of points per screen for checking the distance between the random and custom plots;
        • limits of the distance between the random and custom plots:
          • soft limit;
          • hard limit;
        • period of saving of the game stats;
  • pause mode:
    • stopping of updating:
      • of the plots;
      • of the game stats;
  • drawing:
    • drawing of plot boundaries;
    • drawing of plots;
    • drawing of a type of distance between the random and custom plots:
      • normal distance;
      • distance that fits within the soft limit;
      • distance that fits within the hard limit;
    • drawing of the game stats:
      • dynamic width of the stats labels:
        • width is selected by the maximum of the current and best values;
      • delay of updating of the best stats:
        • update starts only after all initial values of the custom plot have left the screen;
    • drawing of the pause mode;
    • support of resizing of the game window;
  • game configuration:
    • loading from a JSON file;
    • validation via the JSON Schema.

Building

Clone this repository:

$ git clone https://github.com/thewizardplusplus/pwm-simulator.git
$ cd pwm-simulator

Build the game with the makelove tool:

$ makelove ( win64 | macos | appimage )

Take the required build from the corresponding subdirectory of the created builds directory.

Running

See for details: https://love2d.org/wiki/Getting_Started#Running_Games

On the Android

Clone this repository:

$ git clone https://github.com/thewizardplusplus/pwm-simulator.git
$ cd pwm-simulator

Make a ZIP archive containing it:

$ git archive --format zip --output pwm_simulator.zip HEAD

Change its extension from .zip to .love:

$ mv pwm_simulator.zip pwm_simulator.love

Transfer the resulting file to the Android device.

Open it with the LÖVE for Android app.

On the PC

Clone this repository:

$ git clone https://github.com/thewizardplusplus/pwm-simulator.git
$ cd pwm-simulator

Then run the game with the LÖVE engine:

$ love .

Documentation

  • Table of Contents (EN / RU):

License

The MIT License (MIT)

Copyright © 2020-2021 thewizardplusplus

About

2D puzzle game for Android inspired by pulse-width modulation and various side-scrolling games

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages