The Yahztee Project

Prompt-Engineering journey with Digital Yahtzee. A generative AI experiment and learning journey.

Goals:

  1. To learn and evaluate Dart / Flutter for cross-platform UI development
  2. To explore prompt-engineering viability of Github Copilot with Dart / Flutter
  3. To create a digital Yahtzee solution to enhance our gaming experience.
  4. To deliver a polished, ad-free app across multiple platforms.
Why Use an App?

Irena, and I enjoy the game of Yahtzee. Initially, we liked the tactile experience of rolling real dice and keeping score on paper. However, as much as we appreciated the authenticity of physical dice, maintaining paper scorecards proved cumbersome, especially after a few rounds and a couple of drinks! 😊 Being software professionals, we saw an opportunity to streamline our Yahtzee experience using a digital solution.

We Tried Existing Apps.

We explored various Yahtzee apps available on the market, but none quite met our expectations. Annoyed by intrusive ads and longing for a cleaner, more enjoyable experience, we resolved to build our own app. We wanted to use the opportunity to learn new practices and techologies, focusing on Github Copilot both as a learning tool and code generator. We resolved to generate as much code as possible, while providing human expert guidance to the LLM to ensure clean, modular, maintainable code.

We Chose a Tech Stack

Enter Flutter, Google's exceptional multi-platform open-source UI framework. Intrigued by its promise of seamless cross-platform development, we were drawn to the type-safety and familiarity of Dart, especially coming from backgrounds in C++, C#, and Java. Flutter's elegant widget abstraction, where visual elements and behavior are unified within a single Dart codebase, appealed to our sensibilities, simplifying development and maintenance. Plus we loved having a single codebase for IOS, Android, Web and Desktop.

What We Learned
We learned a lot about app ecosytems, how to do CI/CD using XCode Cloud and the app submission process. One key learning was trademarks. Yahtzee was rejected by the app stores due to trademark of the Yahtzee name by Hasbro, Inc. so we deployed the web version to GitHub Pages and side-loaded the app to our devices for personal use using TestFlight. Other take-aways include:
  1. Flutter is a powerful, versatile, and enjoyable development platform.
  2. Github Copilot dramatically accelerates development, but requires expert human oversight to realize its full potential.
  3. Github Copilot is an excellent way to rapidly learn new languages and frameworks.
  4. The app stores have strict trademark policies.
The web version of the app is available here.

Enjoy!

-- Martin Davy