Fishin’ Frenzy Prototype
So, it’s been a while since my last update, unemployment has been a bit of a weird time to be honest. Since losing my job due to the University of the Arts suddenly closing with little warning or indication, I’ve been on a bit of a break from all thing’s art and technical.
It’s actually been a decent opportunity to get back into playing more games, getting inspired, and resetting myself. To that end, I’ve started looking a bit more into the free and open-source game engine Godot. I’ve been aware of it for a little bit, and like many others, really started paying attention when the whole Unity licensing fee fiasco started and subsequent coup of the company’s President as well as many other members on the Board of Directors. Things seem to be looking up now, with the fees cancelled, and number of new executives who seem to actually care about developing the game engine. That said, Godot has made great strides as well, almost doubling in their monthly donations, and 3D parity slowly catching up to Unity.
All this to say, I’ve started seriously attempting to learn Godot, following some courses to get familiar with it, and I’m decently proud at my first serious game prototype I’ve completed without the use of tutorials. I named it Fishin’ Frenzy (though that’s really something I came up with randomly in about 35 seconds so it could be better 🤷)
I finished it (at a small prototype state) in probably 14-16 hours over the course of 3 days or so. Generally speaking, I can say I really enjoyed the process. Especially leaving “tutorial hell” as it’s known, and just throwing things at the wall to see what sticks. It also wasn’t too difficult to solve and problems that came up.
I’ve also decided it would be pragmatic to then try and re-create the same prototype in Unity, which I’m certainly more familiar with (though arguably we’ve always used Unity as a general-purpose tool for interactive graphics and displays, rather than any actual games, so my experience in game design is pretty beginner).
Image of Fisher prototype in Godot
Image of Fisher prototype in Unity
Details
First, I’ll briefly describe the primary game loop.
I generate a “Fishing Spot” that is just a hollow sprite circle that starts at a certain size and decreases until it disappears. This spot repeatedly generates at random points around the screen and will continue to do so until the player attempts to interact.
“Interaction” is simply moving the mouse cursor inside this shrinking spot and left clicking.
This starts a “reel” event, which is essentially just a short, randomized timer, with text displaying “Reeling…” and a nice little sound effect I got from opengameart.org (courtesy of You’rePerfectStudio).
After this finishes, a signal (Godot’s version of C# Events/Delegates), and another “mini game” appears, I didn’t really name this anything, but I suppose I would call it “catching”. A horizontal bar appears on the screen with a circle randomly placed on it. Another smaller circle slides back and forth across the bar at a variable speed that is also random (I could’ve set it to be faster with difficulty/rarity of the fish, but I was lazy and just wanted to finish my first prototype). After clicking at the right time when the two elements align, you successfully “catch” the fish.
A small animation plays with the fish you’ve caught (also randomly selected from a list of about 14 different options, based on an arbitrary rarity value I set), and a money counter on the bottom left-hand corner ticks up.
You repeat until the player accumulates a total of $100 dollars, or over.
This project allowed me to play around with a concept of key game concepts in general, and with Godot. Importing 2D assets and setting them to display correctly, separating behavior and visuals into different “nodes” with are then instantiated and freed from the Main game scene as the loop progresses, animations created in Godot to do some simple movements, “game-feel” with particle effects, and of course, using Godot’s signals to communicate across various nodes, and using “Resources” to define containers of data - in this case, the various fish (and some other sea elements) that you can randomly catch.