/ground-climber

A level-based and procedurally-generated physics-based using Box2D platforming game created in LibGDX

Primary LanguageJava

ground-climber

This is a 2-D platforming game based around the LibGDX framework and using Box2D for the physics engine. You are required to move a bouncing ball across multiple levels to reach the goal, however, you must maintain bounce as moving to a higher platform you will lose bounce and gain bounce moving to a lower platform.

Platform Targets and Control Schemes

  • The game targets desktop using an OpenGL context and simply using A and D on the keyboard for movement.
  • The static webapp version also uses the same control scheme as desktop, this can be hosted on a local server, or accessed via ground-climber where the main branch is automatically deployed to an Azure Static Webapp.
  • There also is an android version, the control scheme here relies on the accelerometer/touch so therefore A and D are then effectively mapped to the tilt of the device/touch zones on the left and right side of the screen.

Modules

  • core: Main module with the application logic shared by all platforms.
  • lwjgl3: Primary desktop platform using LWJGL3.
  • android: Android mobile platform. Needs Android SDK.
  • html: Web platform using GWT and WebGL. Supports only Java projects.

Gradle

This project uses Gradle to manage dependencies. The Gradle wrapper was included, so you can run Gradle tasks using gradlew.bat or ./gradlew commands. Useful Gradle tasks and flags:

  • --continue: when using this flag, errors will not stop the tasks from running.
  • --daemon: thanks to this flag, Gradle daemon will be used to run chosen tasks.
  • --offline: when using this flag, cached dependency archives will be used.
  • --refresh-dependencies: this flag forces validation of all dependencies. Useful for snapshot versions.
  • android:lint: performs Android project validation.
  • build: builds sources and archives of every project.
  • cleanEclipse: removes Eclipse project data.
  • cleanIdea: removes IntelliJ project data.
  • clean: removes build folders, which store compiled classes and built archives.
  • eclipse: generates Eclipse project data.
  • html:dist: compiles GWT sources. The compiled application can be found at html/build/dist: you can use any HTTP server to deploy it.
  • html:superDev: compiles GWT sources and runs the application in SuperDev mode. It will be available at localhost:8080/html. Use only during development.
  • idea: generates IntelliJ project data.
  • lwjgl3:jar: builds application's runnable jar, which can be found at lwjgl3/build/libs.
  • lwjgl3:run: starts the application.
  • test: runs unit tests (if any).

Note that most tasks that are not specific to a single project can be run with name: prefix, where the name should be replaced with the ID of a specific project. For example, core:clean removes build folder only from the core project.