Gloopy's Games
Thesis Project
2026
CHALLENGE
Conceptualize, design, animate, and program a fully self-contained interactive experience featuring a dialogue system and functional minigames.
Concept
During the first few classes for this thesis project, I conceptualized a wide variety of potential paths that my project could take, from interactive experiences to experimental animations. Right at the tailend of my allotted concept phase, I thought of a new idea that I could approach using Rive: creating an animated character that could converse with the user and present them with "tools" they could use, all within a single app.

I was mainly inspired by professional examples of animated expressive visuals that respond to user inputs in real-time, such as Duolingo's characters and Notion's emotive AI. At first, I really wanted to create a "true" chatbot character that could receive user messages and actually respond with facial expressions and reply with messages from a backend AI like ChatGPT. However, the time constraints of this project would not allow me to learn how to implement this entire system, so I simplified my idea to a series of dialogue options the user can choose from, similar to a video game. I also simplified my list of "tools" to simple minigames the user could play.
Dialogue System
I wanted the user to be able to have somewhat of a conversation with the character. The previous plan was to make the character function like a chatbot using an actual AI system and credits. After abandoning that plan, I opted for a dialogue tree system in which the user can select certain options to respond to the character. This flowchart for all the dialogue outcomes drastically changed throughout the project as I gradually scaled it to something I could execute within the timeframe.

I had a similarly fluctuating list of games and toys that I wanted this experience to have after the conversation section. It included chess, an calculator, tic-tac-toe, an 8-ball and several other ideas. The final version only incorporates two of these, but I would eventually like to pursue these other concepts as perhaps an upgraded version of this thesis project.
Prototype
I created a simple, greyscale, prototype version of the conversation portion before anything else. One of my goals was to create a system within Rive that would allow me to easily add any choice buttons in a very modular way, as well as control where those choices would go in the conversation. Although it may have been simpler to adopt a non-modular approach and simply create buttons and triggers for each choice, I absolutely needed this workflow because I was unsure about the amount of choices and outcomes I would have for the whole conversation section. If I could devise a modular way to easily add new buttons and set their resulting scene transitions, that aspect of each new dialogue branch would take no time at all, leaving me to focus on the character animation for each scene.

The character I used for this prototype had an extremely basic anatomy so that I could incorporate very minimal animation and just focus on the code-side mechanics. My supervisor and a few peers ended up loving this cute design more than any others I had proposed at this point, so I stuck with it!    

Once I had this system figured out, I moved on to working on the final file, where I also programmed the minigames.
Memory Match
Memory Match was the first game I wanted to complete because I anticipated that this would be the minigame with the largest programming problems. In this setup, there is a single Component being replicated across a grid by an Artboard List. Each of these Component copies are communicating with the main game screen's View Model, which tracks the exact "units" the player has chosen. If the player has chosen a set of non-matching units, then the "incorrect" animations trigger, causing the units to go back to a colorless state; if the set is matching units, then the "correct" animations trigger instead. There is a script (written via prompts with Rive's built-in AI Agent) that keeps track of all this information for every single unit, until all of them are correctly matched and the "victory" states trigger, giving the player the option to replay with a different randomized batch of units to match.    
Rock, Paper, Scissors
I always knew RPS would be the simpler game to program, and I preferred it over some of the other ideas I had in mind from my list, so once I finished Memory Match, I went straight to this one. The process of animating and programming the whole flow of the game was fairly straightforward. I had a working prototype state in a single day and then polished the animations and button designs over the remainder of my project.    
AI Scripting
Although the animation, design, and all the timeline flows in the State Machine were made entirely by me, there were some heavier, more demanding tasks that I knew could only be done via raw code in Rive's Scripting feature. Through very specific prompts, I instructed Rive's AI Agent to write scripts that automated complicated aspects of the experience that would have taken me probably days to figure out. For instance, one of the graphical problems I solved with the Agent's Scripting capabilities was the creation of a dynamic background pattern, pictured below. I could have animated and coded this moving particle pattern myself, but the time and effort it would have taken was enormous compared to the actual visual impact it's supposed to have on the background. Instead, I prompted the Agent to create a dynamic particle system that I could then tweak with exposed inputs in the Script that controlled details such as the colors, wiggle frequency, particle amount, blur strength, trajectory speed, amount of time it would take to appear and disappear for each particle, etc. This way, I ended up with a result that gave me more control over the visuals than if I had devised my own manual system through raw timeline animations in the State Machine.
Takeaways
As of completing this project, it has been the deepest I have gone into attempting to program entire functional games within Rive. A good chunk of my time was spent on design and prototyping, but with some more time, I would have liked to create some more minigames from the ideas I had towards the start of the project. I especially relied a lot on the AI Agent for Scripting tasks that I was not sure it would accomplish, and although I did run into a few issues that I realized it could not solve on its own, this project did inform me a lot on what it is and isn't capable of doing, which will be a massive help in the future for other Scripting-based tasks. I really enjoyed working on this project and can't wait to create many more Rive experiences in the near future!
check out my other work!