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.
- 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;
- it is updated with a custom shift from the last value:
- 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;
- options:
- 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;
- options:
- metrics:
- pause mode:
- stopping of updating:
- of the plots;
- of the game stats;
- stopping of updating:
- 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;
- dynamic width of the stats labels:
- drawing of the pause mode;
- support of resizing of the game window;
- game configuration:
- loading from a JSON file;
- validation via the JSON Schema.
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.
See for details: https://love2d.org/wiki/Getting_Started#Running_Games
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.
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 .
The MIT License (MIT)
Copyright © 2020-2021 thewizardplusplus