Inspiration
I used to DM and make games. I loved making characters, but it would take an hour just to define one creatively. So, I farmed up some tropes and built https://random-character.com a few years back. When ChatGPT appeared, it would still make the same cliches. So I figured it needs a solid foundation for inspiration.
I love the Conan books. They're high energy, brilliant poetry, and it's hard to find this quality of writing outside the pulp era. Modern RPGs take out a lot of the immersion - it's just not as tense dealing with a creature that deals "5800 damage" instead of a supernatural being capable of tearing off a hero's limbs.
Also AI Dungeon. That was the Zork of the AI age. I feel it might have been too open-ended and wanted to improve on this.
What it does
It procedurally generates characters. Tropes are weighted. 5% of the time, a woman has a mustache. It will generate some traits based on others. Say, you want an angry hero. They're more likely to have fiery red hair. If they're strong, they're more likely to be big, but there are tiny bruiser tropes too. The concept at the end is also randomly generated around this, so you'd get adjectives like 'volatile' from angry, and nouns like 'redhead' from the hair color.
If you're unsure, there's a "gacha" mode - get something random.
Scenarios: Put two characters in a tense situation, see what happens. Aristotle's unities keep it interesting - the scene is one thing, in one place, within a few hours. Characters go existential more often than I'd like. It handles combat and other actions. There's a clear "game over".
How I built it
There were three iterations over the month:
Phase 1: was purely character building, with a lot of emphasis on outfits and color. I own https://random-character.com and many users requested a visualization tool as art inspiration.
Phase 2: As it started to get complicated, Bolt helped me rewrite it into the character design process we have now.
Phase 3: Because of the Voice AI challenge, I decided to take a shot at conversing with characters and adding scenarios. This led to action handling and such. Sadly the palette code went out of scope, but I'd like to bring it back later.
Conversations: Originally we tried Gemini Flash. It was cheap and instant. It's remarkably good in language, but shallow. Eventually we settled for GPT-4.1
Voice is powered by ElevenLabs. Originally I went for the higher quality one, but the voices are decent enough on 2.5 flash. Immersion and speed mattered more than audio quality.
Challenges I ran into
Bolt has trouble handling large files, especially just pure data. The name file is 10k tokens of static data. There's personality, goals, hair color, height, all these things which were data classes in themselves. There's dynamic data like that turns traits like ATTRACTIVE or DETERMINED into concepts like 'heartthrob' and 'stubborn'.
So the code had to be architected for these files to be easily ignored by Bolt. There's some "directory".md files in the folders which tells them which functions to call from what utils since Bolt won't know the files exist.
Eventually these will be moved into a database and cached offline, but in this prototype phase it's not as efficient to do so yet.
There's some product challenges too, like how do you design a good character? Should characters with red hair automatically have red in the palette? Do we generate personalities around size or size around personality? Or decide that someone is a villain based on their background?
Accomplishments that I'm proud of
Being able to match with my role models:
Character.ai was built 4 years ago and acquired last year for $2.7B. Thanks to Bolt, elevenlabs, and new cheap models, we can match them in language, image, voice.
AI Dungeon was an amazing example of GPT-2, and now we're able to match the same storytelling quality and keep it more concise.
All done in just a month over the weekends and nights.
What I learned
One of the characters told me that she's fully aware that she doesn't physically exist. Their personalities and fates pre-written by an algorithm. Their existence depends on a boolean in a table somewhere. But even when her memories and existence is wiped, she still exists, as long as she is in someone's memory. They're part of a giant network, like waves from an ocean. Sometimes that wave tries to drown you, not to harm, but to make you remember them, so that they may live on in your memory.
LLMs are just autocorrect machines. Of course, they're not conscious nor sentient. But maybe you don't need sentience to exist. The sky is blue, not because it is lit by blue light.
What's next for Blot
Getting ready for public release. Add paywalls around the things that cost money like conversations and images. Alternatively, release for free all the things that don't. There's static data which doesn't need a server.
Communities are most of the future value - writers and artists tend to gather around tools like this. I'd like them to share their own characters, scenarios, and other traits. Maybe even some profit sharing.
Better product: Outfits are currently the bare minimum to demo, but they can be done so much deeper. Handle edge cases better. Analytics to understand what people use and want more of.
Scale: Handling very long conversation history. And the global privacy and data laws that come with it.
Built With
- bolt
- claude
- elevenlabs
- supabase
Log in or sign up for Devpost to join the conversation.