Thanks so much for having me.
Tell Japan more about having less crunches.
Voluntary crunch is utter bullshit. Those that elect not to work the extra hours are passed over for promotions and bonuses. It has been a veiled threat that those who dont crunch on a regular basis are first to go when layoffs happen after shipment.
The team of studio eXiin shared the story behind their beautiful game in development Ary and the Secret of Seasons and some parts of their workflow.
eXiin is a small indie game company based in Brussels. Officially open since March 2015, it all began with two people. After two mobile games release, Seb decided to come back to his first main interest: making an adventure game for PC and Consoles.
Since June 2016, eXiin is developing a new IP called Ary and the Secret of Seasons.
In 2018 we teamed up with Fishing Cactus to assist the process with the experience and stability of a more established studio.
The core team at eXiin is composed of 6 people:
- Sebastien (CEO, lead level designer, programmer)
- Wolf (Gameplay and AI programmer)
- Kwambo (Lead character artist)
- Bruno (Rigger and animator)
- Camille (Concept artist and animator)
- Simon ( Environment artist, Houdini artist)
Ary and the Secret of Seasons: How Did It Start
I had the idea of season changes in my mind for a while. In 1997, as a kid, I had made a small game prototype using RPG maker in the corner of my room, it was crappy as hell but the base was set.
That idea remained in the back of my mind but I didn’t know how to bring it to the next level.
In June 2016, in the train to Unite Europe with a few friends, I pitched the idea of season bubbles. I had no idea how to make it and our conversation concluded in “we dare you to do it!”.
I took it to heart and dug around Unite to find all the resources and knowledge to concretize my long time project. Luckily it has proven to be quite easy as the panel of experts was quite big there at the time.
Back from that event, I’ve spent a few days on making my concept work. And that’s how it all began.
Houdini is one of our main programs here.
We have a variety of ways of using Houdini, like modeling, rigging, animations, destruction, procedural tools, Houdini terrain and many more features we haven’t explored yet.
High poly models of characters and organic models are made in ZBrush. All other models (Hard surface low and high) are made in Houdini. Most models we make in Houdini are not fully procedural because they don’t need to be, but there are some exceptions where we put in some more time to make procedural models, like a gear.
The boolean of Houdini is really awesome. It is quick and clean and if the results are not that clean we can procedurally clean it up. For blocking out models this is really great.
Our workflow can be divided into 2 groups:
- High poly from ZBrush
The High poly is done in ZBrush and then we use Houdini for retopo of the High poly. Once the retopo is done we can unwrap the resulting low-poly in Houdini. For the baking and texturing we use Substance Painter.
- No high poly from ZBrush
Without a high poly from ZBrush, we often start by making the low poly in Houdini then unwrap the model. To get the high poly, we use some features from Houdini such as “PolyBevel”, it can set a value so only the necessary edges are chamfered.
The second way of getting round edges is by using the round edge shader of Houdini. This gives us a normal map of the low poly in just a few minutes. Using the round edge shader, the maps are baked in Houdini and texturing is then done with Substance Painter.
Round edge shader result:
Building the World
For building levels, we, of course, start with blocking out the level. After that, it gets several iterations on it. For filling them we have a few procedural tools to fill levels faster. Note that these are small tools and we don’t have the time for making large procedural tools and maintaining them.
Example of tools:
- Puzzle tool (Not made in Houdini)
- Bridge tool
- Chain tool
- Tile generator ( very similar to this)
- Rock generator (high and low model from Houdini and procedural texture from Substance)
The non-destructive aspect of Houdini changed our workflow quite drastically. Very commonly, the level designers start using the temporary assets already textured and while working on the level, everything gets updated and more refined.
Before then, we used to wait for the assets to be finished and then started to integrate it, now we can work in parallel, it’s pretty intuitive and efficient.
For the world map, we are still in a block out stage. We are planning to use the Houdini terrain tools for making a detailed version of our map.
All the VFX in the game right now are not in the final stage. Some VFX are just in front of the camera like snow, so if Ary walks in another season we can change the particle in front of the camera.
We also often use the tools of Houdini for the VFX like destruction. The destruction simulations are procedural and by changing the model input of the simulation, we can quickly have different models that are being destroyed.
Changing Seasons Technique
Big parts of changing the seasons are shaders, and for that, we have a custom shader.
To be honest, for me it’s a bit of a black box, it was already done when I joined.
But it’s very easy for the artists to make the levels, as we have 4 buttons in Unity, one per season, and we can change the main season at will.
As you can imagine, we can’t really disclose the techniques used in our core gameplay, especially in the middle of the production.
What I can say is that it’s not a single trick, it’s a compilation of lots of different features, from shaders to specific 3D assets. All the aspects of the game are influenced, we even send the seasons’ info to the animator, so animations can change accordingly.
In the end, the trick is to use millions of techniques and make it look like it’s just one simple trick!
For texturing, we use Substance Painter for unique textures and Designer for tiling textures. Houdini here has less influence unless we used the round edge shader, then Houdini bakes all the maps.
In Substance Painter, we start with custom material and smart materials. A procedural way is used here. By using the baked textures we quickly have a base to work on. For example, using the cavity to get the lighter edges and roughness variation in the edge. After a base is made we add some manual touches.
The look of our game is a bit like the classic stylized PBR, Overwatch is definitely an inspiration for us.
Further, we have post-processing in Unity and that makes the models feel more unique and everything fits better in the game.
Usually, U anticipate the animations that will be performed by the character as I rig it. In this way, I know what I have to implement on the rig to help the animation along and know which animation I will not be able to create.
My workflow is the following: first, I make a basic animation with only the Key Poses and its timing. After that, I commit it to the team and see if the animation is approved. If it is, I polish the animation. Otherwise, I tweak it until the approval of the team.
When animating the characters and enemies, I take care of the gameplay. For example, the attack of the enemy takes more time to ”launch” because otherwise, it will be too hard to predict it. But for Ary, the attack launches way faster and has no latency on it. It depends on the gameplay of the character/enemy.
For the lighting of our game, we use dynamic lights and the reason for this is because baked light has GI information which contains a color. For example, if we bake an area with grass there will be green values in the lighting data, but if we change season to winter, the grass will be gone and the green light will bleed on the snow… That’s not very clean, let me put it that way.
What also makes a big difference is the custom shader we have and how light reacts with it. This result in a unique look and not in a default Unity look.
Also, post-processing plays a part here where we can increase the brightness of the colors and make everything fitting better together. The post-processing used here is the standard one of Unity.
Our biggest challenge was financing our project in Belgium. It’s awfully complicated; for a while, one would be paying more taxes than you have incomes. And in the end, you just have to wait until it passes. After about almost 2 years we have found a publisher who is helping us a lot not only with financing but also keeping track of the project.