Federated Roblox
Background
I hate modern Roblox. I played Roblox starting in 2009 and loved it through about 2016 or so. The game looked like LEGOs, the games people made were simple and fun, the sounds/ambience were quaint. The website itself was fun. You could browse the shop and buy items for your avatar, and you could create and join groups to chat with people. After that time it started to degrade into a corporate hell world. The engine got more features, and in doing so, the games looked less and less like the classic Roblox I grew up with. It barely resembles LEGOs and the games are monetized to hell. As someone who uses Linux, federated social media, and FOSS software only, I’d love to have something like Roblox that was FOSS and federated.
Project Goals
Overall, I want to recreate the original classic Roblox feel. I want a game engine that looks like LEGOs, a studio that lets you create games in the engine with simple tools and Lua scripting, servers that allow people to play these games together, and a website aspect that lets people have customizable avatars and profiles and groups and so on. No it won’t be called federated roblox. I don’t know what this project is going to be called yet.
Decentralization
I want the servers for the games and the websites people find them on to be something that people can self host on their own domains. I also want them to integrate with each other seamlessly, so players who have an account on one instance can join games on another instance.
The Website
The website is going to be the social media aspect of this. I will learn about ActivityPub to see how it fits into this project. I want all the features I enjoyed about the Roblox website before. I want you to have a LEGO-looking avatar, and a place to create and share accessories for avatars, like hats, shirts, pants, and even models for the shape of the body parts. I want groups that people can join, that may be focused on a certain game, instance, or another topic. I love the social aspect of Roblox, and this would fit this project into the world of federated social media. I want people to have user profiles to describe themselves, show their avatar, and the games they have made. I also want a place where people can go to explore all the games either on their instance or across many instances.
The Game Engine
The way Roblox currently works is you browse the site for a game you want to play, then you click the Play button. The Play button downloads the client for you if you haven’t downloaded it yet, then opens it and adds you to a server running that game. I think it would be nice, considering how important the website aspect is to Roblox, if the game ran in your browser, instead of opening a separate program.
I currently am thinking I will use wgpu for this. I am familiar with Rust and I also like writing it. Wgpu is something I’m new to but it seems very much capable of doing what I want in a clean way. I’m going to have core engine that does all the game loop with its physics and lua scripts (I’ll have to embed lua into this engine). The core will be used by the basic player client, which may not be very different from the core. This is what users will use when they hit Play on a game. They will connect to a server and then have a character in the game. I will also need a studio that users use to create games. It has the core engine, but also a complex GUI to add bricks, write lua scripts, and test the game. Its going to be somewhat intentionally basic so games still fit the vibes of classic Roblox.
This is the part I am starting my work with. I am currently learning how to use wgpu, and this will take some time.