Mooncast

Mooncast is a fantasy MMO with blockchain integration.

Project Type Solo project
Software Used Unity
Primary Role(s) Designer & Developer

To the right is a graphic outlining the zone spawners that would populate creatures. Zone economies, funded by taxed player actions, would spend their 'gold' on spawning creatures from a queue. Each creature has a unique value stemming from the price of its drops. The queue itself is populated randomly, with rarer creatures appearing less frequently. The more the players interact within a zone, the faster things will be spawned, which incentivises hunting and trading.

It was a solo project — I built it from scratch in Unity, handling the design and development entirely by myself, focusing on the zone population system and the fishing minigame. Being integrated with blockchain, infinite repopulation and extraction of resources was not an acceptable solution since each resource has real-world value, but being a barren MMO would also feel terrible. In lies the puzzle of repopulating the world of Mooncast without horrifically devaluing resources. Zone economies, funded by taxed player actions, would spend their 'gold' on spawning creatures from a queue. Each creature has a unique value stemming from the price of its drops. The queue itself is populated randomly, with rarer creatures appearing less frequently. The more the players interact within a zone, the faster things will be spawned, which incentivises hunting and trading.

How spawners work diagram
See some of the iterations of the fishing design and why I landed on the current version.

The fishing minigame for Mooncast was an iterative design process that first involved researching fishing in other games. Quick time events (QTEs) were interactive and skillful, which is why they were the first thing I gravitated towards in my design. Wanting to take the interactivity a step further, I looked towards real fishing. The intermittent reeling, the battle against the fish's strength and direction; once hooked, fishing is exciting when there's a big catch on the line. I combined these ideas into a final design which has the player pull back and forth against the fish, and reel while the fish is centered. The termination conditions for fishing are the line snapping under tension, the fish getting away, or a catch! In Mooncast, we want better items to feel effective, but to still allow highly skilled players to do just fine with basic items. I created a prototype with different rods and bait to test the viability of skilled fishing with the aid of better tools. It was my first time creating a Unity project from scratch. As a proof of concept, it worked, but in retrospect, there's a lot to improve upon.

We all remember the first time riding a bike without training wheels. Mooncast Fishing Demo was my first time creating a Unity project from nothing, and it shows.

Mooncast Fishing Demo was my first time creating something in Unity from scratch. There were no training wheels or best practices that I was following along with; just intuition and curiosity were guiding my way.

Just to name one big no-no, I used Scriptable Objects to contain save data. Although as the only way I knew how to make data persist between sessions, it was okay. Now I've made a save system and can read/write data to files in %AppData%.

Another is the user feedback. An indicator of a line you're pulling instead of just a bobber would have done wonders for user feedback. With only the bobber, it feels really unresponsive.

Coming back to my first real project after building a few others, I am simply stunned at the odd decisions I made. Then I remember I was a novice with no training wheels, and the game still technically functions; there are so many more tools in my toolbelt that I wish I could've given myself back then. Anything shipped is still a win, especially when I can look back and see just how far I've come and be inspired by my past ingenuity.