Inspiration

We all love video games and the University of Florida, so creating a game was really a no-brainer, especially considering the theme of this year's SwampHacks. Since this was the first hackathon for two thirds of our group, we thought it would be a great idea to pick a project that, while not exactly a traditional 'hack', would make us smile and sync up with our interests.

What it does

The game is designed as a 2-D side-scrolling platformer. The main character is an alligator, obviously called Albert. The object is to move along the map to the right and collect six--fellow UF fans will recognize that number--Oranges. There are two classes of enemies that will be slowing you down, Knights and Bulldogs (in no way linked to any other institutions, of course). These enemies can be killed with a projectile weapon either at a distance or up close. Upon death each enemy will drop one Flex Buck, the game's currency. The player can either choose to spend ten Flex Bucks to gain one Orange, or spend five in order to regain one of their three lives. Killing enemies and spending Flex Bucks is not the only way to win, as Oranges can be found in the environment. A skilled player could win without losing a single life or killing a single enemy!

How we built it

The game is built entirely in Python using the PyGame library. PyGame is an excellent wrapper built around the classic SDL library for Python, designed specifically for games. The menus were all built using the Tkinter framework, which is a standard GUI framework that ships with Python natively.

Timeline

  • First Hours: We did not know what we wanted to do until roughly an hour after the opening ceremony ended. We then spent time familiarizing ourselves with PyGame and Tkinter, as well as divvying up responsibilities.
  • End of Day One: We ended Day One with a collection of sprites we wanted to use, a framework of the gameplay design, and a program that displayed a static gator sprite on a background.
  • Day Two: We finished the project around 4 am on January 31st after working from around 10:00 that morning.

Challenges we ran into

One of our most difficult to resolve issues was how to allow the player to jump on/off the platforms. Compounded with our sleeplessness circa 2:30 in the morning, this proved very difficult to fix. We also had some trouble implementing an 'invincibility' timer, allowing the player to avoid getting destroyed by the enemies before they had any chance to react and save themselves.

Accomplishments that we're proud of

We are quite proud of our creation of a fully-fledged video game in under 36 hours, however simple it may be. We were impressed with how quickly we were able to be proficient in multiple frameworks, having never used them before. We are proud to have completed anything at all, given it was the first hackathon for two of our three group members.

What we learned

We certainly learned a lot over the course of this hack. This was the biggest project by far any of us had completed in Python, and one of the largest overall as well. Perhaps the most important knowledge we gained was when using Git. Each of us had used Git to keep track of solo projects, but learning how to use branches both locally and on the remote repository has given us a lot of confidence in our abilities to code as part of a team. Since none of us had used PyGame before, we went from complete novices to intermediate learners in just 36 hours, a feat unto itself. Several of us are interested in game development as a hobby or career, so this experience was invaluable in that way.

What's next for GCDC: Gator Comes to Defend College

If we decide to continue work on this hack, we are considering 5 main ideas:

  • Better and more aggressive enemy AI
  • More varied enemies (perhaps a Seminole) with more varied statistics
  • Better animations, particularly for the main character
  • Health bars for enemies to allow for multiple hits before death
  • Both local save files and web-based highscores, based around a time-to-complete paradigm (speedrunning)

Built With

Share this project:

Updates