Update #41: D&D: Dwarves and Doors
We are another month into preproduction and have been making awesome progress on all fronts. This update covers dwarves and doors, two of the many accomplishments in the month of January, and gets into the finer details of development on Project Eternity.
The Creation of the Dwarf
One of the goals in preproduction was to figure out how we could make character modeling pipeline be as efficient as possible. The problem is fairly complex: All of the six playable races, human, elf, dwarf, aumaua, orlan, and the god-like can wear armor, boots, gloves, helmets (...well, some have trouble wearing helmets, but we will talk about that some other day...) and have other options that the player can customize like facial hair, hair style and skin color. We also have tons of armor variations and types of armor, like plate, brigandine, leather, and mail. (Josh loves his armor). Ideally, our artist would only need to model one armor piece - let's say plate body armor - and have it fit all six of our playable races even if the races are all of different proportions and body structure. At the end of the day the same model for plate armor could fit a slender four-foot-tall orlan and a burly seven-foot-tall aumaua. The goal for January was to build a system to allow us to do this very thing.
During January, we've developed a new system to allow our human bipedal
skeleton to be shaped and morphed into the other playable races and have
armor be shaped and morphed along with the skeleton. The character
modelers have fine control over the proportions of the races, and only
need to model armor pieces once and not six times over. In preproduction
we look at developing systems like this. It may cost us time up front,
but will save us hundreds of hours down the road in production. The
dwarf ended up being our first test case, and now we have dwarves as
playable races working in game.
Pictured at the front of this update is a high-poly dwarf head that Dimitri Berman (lead character artist) modeled in ZBrush. The high-poly head is used for making normal maps which aid in lighting the character models. A simplified mesh is created from the high-poly head is used in game.
Open, Close, Lock
On the other end of the pre-production spectrum, the programming team
has been writing the building blocks for the area design toolbox. One of
the essential things that all areas need are doors. From past
experience we know that doors always present difficult problems with
pathfinding and are a big pain in the arse. Getting a potentially risky,
yet required, feature out of the way now seemed like a pragmatic goal,
so Steve Weatherly (game programmer) and Sean Dunny (environment artist)
set off on a quest to get doors working in the game.
We first tackled this problem creating a list of all the features that doors need to have. It's easy with doors since we all know how doors work: Doors have a few states, like open and close. Doors can be locked, and be unlocked with a key (or skill). Doors can be used, meaning the player can click on a door and the selected character will be commanded to go and "use" the door. Doors can animate to match the open/close state. Doors block character pathing when closed, and don't block pathing when opened.
We even listed out minor details such as doors can change the mouse cursor to a different state when hovered over, and doors should always open away from the character using the door.
Tasks were made from this list, and the work began. Steve was able to get a working prototype of a door ready to test quickly. At this stage we could see how the door looked and felt in game, and if there are any unexpected problems that came out of the prototype.
One issue that came up was door placement. We found that it was not
easy to place a door in the exact space to fit a dungeon doorframe.
Steve and Michael Edwards (senior technology programmer) coded a system
for doorframe "snap points" that makes the door pop to the exact place
that we want it to go. Designers can now place doors efficiently.
We love being able to share our progress with you all, and we hope you enjoy reading these production updates. If you have any questions about development, please post them in our Project Eternity forum.