Game made for 1-bit jam #3.
Music tracks and sounds effects are made by nicole starlight:
Planned to be a mixture of beat 'em up and bullet hell scroll shooter. Ended up just as a scroll shooter, but it is fine.
Jam theme is "transformation", and I am going to interpret it without any creativity in mind: the main character can transform (kinda, a bit).
Tools used:
Licenses:
- all the code is covered by GPL-3.0 license (see LICENSE-CODE)
- all non-code assets, such as visual and audio resources, are covered by CC-BY-4.0 license ( see LICENSE-ASSETS)
Section | Dirty | Clean | Music | SFX | Art |
---|---|---|---|---|---|
Intro | 100 | 0 | 100 | 100 | 10 |
Title | 100 | 10 | 100 | 0 | 10 |
Tutorial | 100 | 100 | 100 | 100 | 100 |
Stage 1 | 100 | 80 | 100 | 100 | 40 |
Boss 1 | 100 | 80 | 100 | 100 | 40 |
Stage 2 | 100 | 50 | 100 | 100 | 0 |
Boss 2 | 100 | 50 | 100 | 100 | 0 |
Stage 3 | 100 | 0 | 100 | 100 | 0 |
Final boss | 100 | 0 | 100 | 100 | 20 |
Game over | 100 | 0 | 100 | 0 | 0 |
Outro | 100 | 0 | 100 | 0 | 10 |
Day | Date | Wkdy | MAX | Plan | Spnt | Done |
---|---|---|---|---|---|---|
1 | 04/04/2024 | THU | 1-2 | 1 | Conceptualized the game | |
2 | 05/04/2024 | FRI | 1-2 | 1 | Explored the math of colliding function graphs a bit, decided to make everything as simple as possible (only use linear frame-time collision) | |
3 | 06/04/2024 | SAT | 1-2 | Init repo, create the plan | 2 | As planned + basic playable character + shooting |
4 | 07/04/2024 | SUN | 4-6 | Basic shmup character and controls (move, shoot, bomb, shield), basic moving enemy | 2 | Fixed shooting, enemies that shoots back at controllable trajectory |
5 | 08/04/2024 | MON | 4-6 | Character shoots, enemy shoots bullets (t -> vec2), collisions, upgrades | 3 | Basic collision checks, some refactorings, power ups, death and bombs |
6 | 09/04/2024 | TUE | 4-6 | Start screen, intro sequence (add some story), shape and shot upgrades | 3 | Changing plans, create artist's build with overridable resources, added dummy intro and title screens, ship shape upgrades, organized assets |
7 | 10/04/2024 | WED | 4-6 | First stage of ruined city, enemy shooting patterns, enemy scheduling | 5 | Level scripting, tutorial sequence, some refactorings, runtime render mode via shader |
8 | 11/04/2024 | THU | 4-6 | Expand the scheduling engine (add enemies and shooting patterns, template moving patterns) | 8 | Pause and auto-pause, music playback from level script, music for stages 1 and 2, refactorings, testing animated upgrades, refined tutorial and start screens, added some city environment, refactored and declared some shooting patterns, completed the game flow (though transitions are missing), a bunch of fixes |
9 | 12/04/2024 | FRI | 4-6 | Finish the scheduling engine | 5 | Finished (not really) scheduling engine, refined power-ups, enemies and bombs |
10 | 13/04/2024 | SAT | 4-6 | Layout the first stage | 5 | Fixed a nasty shader bug, advancing the level engine, simplified describing shooting patterns, layout for a part of the 1st stage, finished the tutorial |
11 | 14/04/2024 | SUN | 4-6 | Layout enemy schedule on all three stages, simplified bosses for 1-st and 2-nd stages | 4 | Tempo sync in level engine and shooting patterns, made half of level 1, but it should be easy from now on; prepared the rhythm for level 2 and 3; basic HUD; easy mode; fade effects for game screen |
12 | 15/04/2024 | MON | 3-4 | Finish player movements, complete the tutorial | 4 | Tempo sync in player shots, mapped in-game sounds, removed animated assets for consistency, added the lance strike (finally!), shield upgrade, completed the tutorial (this time for sure) |
13 | 16/04/2024 | TUE | 1-2 | Finish level 1 | 4 | Intro transitions, draft intro sequence, finished level 1, debugging level 1 boss |
14 | 17/04/2024 | WED | 1-2 | Level 1 boss | 2 | Finished level 1 + a bunch of random stuff |
15 | 18/04/2024 | THU | 3-4 | Level 2 + boss | 4 | Drafted level 2 and outro + a lot of stuff |
16 | 19/04/2024 | FRI | 6-8 | Finish level 2 + boss, finish level 3 + final boss, work out environment backgrounds | 6 | Added lasers, half-done level 3, added some ideas for the final boss, added basic backgrounds for levels 2 and 3, refactored collision checks |
17 | 20/04/2024 | SAT | 3-4 | Final touches, environment art, intro/outro art, submission at 16:00 | 6 | Huge mess for the final boss |
- Level 3 + boss
- transitions between menu screens
- menu sounds and selection effects
- touch controls (for playing from phones)
- level environments (lightning strikes, background/foreground objects, etc.)
Next section was generated by gdx-liftoff, leaving it as is since it has some useful stuff.
A libGDX project generated with gdx-liftoff.
This project was generated with a Kotlin project template that includes Kotlin application launchers and KTX utilities.
core
: Main module with the application logic shared by all platforms.lwjgl3
: Primary desktop platform using LWJGL3.teavm
: Experimental web platform using TeaVM and WebGL.
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.teavm:build
: builds the JavaScript application into the build/dist/webapp folder.teavm:run
: serves the JavaScript application at http://localhost:8080 via a local Jetty server.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.