Hello! After a long time, my first real game in Java is complete!I really couldn't have done it without this fantastic forum, which answered all of my stupid questions!I just kept adding features so I could learn more about making a game in Java2D.

The game is a mix of Temple Run and Mega Man, two games that I thought would blend pretty well.

When someone quits the game, make sure that you kill all the music and sound threads by closing them so they don't continue playing when you quit. Other than that, it is pretty solid and a bit challenging in the later levels.

Shadow under the character that changes dynamically when jumping (you can just use a shrinking black circle).

Make the game harder but remove losing life when enemies are not killed.

Perhaps some abilities, like a psionic shield that blocks X bullets (with a new ammunition system for it, maybe cooldown based).

Q: How did you make the planets?

Yes, the game is not perfectly polished. At a certain point I just wanted to finish it! But yes all of your criticism is valid. I'll think these things through much harder with my next game.

Also, the planets were pretty flipping hard to execute, not gonna lie. They were something I knew I wanted from the beginning, but had a hard time implementing.

First things's first, I got the texture of the planets' surfaces online from real images of Mercator projections of the planet (except for Pluto, which had almost no resolution, and Uranus, who's color was too homogenous). Then I load all the colors from this image into an array of colors. Then, through a magic equation that I will discuss in a second, I calculate all the vertex points of the tiny quadrilaterals, then feed those points into an array of polygons and then draw all the polygons.

That magic equation I was talking about does not produce a real sphere, just a shape that looks like one when when the top is observed. The equation behind the coordinates of a sphere are long and very expensive. Instead, I just constructed my own through trial and error and variable-tweaking. I think what I did is define the x and y coordinates using the imaginary angle from the center of the planet and the column. I think I added some sine curvature in a few places to make is seem more rounded through cheap means.

When someone quits the game, make sure that you kill all the music and sound threads by closing them so they don't continue playing when you quit. Other than that, it is pretty solid and a bit challenging in the later levels.

Thanks! The level's aren't "generated" so much as "designed." I toyed with the idea of random level generation, but I realized that manually designing them is way easier and would produce better results. My method of loading levels is not particularly unique. I would make a .PNG of the level plan, with each pixel being a tile. For example, black pixels were empty spaces, white pixels were floor tiles, red tiles were hearts, brown tiles were standard spiders and so on. After I made all of the levels like this in MS Paint, I loaded them up as BufferedImages and got the array of colors, then loaded the levels accordingly.