User Showcase: Procedurally Generating a “Zombie City!”

Zombie City SkylineProcedural generation refers to content that is created algorithmically, as opposed to manually. It was originally implemented in video games as a workaround to the memory limitations of early hardware; for example, the 1984 computer game Elite used procedural generation to create a universe with eight galaxies, each containing 256 planets, that wouldn’t soak up valuable memory. Today, procedural generation persists, but instead serves as a method for developers to make each play session of their game dynamic. ROBLOX’s Build and Battle, for instance, uses it to create a random swath of jagged terrain for each match.

Cunning ROBLOX users have found ways to implement procedurally generated content in their games. Zombie City!, an abstract – at least, for now – game by user um3k, known outside ROBLOX as Justin Phillips, is one such case. Each time a player starts an instance of the game, it procedurally generates an expanse of terrain and a complete city — littered with zombies.

Continue reading
     
 

Speeding ROBLOX.com with Message Queuing

ROBLOX Catalog ScreenshotIn an April blog post, Supporting Millions of Players at ROBLOX, we mapped out ROBLOX’s back-end web technology. Today, Gigi Sayfan discusses message queuing, a single component nestled in our greater web infrastructure, and how it helps us accelerate updates to our huge catalog and the user-account search function. He also offers practical advice on setting up a message queuing application for a specific set of goals.

In a common, distributed web application architecture, multiple web servers talk directly to a database and/or to back-end services that relay messages to the database. ROBLOX has millions of users, who constantly bombard our many web servers with requests that eventually funnel into the database. If the database is busy, it will be slow to respond to requests – both from the web servers and back-end services – and the user experience will suffer. Worst case scenario, requests time out.

Continue reading
     
 

Using Run Length Encoding (RLE) to Compress ROBLOX Terrain

Terrain-based ROBLOX IslandROBLOX released its high-performance terrain feature late in 2011, allowing users to create and play games significantly larger than anything previously seen on the platform. Many ROBLOX users have since taken advantage of terrain, particularly to facilitate expansive games with fast vehicles. Currently, the ROBLOX Content Team is pushing the feature further than ever before with a new game that procedurally generates destructible, cliff- and gold-ridden terrain each round (we’ll have more on that soon).

Terrain can be up to 2048 x 256 x 2048 studs in dimension, containing up to 16 million 4 x 4 x 4 terrain cells, with no graphics slow-down. One of the supporting techniques we use to make terrain so scalable and efficient is Run Length Encoding. Run Length Encoding makes the file sizes of terrain places a small fraction of what it would be with normal parts.

Continue reading
     
 

Testing the Accuracy of ROBLOX Physics with Potato Cannons

Potato Cannon ScreenshotROBLOX is built on a comprehensive physics engine, and our developers are constantly optimizing it so it can handle interactions between more physics objects and players, in an increasingly accurate and consistent way. We recently put our engine to the test with a new projectile-motion simulator – and most satisfying armament – the ROBLOX Potato Cannon. According to the results, which we describe in this article, we’re on the right trajectory.

The ROBLOX Potato Cannon mimics its real-world counterpart, a contraption traditionally constructed using a pipe and some means of generating air pressure. The difference is our potato cannon automatically performs the calculations you need to hit your target. We constructed the potato cannon so it computes the launch angle and, with the velocity at a constant 300 studs/second, the correct trajectory for your now-deadly potato. If your target is outside its range, it defaults to the maximum distance it can shoot.

Continue reading
     
 

Preview Our In-Game Wardrobe Change Interface

In-game Wardrobe Change Interface and CharacterROBLOX is working on a new feature that lets players change their character’s clothes and preview their appearance in-game. User Experience Engineer Ben Tkacheff is here today to demonstrate the interface he developed and offer some insider information on how he used ROBLOX’s tools to create it.

Part of the fun of ROBLOX is creating a persistent avatar and making it your own with the finest, most stylish ROBLOX attire. Traditionally, that customization happens on the ROBLOX website – outside the game engine – and requires you to enter a game to see whether the new look suits your fancy. Now, we’re polishing an interface that lets you change and preview your look in-game.

Continue reading
     
 

A Deep Look at ROBLOX’s Buoyancy and Water Physics

Water Physics and BuoyancyBoats. Waterfalls and geysers. Swimming and diving. Flowing rivers and deep pools. With version 1.0 of ROBLOX’s buoyancy and water physics, carefully crafted and researched by our Physics Team, these things are not only possible, but also realistic. We’re featuring ROBLOX Physics Engineers Kevin He and Tyler Mullen today, as they explain the latest iteration of buoyancy (see the original here) and its implementation in ROBLOX.

Water is more than a texture in ROBLOX. It has its own unique properties and behaviors, all of which integrate into ROBLOX’s existing physics engine. Objects float on water surfaces, bob up and down with pressure changes and sink if they’re too dense. Water flows, pushing objects along its path, with user-defined directions and velocity. Players dive underwater and swim the depths or wade on the surface.

Continue reading