Making the Cesium Game Fun

by

Venturi Labs has been hard at work on the Cesium arcade game! In the past few weeks, we’ve made a lot of progress towards a fun, feature-complete game. Here’s what we’ve been up to.

Visuals

It wouldn’t be a Cesium game without beautiful visuals that show off the engine’s unique capabilities. To that end, rather than just flying over open terrain, we decided to create a demo level featuring a detailed 3D environment. For that, we of course turned to 3D Tiles!

We didn’t have to look far for a high-quality 3D-tileset to fly through – one of the nicest tilesets we’ve seen is the Philadelphia Reality Model, created using Context Capture for the Pope’s visit to Philadelphia. Getting the high-resolution model of downtown Philadelphia into the game really kicked things up three notches for us.


A view of City Hall in the Philadelphia Reality Model.

Not to be outdone by the beautiful environments, our very own Ed Mackey decided to improve our drone as well by modeling and texturing a Cesium drone from scratch complete with normal maps!

The new drone model.


Camera Model and Controls

We quickly realized that the quality of the drone-racing experience would rest on having smooth, responsive controls. Lucky for us, Venturi Labs founder and Penn Professor Stephen Lane has a background in control dynamics for aerospace!

We started by switching our controls from modifying velocity directly to applying a force, so when a player pushes the joystick forwards, the drone accelerates. Using force-based controls made the drones feel significantly more realistic. After a lot of tuning and playtesting, we’ve found a nice balance of control-responsiveness and physically-inspired challenge.

While these control-improvements made a huge difference, we realized that the next playability bottleneck was our camera model. Since our original camera always followed the drone at a fixed distance and angle, it was difficult to tell how fast the drone was moving since its position never changed in the camera’s frame of reference. And the drone’s speed is especially important information in the new acceleration-based control scheme!

Our solution was to switch to a new camera model in which the camera tries to maintain a set distance from the drone, but moves slower than the drone’s top speed. This means that when the drone accelerates forward, it moves towards the front of the frame, and when it de-accelerates, it moves towards the back. Although this change may seem subtle, this makes it much easier to tell how fast the drone is moving and changing directions. See the difference for yourself below.


The original drone controls and camera model.

The updated controls and camera model.


Gameplay Features

In addition to our core camera and control updates, we’ve added a lot of additional basic game features. We can now load level paths (represented as splines) from a json, procedurally-generating rings and mines (to avoid!) from the spline’s control points. We’ve also changed the game’s termination conditions, so levels have a maximum amount of time rather than a quantity of fuel as a limiting resource.

We’re really excited about our progress so far – the changes we’ve made have done a lot to make our game playable and fun! In fact, we’re so happy with some of our features, such as the trailing camera model, that we’re planning on pulling some of them into core Cesium for the community to enjoy too.

For now, check out the gameplay below.



We can’t wait for you to play this summer! Get excited and stay-tuned for more updates!

As always, feel free to ping me at rhwang@agi.com or tweet to @CesiumJS if you want to chat about Cesium.