Creating the Environment for Soldiers Inc: Mobile Warfare

Articles
02/20/2018

Environments are hard to make to begin with, especially when your scope is the whole game world. But, on top of that, we had to make sure it would fit on the screen of a smartphone. My name is Olha Mendelis. I’m an Environment Artist at Plarium Kharkiv, and I’m here to tell you how we managed to do both. 

In this article, I’ll be breaking down how to model a realistic environment, and how to find the right balance between quality and technical requirements.

<image here>

Our project was Soldiers Inc: Mobile Warfare, a military game in a futuristic setting. The team was tasked with constructing a World Map populated with each player’s individual Base as well as designing the interior of those Bases. This included the landscape, climate, and flora, for both the World Map and the Base. We were required to work through every detail of the environment and optimize it all for the Unity engine.

Almost immediately we decided to create terrain that was rocky and tropical (since buildings always look better with the background of sand and greenery), so we started collecting reference images.

The program, PureRef, was really handy. PureRef creates a blank window, which you can set to always move to the front of your screen and remain visible, even if programs you’re using would cover it. You can populate that window using screenshots, hyperlinks, computer files, really anything, and you can arrange the images however you like. Resizable at the click of a button and with no pesky UI, PureRef was extremely helpful for making sure we had painless access to reference images. Which we needed, often.

<image here>

We started the project by seeking out actual places around the world that would fit our requirements. When searching for reference material, make special note of the details that are peculiar to your specific environment.

For example, canyon cliffs could have severe fracturing at the bottom and large masses of rock in the middle. In rocky terrain, the shape and color of plants also change depending on the height where they grow. You never know what about your environment will be particularly visually striking until you start looking at it in detail.

<image here>

After we had our reference material, we started cooperating very closely with the Concept and Technical Artists. Why? Well, apart from aesthetic requirements, models had to be in line with strict technical specifications. Ensuring that our work conformed to both of those sets of requirements was impossible without communicating with the other teams on a regular basis.

An important consideration was that while the performance of mobile devices is constantly advancing, the final size of the game build couldn’t exceed 100 MB. This was mostly our problem: the game’s environment represents a large portion of any build. We had to do our best to optimize the rendering speed, so we could save battery life and keep the fps at 30 on as many devices as possible.

Furthermore, we applied the technique of mixing tile textures. The vertex color was selected as the main mask, while the depth texture stored in the alpha channel of the main texture was used for transitions. This approach allowed us to achieve a relatively diverse pattern on landscape surfaces while only using a few textures, all low-res.

We started off by designing the Base, as it’s the first thing a user sees when entering the game. Initially, we selected the color palette, then developed the concept for the landscape and its composition. When designing the Base, we opted for simplicity as much as we could. We had to be extremely careful when placing cliffs, vegetation, and rivers, as well as helipads, defense towers, and cannons. Too much visual activity at once would impair performance and clutter the already-tiny screen.

<image here>

Cliffs

The best tools in ZBrush for sculpting cliffs and rocks are brushes that separate the alpha channels for textures and fractures, such as the Trim Smooth Border brush, the Orb Crack brush, and the Planar brush. The basic shape of the cliffs was created on the mesh with a small number of polygons. Generally, we used Clay Polish brushes to build up the shapes and Trim Smooth Border to work in the details. When the major blocks and fractures were finally visible, we proceeded to refine the mesh in the high-poly mode (several million polygons) by adding cracks and tiny details.

The whole reason for this was simple: the texture had to tile properly, and repetition of details shouldn’t strike the eye. At first, we modeled a few parts of a cliff in ZBrush, then positioned them on the plane and made a Heightmap. The resulting map was tiled in Photoshop using the Offset and Clone Stamp tools, and afterwards it was placed back on the plane in ZBrush as a displacement. As it turned out, some visible defects appeared at the spot where the map was smoothed in Photoshop, so we had to place chunks of rock there to conceal these defects. Frankly, it’s not the easiest way to do it, but we were able to experiment with the rhythmic alternation of elements and different mass positions.

As a result, we had ready-made work materials, which we could combine to create various textures and select the one we preferred.

<several images here>

The diffuse texture was drawn in Photoshop using masks obtained from the Normal Map (Cavity and Ambient Occlusion), mixing cliff textures, and adding the grass.

Grass

Grass and leaves were created in 3ds Max starting from the modeling stage and up to rendering. They were propagated using the MultiScatter plug-in, and as a result we obtained the ready-made texture – the only thing left was tiling it.

<several images here>

Sand

We made our sand texture in Substance Designer. This program allows you to create various texture options, select a nice-looking tile layout, and get masks at once to mix the texture in a Unity shader.

<several images here>

Plants

Creating greenery was one of the most difficult stages of this process. We had to draw the tropical plants as realistically as possible while observing strict limitations for polygon counts, and we couldn’t use alpha channels.

First, we created a library of plants and textures based on collected reference images. We transformed the models of high-poly leaves taken from ZBrush into mid-poly ones using ZRemesher. Afterwards, we performed mapping and drew the texture. Leaves were combined into separate groups, and this way different textures were baked.

<several images here>

As for wooded sections of the Base, we didn’t create individual trees, instead designing a low-poly forest and adding a few notable offshoots to give the distinct impression of trees.

<image here>

Optimally, we would have been able to bake the forest into flat planes, but the camera could rotate in this game. The illusion would have shattered, and simply looked like a flat image with a texture on it.

Lighting

We used a lightmap to simulate lighting: in our case, lightmap channels were applied for different weather conditions, so they had to be monochrome. They were painted in a gradient between two colors of light and dark. This way we could use fewer textures and keep them at smaller sizes while preserving visual quality and performance.

<YouTube video here>

The World Map

One of the technical requirements for the World Map was that it would be three dimensional and that the camera would be able to rotate 360 degrees. The design requirements dictated that the icons and structures representing the Bases scattered around the World Map would have a distinctive background, as they represented major elements of the map and the gameplay. They would have to be both distinctive and attractive, in a space that was completely 3D.

<YouTube video here>

As mentioned earlier, there were strict technical requirements imposed on the graphics to ensure that the game could run on almost any mobile device. In order to ensure high-quality batching, the global map was created using a single shader in the game engine. The entire surface and additional elements were taken from a single texture atlas without a lightmap or physical lighting.

We drew the coastline, flat terrain, and hills, while the bare ground was filled up with additional tiles of grass and props, including small rocks, lakes, traces of explosions, and trees. Then, just like in a LEGO construction kit, we combined all these elements into one large global map.

<several images here>

To create highlands and coastlines, we modeled a block that consisted of three parts tiled between each other, with each piece unwrapped into a rectangle. Then, using the resulting low-poly images, we made a Heightmap that was used to create the detailed highland in World Machine. For example, mountains on the global map were created in this program from scratch. Moreover, we used texturing masks from World Machine to design a high-poly texture in Photoshop.

All high-poly and low-poly textures were baked in 3ds Max as a Complete Map and tiled between each other using Mudbox.

<several images here>

Conclusion

So, there it is, from beginning to end. As it is with most art, creating an environment for a video game is easier to describe than to do. All the tools and techniques I described could be incredibly useful for you, should you ever have to make incredible art with tight technical requirements. Game art is as much about finding creative solutions as it is about making creative images.

That’s it for now. I hope you enjoyed this article and wish you success in all of your endeavors!

Original article: https://render.ru/ru/PlariumUkraine/post/13786