New Builds For September 2018
First builds of the month are now ready on Live Builds page. There are some great new features this time around, so let’s take our time unpacking them.
SDF Font Rendering
One common feature request is to improve quality of fonts in the game. This isn’t a trivial problem to solve as Daggerfall’s text formatting is hard-coded in books, quests, popups, etc. to line-wrap at certain points. There’s a very tight relationship between Daggerfall’s regular pixel font widths and how many characters appear per row. For any font upgrade to fit seamlessly within classic user interface, it must take this into account.
My solution was to completely overhaul the way UI renders text and support Signed Distance Field (SDF) fonts in addition to classic pixel fonts. This works by first performing a virtual layout for text elements then rendering either a standard pixel-font character or SDF-font character into the layout using a fast GPU shader. The end result is smooth high-resolution fonts at any resolution that follow the same layout rules.
You can toggle SDF font rendering in the startup UI or at any time in game with shortcut Shift+F11. SDF fonts are modable by dropping replacements into the StreamingAssets/Fonts folder. I will post an article dedicated to creating an SDF font atlas suitable for Daggerfall Unity soon. SDF fonts will be visible wherever text appears in the game – with the exception of text that’s “baked in” to UI elements. This needs to be modded out a different way and is unrelated to text rendering.
Below are some examples of book text at 4k resolution (click for full size).
New Spell Effects
Some powerful new spells are available in these builds that can make a real difference to character survival.
Water Walking & Water Breathing
In classic Daggerfall, water walking is more like a swim speed effect. I’ve tweaked this so you actually run over the surface of exterior water while keeping the usefulness of swim speed in dungeons. I’m likely to add the ability to stand on surface of dungeon water volume sometime in future. Water breathing will suspend your need to take breath while swimming underwater.
Fragile mages and nightblades rejoice, for now you can slip unseen past dangerous foes. The effects Chameleon Normal/True, Shadow Normal/True, and Invisibility Normal/True are now available. Credit goes to Allofich for implementing the back-end of these effects and AI behaviour of mobile enemies.
In case you’re not sure of difference between Normal/True for these effects, a normal strength effect will break when you attack something, and true strength effect will not. In the first of following two videos, I torment the city watch by going invisible (true) and using fireballs to distract them. They can see where the fireball originated from and will run to that spot. In the second video, I use an AOE effect to turn city watch invisible (normal) so they reappear as soon as they strike me. I don’t last very long against invisible knights!
Regardless of your concealment type, if enemies get close enough to you, they will be able to sense your presence and take a swing. It still pays to be a little careful.
The climbing effect increases both your skill at climbing and the speed at which you climb. For characters that spend more time studying than working on their core strength, this could save them after falling into a body of water needing climbing to escape. In the video below, I climb normally then again while enhanced by the climbing effect.
There’s nothing more satisfying than leaping from rooftop to rooftop. With the jumping effect, you can propel yourself to heights out of reach even for skilled acrobats.
Now that you can find magic items in treasure and on slain foes, you need a way of identifying those items in the field. Thanks to Hazelnut, you’ve long been able to identify magic items in Mages Guilds. The identify effect allows you to identify items from anywhere. This effect just opens a free identify interface as if player is inside a Mages Guild, which is only partially how this effect should work. I will return to this later and refine it to work more like classic.
Initial Magic Item Support
Magic items make their debut in this build with support for “on equip”, “on use”, and “on strike” spells. Only effects that have been implemented will function on magic items, but that’s almost at the 70% point now so most magic items should work. And thanks to Allofich, you’ll find magic items in loot piles and on the corpses of slain monsters. These magic items have random effects assigned using same process as Daggerfall itself.
Magic items are far from complete, however. We still need to support special powers that work like advantages/disadvantages, and link all this up to the magic item crafting station in Mages Guilds. But just having a good chunk of magic item support available opens up a lot of new gameplay.
Here are a few videos of magic items in action. First I try out a pair of “on equip” pants of water walking. Then I heal and cast a fireball with “on use” toga and armbands. Finally, I paralyze the city watch with a Dwarven dagger of cursing.
A small but important addition is you can now purchase standard spells available in Mages Guilds across the Illiac Bay. Only spells that have been implemented are available for sale, but this sits at around 70% now. With all the upgrades in these builds, the magic system is finally starting to become fun and useful.
What Else Is New
Many other refinements and new features have gone into these builds that aren’t so easy to screenshot. It’s also important to credit those who have added work.
- Enemy AI improvements (Allofich)
- Recreate classic random enemy selection in dungeons (Allofich)
- Implement classic melee timer and reflexes (Allofich)
- Magic items with random spell effects now available in loot drops (Allofich)
- Magic items imported correctly from classic saves (Allofich)
- Climbing fixes and improvements (MeteoricDragon)
- Underwater fog in dungeons (MeteoricDragon)
- Swimming improvements and fixes (MeteoricDragon)
- Gold in wagons can be deposited directly into banks (Hazelnut)
- Improvements to mod system (TheLacus)
- New console command “add magic [n]” where [n] is number of random magic items to add
- UI fixes for for custom class creator (Numidium)
- Save Explorer tool window fixes (Allofich)
- Fixed out of bounds error in older saves (Allofich)
- Fix for weapon hand when loading saves (Allofich)
- Fixed several portraits showing “oops tell Mark now” (Nystul)
- Fixed “unknown-guild” text in Talk window (Nystul)
- Fixes to message block handling in quest parser
- Potential fix for Mac crash on start due to shader compile errors (note: may break compatibility with some mods on Mac)
Please don’t forget the game is still in pre-alpha. Here are some known limitations of new features in this round of builds.
- Spell icons for equipped items expire, even though effect is permanent while item remains equipped
- Magic Item and Potion crafting UIs still under development.
- Not all effects implemented. See Effect System Status roadmap for more. Any magic items requiring non-implemented effects will not function.
- Only first “on use” spell on magic item will be cast on use.
- SDF font not supported in exterior automap name plates, or wherever text is “baked in” to UIs.
- Identify effect does not work exactly like classic.
Thank you for taking the time to read this post and follow the progress of Daggerfall Unity. I’m incredibly grateful to have so many awesome devs attach themselves to this project and help make it into a reality. For a big game remake that began as a single person’s hobby, it certainly has taken on a life of its own!
With the great people involved and the progress already made, I can’t see any technical roadblocks between now and reaching parity with classic Daggerfall sometime in the next several months. All of the really challenging problems are solved and the bulk of features are now in reasonable working order. From here it’s just an incremental run to the end as all the missing pieces come together.
For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.