After several months of hard work and fun tinkering, the Cesium team in collaboration with the University of Pennsylvania’s Venturi Labs has finally produced a game worthy of our beautiful Cesium arcade cabinet!
Thanks to our all-star team consisting of Venturi Labs Lead Developer Aline Normoyle, University of Pennsylvania graphics masters student Zimeng Yang and Penn professor Stephen Lane, we managed to implement a solid drone-racing arcade game showcasing many fun Cesium features, just in time for GeoINT. Here are some of the highlights:
With all the power of the Cesium engine at our disposal, one of our first development priorities were cutting-edge visuals.
We ended up setting the race tracks in Bentley’s impressively high-resolution Philadelphia Reality Model, rendered of course with the help of 3D Tiles. This was an excellent test case for Cesium – not only did we want to use an incredibly detailed model, we wanted to fly through it at drone speed! Lucky for us, with the help of recent Level of Detail Skipping optimizations, our engine handles it with no trouble.
With such a beautiful 3D environment, we had to make sure the rest of our 3d models were on par. Here’s a sample of fun animation and shading effects we used:
The drone model featuring PBR shading.
Drone model silhouette highlighting on mine collision.
Coin glTF with normal mapping.
Camera Model and Controls
A racing game is only as good as its controls! We put a lot of time into designing and tuning camera and control systems that feel smooth and responsive.
Thanks to Dr. Lane’s background in control dynamics, we quickly realized that updating from a fixed to a third-person camera model made a huge difference in gameplay. Switching the control scheme to apply an acceleration to the drone instead of just setting velocity directly also made the drone movements feel much more organic.
However, as is always the case with game development, some of our most valuable insights came from thorough playtesting, both at AGI and the University of Pennsylvania. One of the first things we realized was that the drone was much more difficult to maneuver using the arcade controls than our development machines. In response to player feedback, we ended up adjusting level layouts and reducing the amount of drift in the drone’s movement.
Since AGI is of course full of aerospace enthusiasts, we even had some actual drone experts offer feedback on our system! Thanks to these experts, we changed the control scheme to use two joysticks, just like a real drone controller.
The net result of all our playtesting is a polished experience that we hope is just the right balance of fun and challenge.
AGIers experiment with the beta controls.
In addition to having polished gameplay, we wanted our game to be easy to showcase at conferences. Just like a classic arcade game, we decided to implement a demo mode so that users could preview the game while passing by.
To do this, Dr. Normoyle ended up experimenting with several different ideas for caching out the game state in a single playthrough. Unsurprisingly, two minutes of drone simulation can create a lot of data! In the end, rather than trying to store drone state directly, we ended up storing the user’s input, sampling frequently, so that we can resimulate the playthrough with quite accurate results. If a player gets a particularly high score, we can playback their game to inspire new players to give it a shot!
Overall, we’re very proud of the finished product and trust that the Cesium community will impress us with their drone-piloting. The arcade booth will be touring with through summer conference season, starting with GeoINT! We’ll also be at FOSS4G in August. Be sure to stop by and give it a whirl. We’ll be offering some very choice Cesium swag to whomever sets the top scores. See you there!
Until then, check out the gameplay below.
As always, feel free to tweet @CesiumJS if you want to chat about Cesium.