Posts Index

Some thoughts on Roblox

Like many other kids in the 2000s and 2010s, quite a bit of my free time growing up was spent playing Roblox. Many people cannot even divorce Roblox as a concept from its child demographic. This demographic (primarily aged 8-16) is undeniably a large part of the platform’s success, its history, and its culture. I would also call it a problem.

The community

See, children on the internet isn’t really a big deal. Kids will go anywhere that’s a place to be, and with the increasingly limited number of public, guardian-free spaces they’re allowed in, online communities are a natural safe haven for them. I appreciate the efforts of platforms such as Roblox, Webkinz, and the now-defunct Club Penguin to capture the hearts and minds of children who would otherwise end up in much more dangerous places. However, there are some rather insidious drawbacks to a kids-first community…

Kids are stupid.

Most of the time, this trait manifests in some rather endearing ways, many of which provide an opportunity for the older members of a community to educate the young. In the wrong hands, however, it can be dangerous.

Many of us are no doubt familiar with the online right-wing and its merciless hate campaigns. They are ceaseless; painfully moralist; often absent of “politics” or an “agenda”, yet somehow always targeting members of vulnerable minority groups. Children are not exempt from these campaigns’ strategies of recruitment and attack, and are in fact prime subjects due to their inexperience and immaturity. Innocent kids attacked by hate movements oftentimes don’t know how to respond to the incessent questioning and threats hurled their way, while the unaffected kids join in and pile on.

Some kids don’t even need to join a hate group to justify cruel behavior online. Many simply absorb bigoted ideas through background radiation, then repeat them ad nauseum in public spaces, much to the dismay of those affected by said bigotry. Since these children have no respect for people they consider unworthy, it’s nearly impossible to convince them to stop. This is made significantly worse by bad actors backing them up.

Kids are vulnerable.

Well, maybe they aren’t. But everyone and their mother (quite literally) from within the mainstream media sphere seems to think so. As such, platforms which cater specifically to children are expected to make an effort to “protect” them from “inappropriate” ideas and behavior. The extent of what’s considered “inappropriate” is often (intentionally) vague. In this case, we’re looking at the standards for morality in the United States, where Roblox is headquartered.

In the USA, the traditional family’s moral code is derived from a puritanical, evangelical form of Christianity. There’s a long and complicated history behind it, so I’ll just get to the point. In short: American Christian morality is about making sure people have children, work hard, and avoid talking about anything more personal than recent sporting events or today’s weather. This results in a population which is emotionally stunted and closed-minded to a remarkable degree. One which manages to export these ideas to other cultures through media and missionaries in spite of their apparent differences. Predictably, it’s the children who are most affected.

If you want to brand your game or app as “safe for kids”, it’s expected that you conform to this American morality, where violence is justified but “obscenity” is repressed. Where it’s safer to label people “degenerates” and call for violence against them than it is to just exist as a queer person. Maybe you need a hate group to incite harassment, but the process for selecting targets is reinforced by the moral code that all “kid-safe” spaces are built on. Giving bigots an excuse to pick on people like us isn’t a side effect, it’s the whole point.

The technical side of things

Okay, that was a lot. Maybe you skipped the last section, either because reading about social issues isn’t your cup of tea, or because it’s quite long and difficult to get through. Either way, I get it. Let’s talk about something lighter.

Roblox is a technical marvel: not because it’s especially impressive, but because it exists at all. You see, the process of making a new app or game has changed a lot between now and 2003.

