Charlotte Delannoy talked about her experience at an AAA company, texture & material workflows, optimization, and some tips for those who want to join her.
Hello everyone. I’m a 30 years old French girl and I’ve lived in Montreal for almost 4 years. Already in my childhood, I developed a real passion for video games (thanks to my parents) and, as far as I can remember, I’ve always wanted to work in this industry.
Before being hired by Eidos Montréal, I studied in 2 different schools and in between them worked in a couple of Indie studios in Paris. At my second school (Le Campus ADN, in Montreal) I acquired enough knowledge to be ready to work as a level artist in an AAA company.
In a few months, it will be my 3rd work anniversary at this company. It became a family to me and I’m happy to work with talented and passionate people. I first started as a 3D modeling / texturing artist and then, after a year, I moved to level art. At the end of Shadow of the Tomb Raider, I switched on to another project and a new position. I’m now an Interactive Object Artist which means I’m a 3D artist who creates nodal scripted logic for game design ingredients. I prototype and polish objects that players will interact with. It’s a multi-faceted job requiring communication and synchronization with several departments. It is fun and challenging. I’m thankful to Eidos-Montréal for giving me a chance to learn something new.
Since I was a newcomer in the company and a neophyte in the engine, my manager gave me some simple meshes to begin with: desks, ceilings modules or books. Via these, I learned the mesh and material creation pipeline and engine integration. My colleagues and other artists were all very helpful, patient and kind. Their positive attitude served as a starting point for building trust in our relationship. With their support, I was at ease to ask (a lot of) questions which helped me to solve many issues. At that point, the best way to avoid mistakes for me was to work on map optimization and that’s what I did. If you are curious enough, you will quickly learn why things have to be done in a certain way and consequently, you will be able to anticipate how you’re going to create your next materials, textures, modules or unique assets and do it more efficiently.
After a few months, I had the opportunity to work on hero props or big assets like the spider, bird statue, Ader Avion 3 and some others using Maya, ZBrush, and Substance Painter.
Our manager was a great leader. He trusted his team and gave us enough challenging tasks to keep us stimulated. For this project, he gave me some Substance Designer tasks to work on. I went on creating some fabrics that were used in gameplay as a visual language. For example, the colors and the patterns of the clothes defined several areas in Paititi (the main hub in Shadow of the Tomb Raider).
During the final year working on Shadow of the Tomb Raider, my manager let me work on maps as a level artist. I had to learn to work with the level designers and different metrics, streaming, navigation constraints and so on. I sometimes had to start maps from scratch and other times, I collaborated on the ones that were already started. In some of them, I only polished various elements such as meshes materials, framerate, composition. It was a team effort, as everyone was giving feedback, improving, collaborating with each other to deliver high-quality maps
That was a really intense time during which I learned a lot and as a French immigrant, I really found a second family in the Shadow of the Tomb Raider’s team. I can’t stress this enough – thank you, beautiful people!
The way you are going to work with textures always depends on what kind of game you’re working on, your shaders, your resources, and your tools. Is it a big mesh? Can you use vertex paint and blend tileable textures on it? Is it a module or a unique asset? Is it a hard-surface or an organic geometry? What are the project limitations? How far are the meshes from the camera? What kind of map are you working on (corridor, exterior, cave, city, etc.)? What is the texel ratio?
First, for textures, I define if the asset is modular or unique. Is it small enough to fit in a unique UV set and reach the necessary texel density? If it’s a module or a big unique mesh, I’m going to use tileable textures, maybe a unique normal map and a mask created in Substance Painter (or vertex paint) to reveal layered materials. If you want to save texture memory you can use vertex paint and a big poly density instead of using a normal map and masks. If the asset is small, I try to block the model with a quick UV pass (to define the size of the textures).
Then I can go crazy with Maya and/or ZBrush. I often create color masks on high-resolution meshes to easily select the different materials in Substance Painter. I do a quick retopology or decimation in ZBrush, then I project my blocking UVs and clean them. I always try to use the maximum of my texture area and if my mesh is baked, I’m not worried about stretching UVs. With a powerful tool like Substance Painter, you can overcome the stretch issues. After a quick UV pass, I go into Substance Painter to set up my baking properties, then make the first try with a low resolution. If it works, I bake once again with high-resolution settings. Finally, it’s time to create materials: I always try to create one folder of each kind of materials to keep everything clean and easy to use for myself and others. I enhance my UVs if needed and rebake them as many times as necessary.
Sometimes, I create some small tools in Substance Designer to facilitate the process. For example, during Substance Game Jam in Montreal, I created Splatter that worked with the position and the normal maps. I could choose any pattern and splatter it in 3 directions, choose a range where the mask will be smaller, and so on.
However, I mainly use Substance tools as they are a better fit for what I want to achieve.
The challenges I’m facing (for now) always revolve around the same issues: How to create things? How to be more efficient at each iteration? How to make more stunning assets and optimize them? The real challenge starts when you move onto a new project, sometimes with a new engine, and have to adapt your way of doing things and find turnarounds to improve your work. When I started in AAA, I was really afraid of new challenges. But the more experience I get, the more exciting and less scary these new challenges are to me.
The Pattern Substance appeared when I was asked to create something that would help to identify the different areas of Paititi. I had to find the balance between our artistic direction and the gameplay needs. I decided to create two generators for it: one for the patterns and the other one for the columns.
With the Column Generator, I was able to split the canvas into columns with 4 different sizes. By defining the column width, the generator produced a color mask with 4 different main colors (one for each width) but slightly different to determine a different ID for each column. Furthermore, the generator also created a different kind of gradients for each column. With this technique, I was able to quickly generate masks and work in an iterative way by picking individual colors or a color range.
The Pattern Generator was a tricky one. I wanted to get some basic shapes with color masks inside them. I used a unique Polygon Node and exposed the Sides parameter so that all my shapes were derivatives of this node. I exposed some other parameters like Rotation or Size, then used a Tile Generator Node for the “color” version and another one for the “black and white” version. I also exposed some of the Generator parameters to control the number of Rotations to allow more flexibility.
I combined these two generators (usually, I used one Column Generator and as many Pattern Generators as necessary) in a big graph where the Heightmap was created. Finally, only one roughness and one normal map for all the albedo maps were used.
With this, I was able to deliver high-quality results really quickly and find a good balance between the gameplay and artistic direction needs.
It’s difficult to think about optimization without any context. What camera and characters do you have? What kind of game are you making? Is it an open world, an MMO, a linear story-based game? What are your tools? Do you work with programmers/tech artists? I can’t pretend to know every solution and that’s part of the fun. I think that artists who work in video games need to constantly evolve both artistically and technically. Once you overcome your fear of the unknown and your insecurities, it’s a really fun part of the job, if not the funniest one. I think the better way to avoid heavy cleaning and optimization time is to keep your stock clean (have a good nomenclature, clean your ZBrush, Maya and Substance Painter or other software programs). The content created during the research stage may not reach the final version of the game because everything is constantly evolving, so it’s better to get prepared for that. Also, you never know who is going to work on your stuff after you because often, you do not own it solely. So, you must respect the people you’re working with by keeping your files as clean as possible.
One of the problems is that I constantly think about the best way to make an item. I often approach it from a technical point of view and sometimes forget about the art a bit. But remember that in the end, you want a beautiful asset and trying to reach that goal is the first step to make.
For the maps, optimization can be a little bit more complex. We always want to make something unique and unforgettable and to do so, we must iterate a lot. You need tools to know how many meshes and textures are used in the map. If a mesh is used only once is it possible to delete it? Is there a way to slightly change your layout to improve streaming performance without breaking the experience? If your mesh has a high density can you reduce the polycount? If there are too many textures can you reduce this number (by deleting or merging them) or the size? Can you use some LODs but not too much? Everything depends on the context. Sometimes you have to duplicate props, delete some LODs, create a lighter material, and so on. And we are only talking about art. In the end, you have to work with everybody in the team to get the optimum framerate.
Since this year, I’ve started giving Substance Designer and Shader classes, and I usually give the following pieces of advice to my students:
That’s all. I would love to thank 80.lv for giving me a chance to talk about my experience and all the people at Eidos. Thank you, people!