Resources from the Roblox Creator Game Jam 2024

Hi Creators!

At the beginning of the year, the Roblox Creator organization (the people that focus on building things for all of you creators!) got together for our second annual Game Jam. Everyone from engineering, product, design, art, and more spent a week in between our busy jobs to build experiences, assets, and plugins with Roblox Studio.

These annual game jams provide a way for those of us who work everyday to improve creating on Roblox to check in and see all of our progress over the last year. And more importantly they allow us to see how much we can still improve. It’s one thing to see a bug reported on the developer forum, and another to run into it yourself! We keep a running list of all the sticking points we run into over the course of the jam so that we can work on them over the next year.

In addition to being beneficial to our jobs, game jams are just plain fun! It’s a great excuse to get excited about the platform, and to work with folks that we normally don’t have a chance to, which can lead to all sorts of new connections and ideas. There’s a huge variety of experience in the Creator organization, so there’s always something to learn. And it means you’ll see people who’ve never made a game before working with folks who used to be (or still are!) Roblox creators themselves.

During Game Jam, anything goes and it shows! The only rule is that we have to show off whatever we made at the end of the week. This diversity and sense of fun leads to tons of fun and wacky projects, and plenty of learnings that we can use over the next year to help us make creating on Roblox even better!

We thought it’d be cool to share some of the things we built, but since we hacked our way through this week, all the uncopylocked places that we’re providing come with no warranty :grinning:.

Without further ado, here’s some of the experiences we wanted to share:

Server Authoritative Tennis

Server Authoritative Tennis

This tennis game appears simple on the surface, but utilizes 'UnreliableRemoteEvent’s under the hood to create a totally server authoritative, secure experience. We also built a prediction and rollback model to make for a completely smooth experience.

We start by defining a structure for the shared state of the court, which includes the position and velocity of the ball as 'Vector3’s, the player position and directions as 'Vector2’s, and any currently active impacts.

Clients send “actions” to the server, either a swing or a move. Swings are sent through RemoteEvents, as we want to be sure they come in, but movements are sent through UnreliableRemoteEvents, because if one of those packets drop, we can feel safe knowing we will eventually get another packet to replace it.

We then have a function that will take the current state and an action, along with a timestamp of when they happened, and produce a new state. Crucially, this does not mutate the original state in any way. This is to allow us to keep a copy of the original states for rollback. In order to stay responsive, the client predicts its own state based on inputs from the user and the last known state of the server.

The client reports each of its events to the server along with a timestamp obtained from ‘Workspace:GetServerTimeNow()’. After validating that the timestamp is within a reasonable range, the server rewinds back to a snapshot of the state at that time, applies the event, and re-simulates back to the current point in time. This allows all events to be simulated at the exact time that they should have happened, rather than with a delay.

The server reports the latest state back to all the clients, which they can then use as the new source of truth to predict from. Because the state on the server is constantly being re-written based on older inputs from the client, players with poor connections may appear jittery to the other players. In order to mitigate this, some simple interpolation is applied to the characters of other players on the client.

Ghostwriter

Ghostwriter offers a unique language learning experience by turning vocabulary and spelling exercises into engaging gameplay. Players are challenged to type translated words within a tight time frame, providing a fun and interactive way to master new languages.

One distinctive feature we’re excited to showcase is how we implemented 2D. While most experiences on Roblox focus on 3D immersive gameplay, we chose 2D art to keep the focus on language learning. By fixing the camera on the vertical axis and extensively utilizing surface GUIs and billboard GUIs, we can render sprites effectively while still leveraging collision detection, physics, and other useful APIs. This approach allows us to enjoy the benefits of a 2D interface without sacrificing the interactive elements that make games enjoyable.

Most importantly, it enabled us to rapidly iterate on the gameplay, ensuring that the core language learning loop is highly polished within the constrained time frame of the game jam!

ObbyVoice

ObbyVoice is an obstacle course game, but with a twist that sets it apart. By utilizing Roblox’s new audio API, we made a game where players use the volume of their voice to control their character. Actions such as walking, running, and jumping depend on how loud or soft someone speaks into their microphone. This feature added a fun and interactive element to some classic obby gameplay.

The Audio API’s design, which we affectionately referred to as “wire” due to its intuitive and seamless way of connecting audio components, truly brought our voice control concept to life. By establishing a connection between AudioDeviceInput and the local player using a wire, and then linking it to AudioDeviceOutput within the workspace, we created a feedback loop that allowed us to hear our own voices during gameplay for quick testing in minutes.

We then connected an AudioAnalyzer to the AudioDeviceInput to precisely measure the volume levels of the player’s voice. This enabled us to adjust the voice control thresholds for walking, running, and jumping, turning the calibration process into an entertaining experiment in itself. The task of balancing these thresholds provided plenty of laughs, particularly when it involved explaining to curious family members why we were alternately shouting and whispering at our screens for hours. This part of the project really showed us what Roblox’s audio tech could do, but more than that, it reminded us how much fun it is to make something new and cool together

61 Likes

What about an endless runner where you scream to jump?
But good use of the new Audio API!

Didn’t think on that, Pretty good concept so far! :wink:
But, what if the community recreated other sports as well like this?

12 Likes

Yes… Yes! This is what VC should be used for. And now, bring all blind monsters in a squad!!!

11 Likes

Are these game jams exclusive for staff? Forgive me if I am uninformed. I’ve been looking for game jams in the Roblox community recently and if Roblox is hosting any that would be awesome!

5 Likes

I think it’s the Roblox 2024 Creator Challenge, you should be able to find it if you scroll down a bit in #updates:community

it’s already over sadly so you’ll have to wait

5 Likes

This isn’t the creator challenge. This is an internal gamejam where Roblox staff get to use the products they are building every day. Developers cannot participate.

7 Likes

Hm I thought it was the 2024 challenge because of the title.

6 Likes

Hello! Are there also games from your first jam that we can play?

2 Likes

We didn’t do as good a job collecting games from our first jam, so there’s not a unified place to find them like there was this year.

That said some folks have their jam games on their profiles, or specific groups for jaming (such as the one I use, which also has all of the experienced uncopylocked!) so you could poke through and see if you can find more!

In future jams we will try and share more experiences, so stay tuned!

5 Likes