This is a typing game built with LibGDX, generated with gdx-liftoff using OpenJDK 21.0.2.
Users can play 30 levels of varying difficulty containing thousands of unique words, while competing for a spot on the leaderboard.
User, level and score data are all stored in a SQLite database.
Demo video: https://www.youtube.com/watch?v=1PN8l_tNcNQ
This project was generated with a template including simple application launchers and an ApplicationAdapter
extension that draws libGDX logo.
- Install JDK 21
- Clone repository
- Open project in IntelliJ
- Run/Debug
Lwjgl3Launcher.java
- Alternatively configure as an application using OpenJDK 21, classpath =
group9.lwjgl3.main
and main method =com.cs2212group9.typinggame.lwjgl3.Lwjgl3Launcher
- Most pages are configured with hot-reload: use
Ctrl + F9
to recompile andCtrl + Shift + F5
to reload the page - To modify level generation, Python is required
- Run
./build.sh
to build the project with pre-existing user data - Run
./build.sh -f
to build the project with a fresh database - Alternatively, use
./build.bat
if bash not available - Both will build to
lwjgl3/build/libs/
, run the game withtyping-game-libgdx-x.x.x.jar
- using
./gradlew lwjgl3:jar
will build the project, but will not copy the database, so it will not work - Python is NOT required to build the project, but is used for level generation, Python 3.11 was used.
- Run tests by configuring
JUnit
in IntelliJ to run all in packagecom.cs2212group9.typinggame
- To log in as an instructor/admin, use the username
admin
. The password is the same as the username. - As an instructor, you see the same scoreboard as everyone else, but you have an additional search function.
- It allows you to search for users by username, and view their scores and number of attempts on each level.
core
: Main module with the application logic shared by all platforms.lwjgl3
: Primary desktop platform using LWJGL3.
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.build
: builds sources and archives of every project.cleanEclipse
: removes Eclipse project data.cleanIdea
: removes IntelliJ project data.clean
: removesbuild
folders, which store compiled classes and built archives.eclipse
: generates Eclipse project data.idea
: generates IntelliJ project data.lwjgl3:jar
: builds application's runnable jar, which can be found atlwjgl3/build/lib
.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.
- Libraries used:
- libGDX 1.12.1
- sqlite-jdbc 3.45.1.0
- junit-jupiter-api 5.10.2
- slf4j-api 2.0.12
- slf4j-simple 2.0.12
- bouncycastle 1.77
- Images:
- level and score screen background freepik
- login screen freepik
- game screen freepik
- explosion(s) by Sinestesia
- asteroids by Wenrexa
- app icon from opengameart
- Audio:
- sound effects (e.g. explosion sounds) from Kenney
- main menu music by lasercheese
- game music 1: mammoth by congusbongus
- game music 2: action synth track by PetterTheSturgeon
- game music 3: deus ex tempus by Trevor Lentz
- game music 4: last knight of the cyberdeath PetterTheSturgeon
- game music 5: magic space by CodeManu
- level and score screen music: space echo by Centurion_of_war
- Misc:
- libgdx-multiplayer-authentication-flow used with permission from szsascha
- explosion animation based off of libgdx-2d-tutorial
- setup generated using gdx-liftoff
- English word list from google-10000-english
- Some additional words generated by ChatGPT, see the Python file for more details
- SQLite DB Browser
- LibGDX skins from czyzby