An early level. A sign on the right, and the exit to the left, with The Guy in the center.
The Guy landing after flying through that spike section aka the rest of the level.
The Guy launching straight into a wall with a shotgun.
Template for the running animation of The Guy
Final spritesheet for the player
Mockup for the animations for the player
Background of the levels and title
Level design concept from a friend (a joke, we put it in anyway)
Empty testbed with debug rendering used early on
Template for level testing
Screencap from the stream
Inspiration was taken from a few places, one of which was my (Tyler's) personal favorite game, Celeste, which is another 2D platformer. Warren took some inspiration for the feel of the physics from the Source engine. The pirate theme came from Taro, who, when we asked for music, said he'd make a sea shanty. The name is more of an inside joke.
What it does
Hyacinth 0.2 is a 2D platformer game. You are a pirate, and you have a gun. Shooting that gun sends you in the opposite direction. It's a simple concept, but it works pretty nicely!
How we built it
The entire physics engine comes from box2d, a library that does all the physics stuff for us (for the most part). Libgdx deals with the graphics and inputs. The two work together nicely for our purposes (libgdx offers box2d as a module of itself).
The levels are created in Tiled, a tile-based level designing program. The
.tmx files it gives us can be conveniently given to Libgdx, which can then break it up into tiles (each of which we can give a box2d body!).
Warren Funk and Tyler Hempe did the programming, Sam Taylor worked on most of the art (Tyler Hempe did some textures), Taro Sharkey made the music and SFX.
Challenges we ran into
Neither of us programmers had used Libgdx before this project, and only one has made a large-scale Java project in the past. There was a lot of unexpected learning over the past 36 hours. The detection for jumping broke about 3 times in the past day for hours at a time. I think it's the part of the program that broke the absolute most. This is everyone on our team's first hackathon, so we had to get our bearings at the very start. And I'd say that we got into the groove of things pretty fast, in retrospect.
Accomplishments that we're proud of
Tyler - Some weapons fire multiple bullets at once (actually it's only the shotgun (but it doesn't have to be!)). Since the weapons have spread, I wanted that spread to actually matter. So each individual bullet gets a direction, and then pushes the player back in that direction, which is all summed up into one force vector. I honestly love how unnecessary it is, since it hardly impacts gameplay. But just taking the force of a bullet and multiplying it by the bullet count felt wrong, especially since I intended to give the bullets random spread. I'm also happy with the collision with the signs and the end, especially because it wasn't breaking every 10 seconds (unlike jumping >:( )
Warren - Honestly just the fact that Git and Gradle both didn't break and cause issues. First time using both for a project this big. Also I like how I synced the idle animation to the beat of the music. He kinda funky. I also streamed the entire thing on Twitch and a couple people hopped in, that was pretty cool.
What we learned
Tyler - Well, as my first big java project, keeping things organized is definitely a skill I'll need, though I won't say that this is the most organized project. Still a bit spaghetti-like. Also I haven't really used libraries that much before, so using one hands-on like this is always nice.
Warren - This was my first Java project in a while and apparently they've been adding things to the language the past couple of years? Pretty cool. First graphical thing in a while too and I'm glad to return to something like this (Hyacinth 1 was originally a networked FPS I developed in Sophomore year).
What's next for Hyacinth 0.2
Tyler - If I continued working on this, I'd likely add some sort of collectable to add a bit more depth to the game. Maybe a key? I was definitely struggling with level design by the end.
Warren - Polishing. Proper lighting and particle effects would be nice, maybe a better background that just that blue, maybe even animated glimmer on the background. There's a lot to do and I do feel like I'll come back to this project. The buttons could also probably be placed better too. Maybe don't hardcode scaling that might be a good idea. Just maybe tho. Also movement canceling like counterstrike.