Inspiration
Our main inspiration was the great pacific garbage patch, and the efforts to clean it with specialized boats. A game called “Dredge” inspired the more stylized look of our boat that the player controls, and the trash sprites were drawn junk that was in images of the actual great garbage patch.
What it does
The gameplay loop consists of collecting garbage for money, then buying upgrades in a shop to collect more efficiently. Each level represents a certain time period from 1960 to (projected) 2040 where level difficulty (amount of trash to clean up) represents the trash in the ocean of each time period. With the 2040 level being the most difficult and oversaturated with trash, it serves as a visual representation for how bad the problem is expected to get in the future. Additional information about each time period is displayed before each level, alongside a bar graph visual for the increasing amounts of plastic in the ocean. Overall, this project should inspire action when players experience how difficult clean can get.
How we built it
We built this project in Godot. Krita was used for the art and all the sprites. Facts were sourced from various sites like Wikipedia and OurWorldInData.
Challenges we ran into
We had many challenges starting from each part of the project with varying levels of difficulty. The minor problems we ran into were quirks related to specifically Godot when dealing with the nodes, communicating between scripts, instancing nodes, etc. One of the “medium” challenges was our character controller script, where getting movement and aiming the boat’s scoop required some tricky math. In later stages, the water becomes more murky and is cleared by the boat’s path. Being able to mask out the path of the boat was a stretch goal for us, so it was a scramble to add in, but we used a custom shader effect to roughly complete the idea. The major challenges were communicating through different signals across multiple different classes, scenes and objects and getting a shop to work. To resolve that problem, we created a GlobalManager script that acted as an in-between to reduce direct function references, especially important because those functions could change on a sudden realization. Other things like mouse selections, time delays, multiple object movements, collisions all add with another to the level of complexity we tried to handle.
Accomplishments that we're proud of
We were able to complete all of our minimum requirement goals that we set, and even a few stretch goals, thanks to the way we divided tasks. We divided tasks at the very beginning (trash spawning, player movement, shop ui, etc) and predetermined how the GlobalManager would act so we knew how everything would connect. There were almost zero merge conflicts, and no major restructurings of the way different scripts interacted. Specific things we are proud of are the level data loading system, and murky water masking system.
What we learned
We really expanded our understanding of Godot and learned a system that we’re still not incredibly familiar with. We all had some experience in Godot but we more experience in other programs like Unity with C#. We felt like we were more easily able to learn on the fly especially with the documentation within Godot for what a lot of the framework does. We really built our understanding of game design and figuring out bugs. We had a lot of bugs that required in-depth documentation reading since figuring out each bug took a significant amount of time.
What's next for Project Cleanup
Our next steps would be adding lots of visual polish, even sfx. We did float an idea of animals that you need to rescue, but weren’t sure how it would be implemented at the time. We also wanted to add better shop items to purchase, and special abilities like a trash hook that you could buy.
Built With
- godot
- krita
- ourworldindata
Log in or sign up for Devpost to join the conversation.