Back then, if you were a solo developer or small team, and you had an idea for a new project, your process might look like this:

  • Ask, “is there an existing game engine that does what I need?” (The answer is most likely no, because game engines at the time were highly specialized and mostly proprietary. It’s hard to imagine a version of Roblox built on the same codebase as Unreal Tournament 2004 or Half-Life 2.)
  • If not, try to make your own game engine (it will be in C++, because that’s just what everyone else does.)
  • Look for any libraries or frameworks that can make development quicker or easier.
    • David Baszucki and Erik Cassel came across the G3D Innovation Engine, a library that handles scene graph rendering and vector math. They would later hire its developer to work on Roblox directly.
    • Roblox would go on to use OGRE (another rendering library), RakNet, Bullet Physics, and other third-party software.
  • Create new libraries to implement features specific to your project.
    • Since physics wasn’t exactly common in real-time applications at that point, David Baszucki used his own ImPlicitNgin software to provide rigid-body physics to Roblox’s world.
  • Put it all together (the hard part, maybe not so hard if you know what you’re doing.)

Now, that process might look more like this:

  • Find a game engine that you can afford the license for
  • Learn the scripting language and scene editor
  • ???
  • Profit.

Okay, maybe it’s not that simple. The process of actually making your game is still pretty complicated. The underlying technology, however, is pretty much figured out for you.

Basically, I just think it’s really, really cool that Roblox was built without using a game engine. I think that has some really interesting implications for the decisions that had to be made regarding development. I think it’s the reason why some things took so long to implement, or why some things were never implemented at all. What I’m saying is, Roblox would not be the same if it were made today. And I think that’s really cool.

You know who doesn’t think that’s so cool? Roblox engineers. You know, the ones who actually have to work with the codebase. It’s quite a problem for them, actually!

“Modernizing” Roblox has been a pretty big deal since about 2016 or so. There were similar changes before, like the dynamic lighting system introduced in 2013, or the deprecation of stencil shadows (a technology that stopped being industry standard after 2005) in 2014, but these “modernizations” were still pretty unorthodox compared to the commercial game engines of the era. However, it was the Future is Bright development phase starting in 2016 or so that really got things going.

The Future is Bright began as a hack week project by a Roblox engineer. The first iteration involved a GPU-accelerated voxel lighting system that could provide more detailed lighting closer to the camera. By the time The Future is Bright was shifted into phase 2 (around the time of its release, alongside PBR materials), the upgraded voxel lighting was abandoned due to performance concerns, and voxel lighting as a whole was by then reserved for low-end devices (except for ambient occlusion, which it continued to provide alongside shadow-mapped sun shadows). The Future is Bright also brought PBR materials, HDR lighting, shadow mapping (initially for sunlight, later expanded to local light), and so on. These technical improvements would go on to define the look of Roblox for the rest of its existence as Phase 2 wrapped up around 2020. But at what cost?

See, while these new rendering features are meant to provide “better” approximations of physically accurate lighting, they do so at the cost of artistic control. PBR lighting also tends to produce results that look fantastic with properly simulated bounce lighting and detailed surfaces (such as those seen in 3D-rendered Disney films), but rather underwhelming for most real-time applications. Roblox’s smooth plastic surfaces are severely compromised by PBR dougheyness (for lack of a better word) and look quite bad at certain angles and in certain lighting conditions. While the PBR lighting model is helped by the “Future” lighting mode, which replaces blurry voxel shadows with well-defined shadow mapping (and fixed-color studio light with scene-based ambient lighting), outdoor lighting still looks ever-so-slightly “off”. Besides, this lighting mode has a severe performance penalty on lower-end devices and introduces a number of stylistic problems.

Screenshot taken in a legacy Roblox place with a mid-2010s client The old, pre-FIB client on a place with standard voxel lighting. Delightfully simple.

Screenshot taken in a legacy Roblox place with a modern client The exact same place, ran through the standard upgrade path, on a modern client. It just feels… off, no?

See the issue? Though it’s difficult to describe, the new lighting makes the visuals more complicated at the cost of style and personality. You can achieve some great visuals building a new Roblox place from scratch as a talented 3D artist. But that’s just not what Roblox is about. At that point, why not use Unreal Engine instead? It’ll do just fine if placing exported 3D models in a generically lit room is what you want to do.

