Cycles 2+3 (Sara)

Intent

Originally, I intended to call this project “Cliffside Cairn.”  My goal was to build an ambient, meditative game in which the user could pick up and stack rocks as a way to practice slowing down and idly injecting a moment of calm into the churn of maintaining a constant online presence in the current global pandemic.  I took inspiration from the Cairn Challenges present in Assassin’s Creed: Valhalla.  While I haven’t been able to maintain the attention necessary to tackle a new, robust open-world game in some time, my wife has been relishing her time as a burly viking bringing chaos down upon the countryside.  Whenever she stumbled upon a pile of rocks on a cliff, however, she handed the controller over to me.  The simplicity of the challenge and the total dearth of stakes was a relief after long days.

As the prototype took shape, though, I realized that no amount of pastels or ocean sounds could dispel the rock stacking hellscape I had inadvertently created.  I showed an early version to a graduate peer, and they laughed and said I’d made a punishment game.  Undeterred, I leaned into the absurdity and torment of watching teetering towers tumble.  I slapped the new name Rock Stackin’ on the project and went all in.

Process

Initially, I sought to incorporate Leap Motion controls into the Godot Game Engine, so the user could directly manipulate 3D physics objects.  To do so, I first took a crash course in Godot and created a simple 3D game based on a tutorial series.  With a working understanding of the software under my belt, I felt confident I could navigate the user interface to set up a scene of 3D rock models.  I pulled up the documentation I had barely skimmed the week before about setting up Leap Motion in Godot—only to find that the solution required a solid grasp of Python.  

After it became clear that I would not be able to master Python in a week, I briefly toyed around with touch-and-drag controls as an alternative before setting Godot aside and returning to Isadora.  Establishing Leap Motion controls in Isadora was straightforward; establishing physics in Isadora was not.  Alex was remarkably patient as I repeatedly picked his brain for the best way to create a structure that would allow Isadora to recognize: 1. When a rock was pressed, 2. When a rock was released, and 3. Where the rock should fall when it was released.  With his help, we set up the necessary actors; however, incorporating additional rocks presented yet another stumbling block.

I returned to my intent: stack rocks for relaxation.  Nowhere in that directive did I mention that I needed to stack rocks with the Leap Motion.  Ultimately, I wanted to drag and drop physics objects.  That was not intuitive in Isadora, but it was in Godot, so at the 11th hour, I returned to Godot because I believed it was the appropriate tool for the job.

Challenges

As a designer, I know the importance of iteration.  Iterate, iterate, iterate—then lock it in.  The most significant challenge I faced with this effort was the “locking it in” step.  I held onto extraneous design requirements (i.e., incorporate Leap Motion controls) much longer than I should have.  If I had reflected on the initial question and boiled it down to its essential form sooner, I could have spent more time in Godot and further polished the prototype in time for the final presentation.

Additionally, when I did decide to lean into the silliness of the precariousness of the rock stack, I decided I wanted to insert a victory condition.  If the user could indeed create a rock stack that stayed in place for x amount of time, I wanted to propel them to a “You Win!” screen.  I thought I would replicate the boundary reset script I successfully implemented, but I realized one could game the system just by dragging an object into the Area2D node.

Finally, while I did incorporate ambient wave sounds, I struggled to add additional sound effects.  The rock splash sound was only supposed to trigger when it hit the water, but it fired when the scene began as well.  I faced similar challenges when trying to add rock collision sound effects.

Accomplishments

Challenges aside, I’m incredibly pleased with the current prototype.  I successfully implemented code that allowed for dragging and dropping of physics objects that interacted with colliders.  Without that, Rock Stackin’ would have been impossible.  Furthermore, I established a scene reset script if the user flings a rock off the edge.  At first, I prevented the user from being able to drag a user off the screen with the inclusion of multiple invisible colliders.  However, I wanted some tension to emerge from the potential of a tumbling tower, and a reset seemed like a gentle push.  Lastly, I’m pleased with the rock colliders I added.  Capsule colliders caused jitter, while rectangle colliders provided no challenge.  Multiple rectangle colliders scaled and rotated to fit the rocks I had drawn and led to a pleasing amount of collision and groundedness. 

Observations

As I mentioned previously, I was using software not ideally suited for my needs.  My main observation stems from that realization:

Go where the water flows.

Identify the hierarchy in your design goals and use the best tools for the job.  I spent a while bobbing against the shore before I pushed myself back into the stream to where the water flowed.

Link to Rock Stackin’


Leave a Reply