Blog Archive
Imagine this: there’s a ROBLOX game that’s built out of 10 levels. Thousands of people are playing it and teleporting between environments at the drop of a hat. As they move from place to place, their character statistics and ever-growing in-game inventory move with them. They’re all exploring a cohesive world with impressive scale and interacting with one another as they make chance encounters on their journeys. They’re in an immersive world.
This is the impending future of ROBLOX games. Our Client, Networking, Services and Web teams are making it happen by building a robust framework of teleports, game universes and data persistence.
Background
Scalability is important to us. Part of our vision for ROBLOX involves thousands of people playing games at the same time in physically simulated environments – made by a community of builders and developers, of course. We’ve done considerable work to expand ROBLOX’s scale in the last year or so. We’ve launched featherweight parts, which allow the ROBLOX client to draw more objects on screen at less of a performance cost. We’ve enabled impulse solver physics, making part collisions more efficient. We’ve turned on part streaming, which means you join games faster and, if you’re short on memory, only load nearby parts so you can still play large-scale games. Just two weeks ago, we greatly expanded the possibilities of voxel building.
More people are playing. Things are getting bigger. Games are performing better. And everything is about to scale up even more via a trio of key features.
Teleports
Teleports have existed on ROBLOX for a while and serve to let players jump from place to place without having to go back to ROBLOX.com. We have already upgraded the teleport feature so that the transfers from one place to another are more intuitive and almost instantaneous. The biggest change to the new teleports is that they are not powered by LocalScripts (which are challenging to build because they must coordinate with the server), but by code that is run straight from the game server. We have also removed the confirmation message (i.e., allowing the player to confirm/cancel the teleport) and let developers customize a “now-teleporting” message. Additionally, we’ve added events to the teleports API so developers can get information about the teleportation process and make things happen at various stages.
We’ve released a new API for teleport development, opening the doors to more possibilities. While teleports don’t provide scale in the sense of size, they let players jump from place to place, creating a cohesive world. For more information on the TeleportService, see this ROBLOX Wiki entry.
Universes
Game universes represent a rethinking of what a ROBLOX game can be. Instead of it being a single isolated entity, game universes are a collection of places.
One of the best ways to understand the concept of a game universe is to think about an RPG. Let’s say there’s a hub world that’s a town. The game also has dungeons, a desert, a mountain range, a haunted forest and two smaller villages. At this very moment, all this content probably won’t fit in a single ROBLOX game – it’ll either push the limits of performance (resulting in a poor player experience) or have to be simplified so much that it loses its appeal. With the advent of game universes, all those environments become places in a greater world and players seamlessly teleport between them, never losing sight of the game experience.
If a game universe has 1,000 players, they can be spread across the different places that comprise it, all contributing to the total player count. This model knocks down technological boundaries and barriers that ROBLOX game developers may have faced in the past, leaving a new opening to expansive games.
Data Persistence
Data is what lets players jump between the places of a game universe in a meaningful way. Without persistent data, players would move around seamlessly, but the universe wouldn’t remember much. Like teleports, we have offered data persistence for a while; however, we’re going to be introducing a new API for storing data that is far more powerful and robust than the old data persistence system. It adds another layer to your game universe.
One of the most significant advantages of the new data persistence is data is saved immediately – as soon as a call returns in a Lua script. The old data persistence had no guarantees of saving when a server went down or a client disconnected unexpectedly. The new data persistence features global game universe data, which enables developers to read/write information simultaneously at multiple places across their game universe. Combined, teleports and data persistence let players move between the places of a RPG universe, for example, and carry their character data with them. Developers can also create any key they want, and save/load the values associated with it in the future.
Our developers paid meticulous attention to the new DataStore API so it’s easy for game creators to realize the power of data persistence. As you likely know, many top ROBLOX games have thousands of people playing them at peak times. This creates a lot of concurrent data saving. We specifically elevated the DataStore API for developers facing this situation – for example, the Update function handles concurrent data updates automatically. We built in the logic so developers don’t have to worry about it and can focus on making a great game with a seamless player experience for millions of people.
The DataStore is currently in testing with some of our top developers. We’re also building out the DataStore Wiki entry – if you’re looking for more of the technical details, we recommend you start there.
What to expect next
When this framework releases in full, we will provide more detailed documentation describing how to implement and work with it. One of the first examples you’ll see will be the 2014 Winter Games, which will feature a game universe consisting of a social hub and event places – all connected by teleports – and leaderboards powered by the new data persistence system. Exciting times are ahead. Large-scale, exciting times.
If you have questions about game universes and the many features they entail, please post them in the comments. We’ll be picking several questions and answering them live on the ROBLOX YouTube channel tomorrow at 3 p.m. Pacific Time. Plus, you’ll get a shout-out. Subscribe to our channel today and tune in tomorrow!
Kabriel Robichaux (aka inventx), who has spearheaded this development effort, contributed his great knowledge to this article.