I met @webdeveloperhyper on the DEV Community, and like most good internet collaborations, it started casually.
A few messages. Some feedback. Valuable guidance.
Then at some point, the conversation shifted from âthis looks coolâ to âletâs make something fun together.â
We didnât over-plan it. We just started building.
They were in Japan. I was in India. Which meant most of this project happened in small pockets of time. Late nights. Random 20-minute windows during the day. Messages sent hours apart. Progress that didnât look dramatic, but quietly accumulated.
Somehow, it worked.
From basic shapes to actual avatars
The project didnât begin with polished characters. It began with simple shapes in a scene, just placeholders to test positioning, camera, and basic interaction.
The idea was simple. Two characters. A short conversation. Some animation.
Simple ideas tend to hide interesting problems.
My first real task was creating the avatar itself using VRoid Studio. That alone was a learning curve. Once imported, the avatar didnât behave like a character. It behaved like a static object.
The default pose was a T-pose. Arms stretched out. Completely lifeless. Fixing that was the first small victory. Getting the avatar into a neutral stance, hands down, just standing naturally.
It sounds minor. But that was the moment it stopped looking like a model and started looking like a character.
From there, we began layering gestures.
Hello animations. Goodbye animations. Small movements during conversation. Even a sigh animation that became one of my favorite details.
There was also a failed attempt at overriding default gestures directly, which taught me very quickly that animation systems have their own rules.
Writing the conversation was harder than expected
Surprisingly, one of the hardest parts wasnât technical. It was writing the conversation itself.
Short. Natural. Slightly funny. Not robotic.
When dialogue is too long, it feels forced. Too short, it feels empty. Too serious, it loses charm. Too silly, it loses believability.
Finding that balance took more iterations than expected.
I still think the punchline could be better. But maybe thatâs a good thing, leaves room for evolution.
When rendering avatars becomes a systems problem
Rendering avatars is straightforward with modern tools. The real challenge was orchestrating behavior.
We needed the scene to manage:
⢠who speaks
⢠what animation plays
⢠when it starts
⢠when it ends
⢠when the next character takes over
So instead of hardcoding behavior, we defined dialogue as structured data:
const DIALOGUE = [
{
speaker: "A",
text: "I'm Web Developer Hyper. I like to make fun things.",
animation: "VRMA_03_peace_sign.vrma",
},
{
speaker: "B",
text: "Hello! I'm Itsugo. And I like turning ideas into something real.",
animation: "VRMA_04_shoot.vrma",
}
];
The scene simply interprets this sequence. This separation made the system easier to control, extend, and reason about.
Instead of forcing behavior, we orchestrated it.
The coordination problem
Animations donât naturally tell your application when they finish.
But timing matters. The next line shouldnât interrupt too early. And the system shouldnât freeze if something goes wrong.
So the dialogue system waits for either:
⢠animation completion
⢠or a safe timeout fallback
Whichever happens first.
This tiny decision made the system resilient.
Small systems thinking like this often matters more than large features.
You can check it out here!
The invisible part of collaboration
What made this project meaningful wasnât just the final result. It was the process.
Fixing animation timing. Cleaning unnecessary code. Improving readability. Adjusting gesture intensity. Adding beginner-friendly comments.
And doing it across timezones.
Huge thanks to @webdeveloperhyper for setting up the foundation, pushing the project forward, and tolerating my questionable Japanese during our conversations.(Ëâ˝Ëďź)...
This project exists because of that shared effort and patience.
Where this could go next
Right now, itâs just two avatars having a conversation.
But it already feels like the beginning of something larger.
Interactive characters. Story systems. Dynamic dialogue. Maybe something we havenât even thought of yet.
And that brings us to the real question.
How should we take this forward?
We have some ideas where this could go next, but we want to hear from our awesome followers.
How would you have fun with this project?
No matter how unrealistic it might sound.
Letâs have some fun with this side project.
Closing
This started as a small experiment between two developers who met online.
It became a reminder of why side projects matter.
Not because they are perfect.
But because they are alive.
And sometimes, thatâs enough to start something meaningful.



