A quick rune reading application I whipped up in Unity while testing Copilot and focusing on quick, clean iteration for smaller projects.

General Summary:

 I've always thought runes were interesting both in fiction and in history. While I'm a skeptic to most mystical stuff, I've always found logical value in tarot-like things since they can prompt the  brain to look at problems from different perspectives. Currently missing a  couple of runes since they weren't in the free asset pack I used, but you'd never know unless you read it here. The symbolism for each rune was compiled from a few sources but there seems to be quite a bit of debate about specifics. So I wrote what felt right to me and did my best to have the dealer come across as mysterious and mystical as possible. It was important to me that the user had some symbolic control over the random element, so I had the seed for the RNG get randomized every frame while the dealer is shuffling. So realistically it doesn't matter, but symbolically it does. This resulted in a small technical challenge that was fun to overcome.

Project Summary:

I wanted to explore how quickly I could whip up some smaller projects with heavy constraints based on what assets were available from a limited number of asset packs. I selected Kenney's most recent asset pack at the time which happened to be runes. I was considering doing a puzzle game with them, but they don't 'read' very well and the symbol parts of the rune were baked directly onto the rune textures and I wouldn't be able to animate them with effects very easily. So I settled the simplest approach to avoid spending a few hours in Krita ripping them apart. The UI assets were also from Kenney and I wanted something very Skyrim-y. I think I succeeded on that front. 

Technical Summary:

This project heavily depends on a Scriptable Object event system like Chop Chop. I've always been a fan of the drag and drop-ness of this approach and with the way Unity handles the serialization of interface fields It's always seemed like the best way to decouple things. Basic events exist obviously, but there's also events for when you pick a reading type, or when a rune is revealed. The events for showing/hiding each view are currently daisy chained, which is intuitive and flexible, but prone to error when things are changed. I should have tried a coordinator-type pattern to get more of an overhead view of how the views are sequenced. I've also been trying out an alternative to singletons that I call Scriptable Object Services. All the logic for drawing runes, and controlling a generated Queue of "Reading Steps" is managed by a Rune Reading Service that encapsulates all the logic that the views shouldn't have to worry about. This was my first project using Copilot. It's configured to mostly use my own code to make predictions so It could learn my patterns more easily as I went. Most of its suggestions felt very useless, but it did save me a little time overall on boilerplate after it introduced a couple of bugs. I'm hesitant to make the repo public since It got a bit rushed  toward the end. But If enough people ask I will. 

Potential Improvements/Known Issues:

  • Support for more resolutions (currently only 1.77 aspect)
  • A mobile port
  • Better particle effects for rune reveal
  • More SFX
  • Adding missing runes
  • Multiple interpretations for each rune
  • Multiple alternatives for scripted dialogue
  • Hovering on runes to show their names if you forget
  • Interrupting Transitions when you're trying to go quickly. 
  • Polish on fade transitions (duration and easing types)

Sources:

Unity Version: Unity 2022.3.15 LTS

Leave a comment

Log in with itch.io to leave a comment.