Welcome back to another devlog! This week was a relatively quiet one for our game development team, except for the Character Artist who spent much of their time trying to figure out the best way to create our Forest Druid’s leafy hair. The result looks great and we can’t wait to show you it, along with a couple of new animations for one of Erendorn’s fearsome enemies.

3D Character Modelling

With the majority of the Forest Druid character already modelled, this week was dedicated to creating the leaves that make up her hair. In a previous devlog, we mentioned how the original method used to do this was extremely inefficient. The leaves were originally made by using planes that were mapped with leaf textures. These were then placed manually onto the head base. Not only was it very time consuming, it also risked causing performance issues in the engine as it would need to render lots of transparencies on top of one another. As well as that, using this method to populate the head with leaves was not giving us the aesthetic we were hoping for.

In order to find a way around this issue, it was important for our artist to find a fast, automated process that would also give the best final result. Using a method that is used to create trees and bushes, our artist arranged three leaf planes in the formation you see in the image below. Leaf planes have texture maps applied to them, mainly in the form of colour and transparency information.

Screenshot of 3ds Max scene showing a leaf plane, a head base and leafy hair piece
To create the Forest Druid’s hair, we positioned three leaf planes into the formation above before using the scatter tool in 3ds Max to populate the head base with them. This made the process much faster and gave our artist more control over the style of the leaves.

When arranged in this way, this group of planes allows a leaf to be seen from most angles. The scatter tool in 3ds Max was then used because it is not only a quick way to populate the head base with leaves, it also places the leaves perpendicular to the surface. A few parameters were then adjusted to edit the amount of and positions of leaf planes on the head base.

The reason this method was effective is because:

  • It avoided too many transparent planes being rendered on top of one another, meaning that it isn’t at risk of slowing down the game engine
  • The leaf planes being perpendicular to the head base gave the hair a more realistic nod towards trees and nature
  • The formation of the leaf planes meant that they could be added to the head base in a fast, automated workflow

After positioning the leaves, our artist began modifying the vertex normals on the leaf planes. These are invisible lines that run off each vertex of a 3D model. Normals are associated with light direction: a normal that faces a light source will result in that surface of the leaf appearing bright and well-lit; a normal that faces away from a light source will be dark or shaded to some degree. Therefore, in this particular example, vertex normals fake the appearance of the fine details that appear on the leaves by utilising light and shadow.

Using this method, our artist was able to:

  • Create leaves that had a soft shadow gradient
  • Prevent any harsh bright or dark faces appearing on the leaves, which would have made the model’s features appear very muted

Once all of this was done, our artist could then manipulate the head base’s shape in order to change the results until he found something that closely resembled the original concept sketch. However, there was an issue with doing this.

With the size of the leaves being fairly consistent when populated along the mesh, the top of the head often ended up looking, in the words of our team, a little “poofy.” A quick fix for this was to generate the leaves for the top of the head separately from the leaves used for the rest of the head. This gave our artist more control over the sizes of the leaves so that the design could be easily manipulated.

There were a few more details of the Forest Druid that were finalised in this week’s devlog:

  • The leaves that grow from the cloak were created and placed using the same method as before
  • The vines that wrap around the model’s arms also had leaves growing from the wrists. The vines were made from a strip of planes generated from a helix spline while the leaves were placed manually

Finally, after the long and arduous journey of creating the hair, our Character Artist can finally move onto the texturing phase. This is where all the magic happens so make sure you come back to next week’s devlog to take a look at how it turns out!

Animation

After creating an idle animation and idle variation for the Skeleton enemy, which you can see in last week’s devlog, our Animator could begin making several more animations for the Skeleton. This week, she created 4 new animations, including:

  • Walk cycle
  • Stun reaction
  • Updated hit reaction
  • Death animation

Our Animator also created a basic rig for a bow and arrow which was then added to the Skeleton idle. As we focus on animating more of Erendorn’s enemies, the King Cobra was the next character to receive some new animations. An idle animation and idle variation were created this week for the King Cobra, and the way it attacks is currently being worked on.

Server

It was a quiet week in the server for our programmer and game developer. The only fix that had to be made was to the AI Intentions, a system that was created to make the enemies use their abilities correctly. This system had a bug that meant the intentions weren’t being used every turn. This meant that enemies would only try to use their abilities every other turn instead of each turn, which they should now do following the fix that was made.

Only one ability change was made this week: the cooldown of Heal Wounds was reduced from 6 to 5. There was also quite a lot of work carried out for the item generator this week:

  • Data structures for the item generator were made
  • Rule sets for the item generator were made
  • The interface for the item generator is now nearly complete
  • The API endpoint, for getting item slots from the database, was made

The item generator is a development tool we are making that allows us to add ‘power’ to base items. Stats in the server are assigned power values which the generator then uses when adding stats to items. This is then used to determine the power level as well as limit what stats can go on each item. The item generator can generate every combination of all the stats, potentially giving us millions of items. Two base items were able to be made this week: Item Slots and Item Type.

This clip shows all the animations created for the Skeleton enemy this week, including a walk cycle, stun reaction, hit reaction and death animation.

Next week is the last week of February so as well as posting our usual weekly devlog, we will also be summarising the month over on our company website – so if you’ve missed anything or are feeling a little out of the loop, that’s the post for you!