Inspiration

We were inspired by the creation of a website from the Web Developer workshop and originally we were going to create a mobile app that would scan the barcode of food items and suggest local and eco-friendly alternatives that have a lower carbon footprint.

However, after many hours and failed attempts, our inexperience made it very difficult to try and interact with the website and incorporate the appropriate APIs to make it communicate from front to back smoothly.

We then scrapped the idea and learned about pygame from the YouTube video “Getting Started in Pygame in 10 Minutes” by Coding with Russ. We wanted our game to have unique input from our team so we designed a game that had four levels, each created by one team member.

The original idea was to have it reset back at the first level when any level was lost, but we decided to make it points-based, so you could lose a level and proceed, but would miss out on points in turn. We built it using pygame and python, only using ChatGPT to tweak minor errors when the game wasn’t running or to make the code more concise, to make the game lag less.

What it does

There are 4 levels that continue into the next and calculate the total score based on each of the level’s scores. This allows players to compete with each other.
New Moon Exploration:
The goal of it is to collect the moon debris and explore the moon. The level moves as you go through with randomly spawning moon debris and platforms. The inspiration was the American moon expedition. The whole idea was to collect the moon debris to then study back on earth.

Taurus Meteor Shower Game: This game makes the player collect the 2 meteoroid streams using a telescope. The games periodically dims cyclically based on the moon cycle, and as the moon light brightens the meteoroids dim. The game also uses a Q learning table with 3 parameters: the learning rate, the discount factor, and the exploration rate in order to adaptively change the difficulty of the game using reinforcement learning based on the player’s performance. As the player performs better the meteoroids come down faster and more of them will be spawned.

Beaver Trap Maze:
The maze is a procedurally generated maze game that consists of a beaver sprite as the player and logs representing the walls. It is based on the beaver moon, which is the name given to the full moon that occurs in November. We chose this astral event for the maze game as it is November currently. Earlier in history, the Native Americans and American colonists trapped beavers during this time due to beavers being the most active at this time of year as they prepare for winter, and this maze represents the “trapped” beaver.

Asteroid Bullet Hell:
This game functions as an increasingly difficult bullet hell where you accumulate more points the longer you are able to stay alive. It is representative of the Taurid’s meteor shower and how a meteor has more debris attracted to it as it gets larger.

How we built it

We built it using Python and the pygame extension built into VS Studio. This allowed us to tweak our game and not have to write such complex functions as they were already defined in the pygame extension. We built each level separately by a team member, then combined all their functionality under a main() function that runs the entire game. The Q learning table used the python’s numpy library to operate.

Challenges we ran into

Our website idea didn’t work out, and we were unfamiliar with the python engine. Additionally, our games had many errors and it was difficult to seam all of the different levels into one complete game.

Taurids meteor shower: Implementing the adaptive difficulty was probably the hardest aspect since we needed to determine the influencing factors and change the output.

New moon exploration: In this game the 2 big challenges we ran into was the jumping mechanic and the randomly generated rocks scattered throughout the map. The rock's generation code would cause the collision to mess up causing the player to be able to pass through the platforms this alongside the jumping physics which wouldn't allow you jump like you were needing to collect the rocks took a while to fix but with some help with online tutorials we managed to get everything to function correctly.

For the Beaver Trap Maze Game, we ran into issues for making the logs in a uniformed maze-like appearance as the walls, but through the use of 2D arrays, we figured out the issue.

For the Asteroid Bullet Hell it was hard to program the bullets to come from all sides, so I then decided to have them target the player so it's more of a running game than dodging. Additionally, it was difficult to integrate moving from one level to the next after either a loss or completion. But this was eventually resolved.

Accomplishments that we're proud of

We’re proud that we were able to create a solid and working project for our first Hackathon with the little time and experience we had. The experience was valuable and the fact we were able to learn more about November astrological events is a good bonus from the whole experience.

What we learned

We’re proud that our game reflects the November 2024 astral calendar, and although a very beginner project, still represents the theme of this year’s HackNC, which is space. We learned that for the next Hackathon we attend, we need to be more versed in the type of coding we are interested in for our project as well as certain platforms like React.

We learned a lot of shortcuts and the overall functionality of python, as well as the mechanisms behind game development as this is our first game we created. The struggles we went through with the jumping physics and procedurally generated maze also helped us learn new things about python that we were quite not familiar with before.

What's next for Astral Journey

Overall, Astral Journey was created as an experience for people to learn about the events in space and will be a great learning experience for our team and we hope that our game can help people become interested in space and the cosmos.

Built With

Share this project:

Updates

Submission history