Exploring the Possibilities of Articulated Physics, Part 2

We have a vision for ROBLOX where builders can create complex mechatronic constructs and simulate them in real time with other players. To that end, we’ve been working on implementing a new articulated physics engine, which will ultimately offer greater fidelity and more robust support for joints, motors and multiple articulated bodies. This has been a long and challenging process, but the videos below illustrate the progress we’ve made so far (and since our first article in this series).

Continue reading
     
 

Synchronizing Physics and Rendering at a Smooth 60 FPS

ROBLOX Battle June 2013The ROBLOX game engine interweaves multiple jobs to create an accurate on-screen representation of your multiplayer, physically simulated games. The primary jobs are physics, rendering, networking and Lua scripts, and each job is updated at a frequency that balances performance and fidelity. We are working on rolling out an optimization to those update frequencies – particularly in relation to the physics and rendering jobs – to boost ROBLOX’s max framerate to 60 at almost no cost to performance.

In an ideal world, each of the primary jobs would be updated at exactly the same frequency (let’s say 120Hz), your computer and network would be able to manage the load, and the framerate would stay locked at 120. However, in an online game as complex and variable as ROBLOX, that’s a dream. Instead, we have to optimize the frequency at which each job provides new data for the best possible experience. This is what we’ve done to increase ROBLOX’s framerate to 60: optimize the frequency and distribution of physics updates, and ultimately synchronize the physics frequency with the render frequency.

Continue reading
     
 

Exploring the Possibilities of Articulated Physics in ROBLOX

We’ve been working on testing and implementing a new articulated physics engine, which will offer more robust support for joints and motors, and more accuracy. We have a vision for ROBLOX where builders have the freedom to create the most complex mechatronic creations they can imagine, and simulate them in real time with other players. This has been a long and challenging process, but the video below illustrates the progress we’ve made so far.

Continue reading
     
 

Physics Performance Demo: Domino Stress Test

As you may recall, we recently published an in-depth article about how we’ve sped up ROBLOX’s physics by 2-4x as a result of modeling collisions using impulses rather than springs. The “impulse solver,” together with three recent bug fixes, has drastically improved the performance and realism of one of our favorite physics-engine stress tests: Ultimate Dominoes! by armitroner. In this test, a single force cascades through thousands of standing parts, causing them to topple in quick succession.

Continue reading
     
 

Impulse Solver Gives ROBLOX’s Physics a Serious Speed Boost

Big CrashIn late 2012, a significant fraction of ROBLOX developers worked together to make games run on performance-constrained hardware (iPad, iPhone and iPod touch, to be exact). The team set off on an exhaustive hunt for inefficient processes within the ROBLOX source code, then found ways to optimize the problem areas that had substantial performance payoffs. This allowed us to bring the full in-game multiplayer ROBLOX experience to mobile devices in December, but we did have to make a concession: there would not be a destructible environment in ROBLOX Battle. The physics simulation was too resource intensive.

Soon, that’s going to change, as Kevin He has altered the way ROBLOX handles collisions – one of the major components of our distributed physics engine. Better yet, you’re about to see a 2-4x increase in physics performance across all games and hardware.

Continue reading
     
 

Smoothing ROBLOX Character and Vehicle Motion

Character in MotionWhen you see ROBLOX characters moving in-game, their motion occasionally appears to “stutter.” The problem is magnified in certain scenarios; for example, two characters standing in close proximity on a moving conveyor will appear to stutter dramatically in each other’s camera. ROBLOX Client Physics and Networking Lead Kevin He recently dove deep into this problem, as it applies to characters and vehicles, and has some observable improvements to share.

First off, let’s take a look at some before-and-after video. In both clips, there are three players in a vehicle and the video is captured from the camera of a non-driver passenger. On the “new” side, it’s clear that much of the vehicle’s motion stuttering has been eliminated.

Continue reading
     
 

Enhanced Water Physics, Vehicle Seats Support Rear Propellers

ROBLOX BoatingWe’ve talked previously about our ongoing effort to build robust joints and motors, and even touched on implementing seats for boats that support rear propellers. We’re still ironing out bugs with our soon-to-be released robust joints and motors, but we decided to release our new boat seat and water propeller support first. These features function independently, letting you experiment with propellers and watercraft today. Though this blog post features some pretty complex ideas in terms of building, we are hard at work on streamlining these building methods in the future so they’re intuitive for all uses. For now, check out what we’ve got so far.

In order to understand the changes we’ve made to ROBLOX’s water physics, let’s discuss how a propeller works, particularly in water. Like tires on a car, propellers convert power into forward motion by rapidly spinning at just the right speed, velocity, and most importantly, angle. The faster they spin, the faster your water-based vehicle should propel forward.

Continue reading