AP3X (pronounced “Apex”), is a prototype FPS we’re building in the Improbable Labs to test and showcase some unique features of SpatialOS.
Some keen developers and artists at Improbable Labs have been working on SpatialOS’s first prototype first-person shooter: AP3X. The game is designed to experiment with some features of SpatialOS, including communication between NPCs in a very large world. But building an FPS in a massive, persistent world comes with some unique challenges; we soon realised that increasing the scale of the map and the number of combatants didn’t just mean “the same, but bigger.” This post is about how character and environment designers can respond to a world that might behave in unpredicted ways.
AP3X also uses the gorgeous rendering techniques of Unity, because it looks great and the integration is a developer/design team’s dream. Our artists sunk their teeth into the project, creating an icy battle arena populated by a mass of distinctive and well-designed characters.
The soldiers started from a concept (centre of the image below) by Calum Watt, a well-known concept artist. Marie, our Character Artist, expanded on the concept with some photo references:
From here, Marie tried out some ideas for the clothes in the cloth simulation software Marvellous Designer. Talking through how the character would move with Vin, our Animator, there were a few practicalities to iron out.
For example, while the character’s running around, she holds a gun in front of herself. This causes a lot of deformation in the shoulder area, creating problems for the puffed-up sleeves in the original concept. So instead, they went for tight bunched-up sleeves.
Once happy with the design of the outfit, Marie made the hard-body pieces (like boots, shoulder pad and breastplate) in Maya and ZBrush, and added them to the cloth simulation.
The next step was to make the clothing a bit more realistic using ZBrush, adding details like seams, stitching, and creases. Marvellous Designer is a good starting point for creating the folds in material created by gravity, but they aren’t the only creases that you get in clothes. For example, trousers normally have creases on the back of the knee, from repeatedly sitting down and standing up. So Marie sculpted these manually.
Jamie, our Concept Artist, did some quick paintover concepts of the soldier. These included coloured armour, to make it easy to differentiate between teams in a world with hundreds of players. We didn’t continue with this concept, but it’s a cool place we could take it to next.
We wanted the game arena to be simple and clean. This concept was our visual starting point: simple enough to be the basis of an interesting look, and easy to scale. Building on top of SpatialOS, the world could easily be thousands of kilometers across, and involve hundreds of players. So the art style had to support that scalability.
Evocative of board games like Settlers of Catan, the arena’s floor is a hexagonal grid: a huge, connected set of hex tiles that stretches across the whole world. Hex tiles are great for scalability, because they make it easy to expand a world (either by procedural generation or by hand). You can use them generate new and varied worlds, without having to hand-craft bespoke levels.
Once Liam, our Environment Artist, had built this small game world in Unity, we played around with some options for gameplay that used the tiles. One idea was that teams could gain control of tiles, changing their colour:
Another idea was to create the tiles as SpatialOS entities, so players could interact with them to create unique, session-specific environments. When players shoot tiles, or drop dead bodies onto them, the tiles could drop or raise, forming defensive structures or obstacles:
Liam also investigated using other kit pieces to construct non-natural environment elements, visually distinct from the natural aspects of the world. They’d be modular as well, so they could also be placed procedurally.
Following on from that build, Liam experimented with creating the arena from bigger terrain pieces. Large, modular pieces of terrain, in 100x100m tiles, could be duplicated and rotated to create a huge environment (complete with elevation changes). This allows the arena to be flexible: we can randomly generate tiles with dressing and gameplay objects, or have artists and designers create and place different tile features.
Jamie, our Concept Artist, explored a variety of 2D concept illustrations, all based on a modular arena. For the terrain and obstacles, he added simple geometric shapes, as well as fissures in the ground to act as hazards.
The final Arena was put together in Unity by Jamie, using Liam’s hex floor tile system. Perilous lava pits add some visual interest, incorporating a funky orange shader by Harry, and topped off with Vin’s ‘ember’ VFX.
Marie’s geometric hill and mountain assets, built in close collaboration with Jamie, were then scattered around the arena, acting as both obstacles and landmarks.
Some of the smaller obstacles are scaled up and placed in the distance, acting as a frame for the game arena and drawing players’ attention to faraway places they can to travel to. Accompanied by foggy visual effects, they give the game arena a sense of scale.
With our small in-house art team, we could spin up a good-looking prototype game in a matter of weeks, using SpatialOS alongside standard tools like Maya, zBrush and Unity.
It was fun developing the character and the world, and interesting to see how the design process changes when building a game on SpatialOS. We realised that the art for the game arena had to be able to scale, to work for a huge world; and character design might need to differentiate teams clearly when there are hundreds or thousands of players on the same map.
AP3X gave us the chance to explore the opportunities that a game built on SpatialOS brings for artists. It brought out some interesting problems, and interesting solutions; and we’re looking forward to exploring more of these possibilities in our future demos and prototypes.