3D environment and prop artist Anthony Carmonathe and Jeremy Zeler-Maury – the Creative Director/Main Programmer – told 80.lv about the development of Edge of Eternity and the creation of some awesome game environments.
My name is Anthony Carmona and I am a self-taught freelance 3D environment and prop artist, currently based in Montpellier, France. I am 24 years old and since June 2015 I am working on my first contract, Edge of Eternity, a Japanese RPG developed by the awesome team of Midgar Studio, I have also been working for Féerik Games, a mobile game company lead by former Epic Games’s Design Lab Director, Frederic Markus.
Midgar Studio is a small indie studio of 4 people, founded in 2008 and located in Nîmes, in the south of France, Edge of Eternity is Midgar’s first “triple I” game. It has been financed by a Kickstarter campaign that raised 161 000$ last year.
I work in close relationship with Julien Galibert, the art director of the project, and Jeremy Zeler-Maury, the Creative Director/Main Programmer on a daily basis. They will be answering to some of the questions in my stead as they are more involved in some aspects of the development.
Edge of Eternity
Edge of Eternity takes place on a distant planet where fantasy and science fiction meet. The story takes place after an unknown race of belligerent aliens has invaded the world and started to spread a deadly disease called the Metal Fever.
Throughout the game, the player will be travelling across each of the three main continents of Heryon, each of them being composed of different atmospheres, cities and cultures.
The first environment the player will be visiting is located on the Astryan continent, it is composed of lush forests, green hills, marshlands and caves. At the heart of the continent is Herelsor, a merchant city at the crossroads of all the other smaller cities, and the capital, Astrya.
Herelsor is not a very technologically advanced city and relies mainly on wind magic to power windmills help in production flour and spices.
Soon after the main invasion of the alien race, the city has created flying farms to prevent pillages and more deaths, but some farmers still take the risk of harvesting their crops on the ground.
Working on a game with a solid background is a treat for creativity as it gives you healthy boundaries, it allows you to focus more on story telling through your environments and your props, resulting in a more believable experience for the player.
Creating a short story about the environment you’re going to work on will always help you putting yourself in the shoes of the characters that will inhabit it:
- Where is the environment located?
- Is there a big city close by?
- What kind of relationship people have with magic/technology?
- What kind of crops do people grow?
- Has the town waged wars in the past?
These questions you can ask yourself are infinite, but the more of them you answer, the more detailed and compelling your environment will be.
Julien took care of this part as he is working at the office, hence is closer to Jeremy. He started off by planning out the size of the area itself, which is about 3 square kilometers, he then sculpted the main features of the terrain with Unity’s terrain tool.
Then, he defined the main roads, points of interests and finally planted the city right in the middle of the map.
Herelsor’s high tower will be seen from every point of the map and will serve as a landmark so the player never gets lost.
After having blocked out the first defining characteristics of each point of interest, Julien and Jeremy spent some time populating the areas with trees, houses and props.
The exterior of the city is very rural, and is mainly inhabited by farmers and poor citizens that cannot afford to live within the walls of Herelsor, we used wood and rocks are the main materials for this Area.
The city however benefits from trades with the neighboring towns and the capital and shows more luxurious materials and methods of constructions, such as paved flooring, plastered walls, rounded roofs and multiple stories buildings.
One of the key components of a production with such a small team is reusability. You have to be capable of making the most out of what you’ve got without losing too much time on each asset, otherwise you just blow your milestones!
This is why we decided to work with Substance Designer and Substance Painter. The Allegorithmic suite offers the best trade-off between quality and time as it allows you to quickly iterate and fix your materials as you work. It also allows your team to have a consistent style throughout the project. You don’t need to start all over again each time you get your base wrong and it looks good as long as you are careful.
My method of making Materials has changed a lot over the past months, I have gone from semi procedural generation with Zbrush and Substance Designer to fully procedural with Substance Designer as I have a better mastery of the software.
I will spend some going through the process of the Zbrush plus Substance workflow, which is a more interesting approach when it comes to showing screenshots of the workflow itself and will explain how I proceeded with a paved floor material.
(The workflow I have been using is highly inspired by Anthony Vitale’s video on youtube)
I first start off by gathering references on google image and start thinking about the main features of the material to be.
Then I go into Maya and create a few blocks that I stack on top on each other and combine all together.
Once this is done, I go into Zbrush and start sculpting the main details of the blocks, the advantage of having blocks of the same kind stacked on top each other is that you only sculpt details once, saving a lot of time.
Then, I switch back to Maya with an exported lower version (subdivision 2-3) of the Zbrush sculpt and start placing the blocks into the desired pattern.
A neat trick is to use clusters that will allow you to move each blocks individually without having to separate the blocks, which would result in Zbrush losing the subdivision of your sculpts. This way you can go back and forth between Maya and Zbrush, and fix your sculpt easily.
Once I’m happy with the placement, I export the blocks back into Zbrush and raise the subdivision level back to maximum, then export the high definition mesh as an “obj” and bake it onto a plane with Substance Designer’s Baker.
Creating a mask to disociate the different types of objects is a good way to go to make the coloring process even faster, you can do this easily into zbrush and export it out with Zapplink.
Once all the maps are properly baked, I start the coloring process.
The work in Substance designer consists of using built in masks to extract interesting features for each component of the material, like cavity, slope, dirt deposit for the rocks, color variation (which can be baked into the ID map) and so on in tandem with a nice gradient, these maps can give you good results very quickly. I also don’t hesitate making use of photo based textures as I will not be publishing the substance into a .SBSAR.
Here is the final result after a few hours of tweaking:
After I’m done working with the texture, I export the maps to unity and Julien takes care of implementing it in game.
In the game, we currently have two types of vegetation:
The small one, that will only be shown on a plane, these will be made from photo source, or modeled inside of Maya, baked onto a plane, and taken into Photoshop to fake some lighting.
The second type of vegetation is made with SpeedTree for Unity, which allows me to make trees really quickly, most of the creation process will be done in the software, and hopefully juggling between three or four software is only occasional.
I start with designing a simple leaf (or pine needle in this instance) in Maya, create the different sets of textures, mesh variants, and export it all to speedtree.
The bark/branch material itself is downloaded from a texture bank to save some time, I generate the Normal/Specular with bitmap2material.
From there, I make one branch in speedtree, where I will grow my needles on, I change the viewport window to an orthographic view and export the material. One very nice feature of speedtree is it’s randomize tool, thanks to it, you can export as many variants of branch as you need to in a blink of an eye.
Once the branch material is created, I create a simple branch cart in Maya, layout the texture on it, and export it back into SpeedTree to finally create the Tree.
After a couple of iterations and a few tweaks, the tree is complete and ready to be exported into Unity.
Julien Galibert: Unity 5 is fairly straight forward for an artist, and managing a project on it is really agreeable. Unity has improved over the years and has added regular features that allowed us to make the project more and more ambitious.
I mainly use unity to integrate, set up assets and also do some set dressing. The main constraint, inherent to all engines is the perpetual worry of being optimized enough.
Nothing has to be left to chance, everything has to be set up and checked: From texture resolution, LODs, managing culling distance, being careful about the number of materials per object to avoid too many drawcalls, to the number of Game Objects in the scene.
For instance we recently had to change the grass system because of too much overdraw, which resulted in a drop of performances.
Sometimes optimization should be kept in mind prior to an assets creation. As is the case for Herelsor’s fortified wall which required which required me to keep optimization in mind throughout the conception process.
Also, the creation/integration workflow in unity is fairly heavy, even more for a small team like ours where one individual has to do pretty much everything. It is a daily challenge to find shortcuts to make assets faster without losing quality.
The best unity feature is the PBR workflow which allows you to get the exact same render throughout the creation pipeline, from Substance Painter to Unity, the asset looks consistent, and it is a real treat for those of you who have worked with the old shading model.
Other features of Unity 5 are a real treat, such as the terrain system which is pretty powerful now it has integrated SpeedTree, as well as the plugin system which allows us a good compatibility with Allegorithmic’s substances, TrueSky or Popcorn FX.
Creating the Lighting
Jeremy took care of the lighting of the scene, the setup is as follows:
- A first directional light takes care of the main lighting of the scene, generate specularity and shadows
- A second directional light has the purpose of filling the areas too dark
- An ambient color gives the general mood of the scene and is adjusted depending on the areas of the environment the player visits.
The main idea behind this lighting setup was to provide an adjustable day and night cycle supported with a procedurally generated sky with a minimum of light sources to avoid using too much performances. TrueSky is the middleware Jeremy been using to achieve a realistic sky render.
Dealing with Animation
Animation can be tricky when making an environment. Movement always draw the attention and you have to be careful not to attract the view on a boring area of the screen.
When taking stills or panoramas of your environment, always be mindful of your composition, try to respect the rule of thirds, remember to put areas of rest for the eyes and try to guide the eye to meaningful details with guiding lines and contrasts.
When playing the game, try to predict where the camera will be located while the player is moving, and try to arrange nice compositions to make your environments more compelling and memorable.