Skip to content

TheLogicMaster/robot-recharge

Repository files navigation

Robot Recharge

A programming game where the goal is to guide a robot through various levels using programmatic controls.

Features

  • Multi-language programming support (PHP, Python, JavaScript, Lua, Ruby, BASIC, and Google Blockly)
  • Custom code editor
  • Cloud Saves
  • Tutorial Levels
  • Level fast-forwarding
  • UI Themes
  • Robotic Text to Speech for code debugging
  • Android Rewarded ads for level solutions

Links

Web Demo

Get it on Google Play

GameJolt Page

Screenshots

Technical Info

Utilized Libraries

Todo

  • Debug/step through mode
  • Tab to double-space functionality in editor
  • Make the UI not terrible
  • Mobile HTML custom keyboard (Or not if it's not worth it and just disable code editor on mobile browsers)
  • Code testing (JS code transformations, for instance)
  • Level editor
  • Prevent Firefox '/' quick search functionality
  • Robot customization
  • Make Robot.move(int) return distance traveled

Building

GitHub Actions

The github actions workflow for the project builds and packages the releases for each platform, in addition to deploying the web demo to the gh-pages branch, and the Android application to the Google Play Store.

Building From Source

Building the project requires several external libraries depending on which modules you want to build. Regardless of which platform you are building, the Android SDK is required to compile to project. To build without it, it would be necessary to comment out parts of settings.gradle and build.gradle at the project root. To enable debug mode (mostly logging) for the entire project, add debug=true to a local.properties file at the root for the project.

For the Desktop module, the respective JCEF library for your platform is required at <project>/Libraries/jcef/<linux64|win64|mac64> if you intend to use the Google Blockly functionality. To run without Blockly support, simply run the desktop:run gradle task. To run with Blockly, the JCEFDesktopLauncher class needs to be run specifically with the VM option: -Djava.library.path=<project>/Libraries/jcef/<platform>/:<project>/desktop/natives/<platform>. To package the desktop project, a JRE is needed at <project>/Libraries/jre/<platform> or the jrePath values need to be changed in <project>/desktop/build.gradle tasks, and not setting it should use the system default.

For the Android module, a Chaquopy key is required in the local.properties file. The normal Android building methods should work as long as the Android SDK is installed. Google Play Services need to be setup in addition to setting the AdMob IDs in the AndroidGameServies class.

For the HTML subproject, there aren't any additional dependencies. To run the game in a browser, run the html:superDev gradle task and open localhost:8080 in a browser. To package it, just run html:dist.

For IOS, it works, but requires the whole OSX setup and developer account for more than running on a test device. Blockly and text-to-speech aren't supported at present.

For GameJolt cloud support, a gameJoltKey from GameJolt needs to be set in the local.properties file.

Updating Blockly

To build and copy Blockly, run the updateBlockly task.

Updating JCEF

To update to a new JCEF release, download the platform assets from jcefbuild. The 6 native platform JARs in the release archives need to have their native libraries extracted to the desktop/natives directory with the existing format. The desktop/libs directory should have its contents updated from one of the new platform release archives. The Libraries/jcef directory needs to be updated using the archive bin/lib directories.