
American Dream Roleplay
Context
alt:V is an alternative multiplayer framework for GTA:V and allows developers and players to play on custom servers. These servers can utilize languages such as C# and JavaScript.
I used to be a heavy text roleplayer way before the genre became popular due to voice roleplay servers. People before me played on Habbo but I started my journey on Grand Theft Auto: San Andreas.
I started at around twelve years old, playing on a server called Los Santos Roleplay that utilized a platform called SA-MP which rivaled Multi Theft Auto.
It honestly became my favorite hobby and I spent countless hours getting involved in stories, making my own characters roleplaying other people, even making friends outside of the game from different countries. Other nerds my age were playing World of Warcraft but I didn't care for gear, I wanted to roleplay different characters!
The American Dream
With the help from a friend, we started developing this server called The American Dream. Unlike platforms like SA-MP, we could use Javascript to write the gamemode.
I think two months had passed since my layoff and we got to work. I started by making our own chat system.

I wanted to make it as close to the original SA-MP chat as possible, so I used a lot of the same commands and features. The green code represents a system message, white is a normal message for a character speaking in character. This could vary in shade to represent different distances. The further away you were, the darker the shade of grey.
/me commands kept their original purple color. As for the rest, we just went with what felt right.
Creating Characters
The coolest feature I was working on was the character creation system. I started by just programming it, having no consideration for the UI. It was honestly one of the hardest things I had ever done.
In GTA:V, you need to combine face blends (father and mother), adjust individual facial features with morph targets and then apply things like hair, eye color and overlays. Overlays can be facial hair or eyebrows.
On top of that, I had to program a camera system to switch between different shots (full body and close-up) so you could preview the character properly.
I built this entire system in Javascript on top of the alt:V API, writing my own camera manager and using native GTA functions for fine-grained appearance control. The camera transitions and the ability to lock the player in place while customizing took a lot of iteration to get right.
The whole system was synced with the UI through a WebView, so that when you moved a slider or selected an option, you'd see the result live on your character. It may sound simple now, but writing the whole data flow between client, UI, and server took about a week of trial and error.
Once the system was in an OK state, I started working on the UI. I wanted it to be as intuitive as possible, so I took inspiration from other games like The Sims and started building it out in Figma.





Wrapping Up
Even though we didn't finish the project, building this system taught me a lot.
It started a personal passion, wanting to recreate that roleplay experience I had as a kid but it pushed me to learn a lot. The character creation flow was one of the hardest things I've built, but also one of the most rewarding to see come to life. There's still plenty more I would have liked to add, but I'm proud of what we accomplished and how much I learned through the process.