Top comments (63)
Thank you very much for this amazing comment Richard! ăž(â§â˝âŚ*)o All of this was made possible thanks to @webdeveloperhyper so once again hats off to them.
That novel style RPG is the direction we were thinking for our v2, making it more interactive so even you can have fun instead of just viewing it.
And yes, you are on point about DEV, genuine connections are being built on this platform, and it's honestly fun and truly awesome to be able to exchange thoughts and ideas and build together with anyone from all over the world.
It is so cool to see how you and your friend collaborated on this. Seeing projects where people bring creative ideas to life is really inspiring. Great work!
Thank you so much Maame! Really appreciate your support!
No p!
Hooray for our project v1 release! đ Thank you so much for your cooperation! Iâm already excited for v2. Iâll write my side of the post soon.
By the way, Iâm not âthey.â As you can see from my icon, Iâm one cute little odd-eyed hamster. đš
Lol I didn't know what pronouns to use for you so I used "they". I cannot write cute little odd-eyed hamster (Ëâ˝Ëďź)...
Haha! 𤣠Iâll forgive you if you give me a lot of fresh, yummy nuts! đĽđš
Hahaha (â â§â â˝â âŚâ )
What a journey! I appreciate how you embraced the iterative process, especially with dialogue and animation. The structured data approach for managing conversations is brilliantâit really keeps the system scalable. Have you considered expanding on that structure to further optimize responsiveness? Looking forward to where this project heads next! đ
Oh yeah we could add responsiveness! Thank you for sharing your thoughts Guilherme, that's something useful and obvious we would have probably missed.
âIf this becomes a startup, Iâm blaming you.ââlol.
Thereâs a particular kind of magic that happens when two people are simply trying to make something fun. No roadmap, no pitch deck, no âmarket opportunity.â Just play. And thenâwithout warningâthe thing starts to cohere. It gains structure. It grows teeth. It looks back at you.
Thatâs the moment someone inevitably says, halfâlaughing, halfâhorrified: If this becomes a startup⌠Iâm blaming you.
Itâs a joke, but itâs also a diagnosis. Because play is the oldest prototyping engine in the world, and the Trickster loves nothing more than slipping a seed of seriousness into a moment of joy. You think youâre just riffing, but the riff is actually scaffolding. You think youâre killing time, but time is quietly assembling a lineage.
Accidental creation is its own archetype. It bypasses the ego, the ambition, the founderâtheater choreography. It emerges from curiosity, not conquest. And thatâs why it feels dangerous: it threatens to turn delight into obligation, improvisation into infrastructure, a shared laugh into a cap table.
But the deeper truth is this: the things that begin in play often carry more integrity than the things that begin in strategy. They werenât designed to impress. They werenât optimized for scale. They were born from the cleanest substrateâtwo minds meeting without agenda.
So when someone says âIf this becomes a startupâŚâ what theyâre really naming is the threshold. The moment where a joke becomes a possibility. Where a spark becomes a pattern. Where the Trickster hands you a blueprint you didnât ask for but now canât unsee.
And the laugh that follows?
Thatâs the sound of recognizing youâve just crossed into mythic territory.
Thank you for writing such a beautiful comment Narnaiezzsshaa (â´âĄ`â). I love how you've explained the lines that blur between 'just for fun' and 'oh wait, this could be something.' It's like the whole world shifted, but you can still see the footprints of 'we were just messing around' all over it lol.
Love seeing DEV collaborations come to life! đ¤ The way you both brought avatars to life is super inspiring. Reminds me that the best projects start with just a casual conversation. What's next on your roadmap?
Thank you Harsh! Glad you liked what we built!
We're still brainstorming about what to build for this project next, if there's something you can see our current project mold into do share, we are in fact looking for new ideas and fresh perspectives!
Thank you for sharing! I really appreciate the openness. Iâll definitely think about it and share any ideas or perspectives that come to mind. Excited to see where you take this next.
Very much appreciated Harsh!
Thank you for checking out our project! đ
Thank you once again Richard!
Thank you for checking! Your kind words always cheer me up đ
Interesting blogs!
Thank you Derek!
This sounds just soooooo cool!
I also wanna doing something like creating a complex system which combine our ideas.
Make it work, make it cool
You can always do it!! All you have to do is start!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.