Look, there’s a watering can right next to it. Click, click, click... wait, why is it spinning and growing?
Hold on, the sapling just grew up too! Wow, it’s an apple tree. Let’s try to pick an apple...
Whoa! Why won't it let me pick it? It just yelled at me to go away!
Alright, let's just keep watering. The tree gets huge, the apples multiply...
Wait a minute... why does that one apple at the bottom sound exactly like...
Inspiration
The core idea behind Personali-Tree was to transform the often sterile experience of chatting with an AI into something organic and sometimes questionable choices. We wanted to combine the nostalgia of "digital pets" with the power of Large Language Models. We created a short, gamified journey where users must nurture their tree to unlock new personalities.
What it does
Personali-Tree is a virtual gardening chatbot where you "care" for your tree and discover different apples.
- Grow through Nurturing: As you water the tree, it grows through various stages.
- Unlock Personalities: Growth triggers the appearance of "Personality Apples", unique characters with distinct personas.
- Dynamic Chat: Using a chat interface, you can have small conversations with Grumple, Sapple, Happle, and Chomple. And a mystery apple once you reach the last growing stage.
- Interactive Feedback: Beyond chatting, tapping on an apple triggers immediate, personality-specific reactions.
- The Elder Tree: Reaching the final growth stage reveals the final, most complex and, why we wonder why we decided this, persona.
How we built it
- Engine: The frontend was developed in Unity, providing a visual and interactive interface for the tree's growth and animations.
- AI: We decided to use Google AI Studio to power the conversation, allowing each apple to have its own persona.
- Middleware: A Python backend manages the communication between the Unity client and the AI models, dynamically injecting persona instructions based on which apple the user is interacting with.
Challenges we ran into
- Persona Creation: It was a challenge to ensure the AI didn't "break character" and revert to a standard assistant. We had to play around with the general prompts used by the apples, where we insert each persona's description to define apple's response. Grumple is appropriately moody, and Happle is relentlessly cheerful.
- Asynchronous Communication: Managing the flow of data from the user's input in Unity, through the Python server, to the AI, and back again without causing delay in the game's UI by exploring different models that are quick and accurate.
Accomplishments that we're proud of
- Character Distinction: We are proud of how distinct the apples feel, they don't just say different things, they have different tones and worldviews.
- Seamless Integration: Connecting a game engine like Unity with a real-time AI backend via Python and Google Studio AI.
What we learned
- Prompt Engineering: We learned that the "personality" of an AI is only as good as the constraints you give it. Specificity in the prompts given to the LLM is important.
- Game State Management: We gained experience in syncing game variables (like water levels and growth stages) with external API calls.
What's next for Personali-Tree
- New Varieties: Introducing varieties of different apple personalities the more you grow your tree!
