Dreamfather Loves You
& Bass Reeves Can’t Die
I think that the best thing a piece of media can do is commit to its message, whether that is incredibly heartfelt, or a bit. Both of these games are, in a way, both.
Xalavier Nelson Jr. had posted on Twitter saying he was in the process of building a game based on the persuasion minigame from The Elder Scrolls IV: Oblivion. I half-joked that I had to make this game with him, and he took me incredibly seriously, which led to our first collaborations together.
Dreamfather is the project that saw the light of day, and is known amongst the Meow Wolf staff as the “daddy issues game.” You can read more about it here.
Bass Reeves Can’t Die was shelved for a host of reasons, chief among them being the overall state of the games industry from late 2021 onward. Thankfully, the game saw a quasi-revival in form of an hour-long documentary, thrown together by YouTuber Noodle and general cool-person Sam Chiet.
Technical Breakdown
Much like in Oblivion, the wheel consists of four static segments, and four segments that rotate. Each of the four static segments is given a point value per-scenario. Generally, this consists of -2, -1, 1, and 2. The rotating segments are given values of 1, 2, 3 and 4.
When a segment is selected, its base value is multiplied by the rotating segment value, and then performs a rotation. Once all four segments have been selected, the round is over.
In Oblivion, this is used to mimic conversations, with the static sections always labeled Admire, Boast, Joke and Coerce. In “Wild West,” these options would change based on the scenario. A number value was also added to the bottom-right to indicate total point value for the selection, as we did not have an emoting NPC to indicate what was a good or bad choice.
The game uses a Scriptable Object driven Event system, where events are called on scriptable objects that serve as object-agnostic “event channels.” Any script in the game can call events on a channel, or subscribe to its Raise Event function. The base system was implemented by me, and improvements were created by me and the primary programmer for Dreamfather, Rea.
All Event Channels with different datatypes inherit from a base EventChannel class, meaning if we ever want to adjust how the broader event channel system works, a single class can be edited in order to expand functionality to the entire system. We opted for this method because myself and the other designer were both adept C# programmers with Unity experience, and editing scripts was not an issue for doing this kind of setup.
Originally, “Wild West” explicitly linked the Action Wheel to a Result Bar object, which displayed numeric progress and required the player to achieve a certain number value to “successfully” complete a scenario. Once Dreamfather shipped, “Wild West” was expanded to allow for the Action Wheel to interact with multiple parts, which led to the Event Channel system. As shown above, any value from the Action Wheel could simply be raised in an event, which any object can listen for. Below is the result bar code that reacts to this system — OnActionWheelHighlight is subscribed to the QualityEventChannel’s RaiseEvent delegate, and the code executes.
Because the system uses a Horizontal Layout Group, which takes a frame to settle, a coroutine is used to delay a frame, then the “ghost chit” is moved to the intended position, showing the player where the current value will land them on the Result Bar. The system is agnostic to the Action Wheel, so in theory, the result bar could display a number from any system. We called this a system of “Interactors” and “Reactors.” Interactors were gameplay pieces that responded to player input (like the Action Wheel), and Reactors used the results to display some measure of progress to the player.
The other benefit of this event structure was the ability for One Shot scripts to subscribe to event channels. I wrote a One Shot Sound script and a One Shot Tween script, which implemented sound effects and DOTween tweens respectively, and could be thrown on any object in the game.
This meant that adding juice to any component that would regularly be sending or receiving values was as simple as assigning it to the appropriate event channel in the inspector, and the Tween script would automatically select the object it was attached to, or the One Shot sound script would find a free audio channel to use, making them fairly foolproof.
Many other systems were built for this project rendering it largely playable, and a huge amount of art was created. I would love the chance to return to this project someday. For now, if you want to see it in action, you’ll need to take a trip to Meow Wolf Grapevine.