Transient
A 2D platformer I made from scratch in Java in 2019. Fair warning, it isn’t easy! You can play it right here in your browser, or download it to play on your computer.

Play in browser · about 40 MB
Runs in your browser, no install. Built with CheerpJ.
How it plays
You’ve got a bow, a sword, and a timer that’s always running. Your goal is to reach the portal before time runs out, and your score depends on how fast you were, how much damage you took, and how many gems and enemies you collected along the way.
Most of the fun is in the moveset. Strong shots hit harder but take longer to draw, and quick shots only work in midair. Your sword has light, medium, and heavy attacks, and each one is slower and stronger than the last. The flash step is a dash that makes you invulnerable while it lasts, and if you time it right with a glide, you can reach places you otherwise couldn’t.
Four levels
- Level 1, Cavern Chaos. Full of secret passages, with gems hidden behind them.
- Level 2. This one is mostly about fighting.
- Level 3. This is the hard one! You can only finish it by using the advanced movement tricks.
- Bonus. No enemies, just falling targets to shoot. Once you hit the last one, the exit portal appears.
Controls
It’s keyboard-only. In the menus, use the arrow keys, Enter, and Backspace. In the browser player, press Tab to leave the game and get back to the rest of the page.
- Move
- ←→
- Jump
- Space
- Glide
- Ctrl
- Flash step
- Shift
- Sword: light, medium, heavy
- ASD
- Quick shot (midair)
- Q
- Strong shot
- W
Under the hood
Everything is written in plain Java using Swing and AWT. A small state manager switches between fifteen different screens, from the save select to the game-over screen. Each level is a tile map stored as a CSV file, with separate layers for what you see, what you collide with, and the secret areas. The music is MP3, decoded with the JavaZoom libraries, and four save slots each keep a high score for every level.
The hero and slime sprites (the ones you’ll spot around this site, too) are based on rvros’s free Animated Pixel Adventurer and Animated Pixel Slime. Thanks, rvros!
Running it
The player above runs the original game JAR right in your browser using CheerpJ, which is a Java runtime compiled to WebAssembly. The only change is a small fix to a sound-effect loop that hangs in the web runtime. If you’d rather run it on your computer:
- Download the zip and extract the whole folder.
- Double-click
TRANSIENT.jar. The first load takes about ten seconds. - Keep the .jar inside its folder, since it loads the levels and music from there. If you want to launch it from somewhere else, make a shortcut instead.
I left my own save file in there, so see if you can beat my score!