Roblox is about building! About providing a simple interface to people who just want to make models out of bricks. About letting the builder decide how their place looks. About providing a simple foundation on which fun can be made. By modernizing the technology behind Roblox, you loose a lot of what makes it special.

It’s not just the technical changes, either. Roblox seems intent on removing anything fun or endearing about their platform these days. Friends are now Connections, Games are now Experiences, the Discover page is now Charts, and so on. The client isn’t safe from these changes either, as more and more GUI elements are replaced by ones in a more “modern” style, demonstrating that, to them, meeting modern design expectations is more important than providing a functionally improved user interface. The Roblox design system is, at this point, indistinguishable from that of any large tech company.

Okay, now what?

Believe it or not, this rant had a purpose. I don’t just want to yell about how bad things are. I want to make them better! I want to put my ideas out there and work with people to achieve common goals.

Roblox, as it is right now, is a problem. The corporation behind Roblox is not concerned with fun or community-building anymore. Accessibility is now, to them, a means to bring in more customers, not to inspire creation for creation’s sake. Roblox has completely neglected the safety concerns with its platform, to which roving gangs of libertarian vigilantes have responded with arguably even more dangerous practices. Nobody is happy. Nothing is working. Everything keeps getting worse.

The solution

If we really want to solve all this, we need the power of Open Source. Really.

A good, open-source, non-commercial alternative to Roblox is needed to have any chance at fighting its dominance. Merit alone can’t beat the power of monopoly, but it can help! Think of the issues that are plagueing Roblox (and even similar platforms) right now: lacking safety, civility, creativity. All of these things must be reinforced to create a platform better than Roblox could ever be. A better platform built by better people can certainly attract a sizable userbase, and I think the open-source community is perfect for the job.

My goal here is to show people what precisely Roblox is doing wrong. Just about everyone has had a go at expressing their grievances with the platform, and I think we really needed to take a more detailed look at what the actual problems are. No, it’s not “degeneracy”, the spectre of pedophilia, or whatever else people want to clutch their pearls about now. The problems are real. They are with the platform, not its users (for the most part). They can be identified. They can be fixed. That is our job as open-source developers.

Happy 1!

Yes, it’s the fifth of May. And what does 05/05 equal? 1, of course! And the best part? That will still be the case no matter what date format you use. Love wins.

At this point, it’s been a few days since the official launch of bunabyte.net. There are still many changes to be made, many things to be sorted, and many ideas to express. I’d like to thank the people at Cloudflare for providing a cheap and easy static site host that lets me keep this thing up-and-running (although they aren’t paying me to say this, and I don’t always agree with their decisions, so who cares). I don’t think any website has ever had a clean launch, but I’m trying my best here.

As for the blog: for the time being, it’s where I’ll be putting my long-form articles, which I hope are sufficiently thought-provoking. I have one about Roblox coming up soon, where I express my grievances in a way that few people have bothered to do in the past.

Thank you for staying with me while I establish my new place on the web!

Hello, world!

This is the first post on my new site! Exciting, isn’t it?

I’m using a great piece of software called Jekyll to generate my HTML pages. The limitations are a bit rough at times (please don’t look at the code for my archive page), but very few things seem to be off limits once you take fancy templating tricks and plugin scripts into account. Besides, it’s a static site generator, so I don’t expect to do anything too crazy with it.

One benefit of these pages being static is that they’re super cheap and easy to host. You probably don’t care about that, but you can at least rejoice for the marginally better loading times on your busted old machine.

What to expect going forward

This site is dedicated to hosting my unreasonably large body of work for anyone who wants to see it. The blogging aspect is cool and all, but I don’t plan to use it much, since I already have a Tumblr you can check out instead (expect much less serious stuff from there, however).

I do 2D illustration, 3D modelling, various forms of technical artistry, and a whole lot of programming. This will inevitably be reflected in the content of the website. Do with that what you will.

Pagination controls coming whenever I feel like it.